首页 > 其他分享 >什么是Socket?

什么是Socket?

时间:2022-11-24 15:01:09浏览次数:53  
标签:Socket 创建 什么 来学 应用程序 描述符 TCP

网络应用程序员最熟悉的就是Socket,现在抛开计算机网络理论,从应用层的角度来理解到底什么是Socket。

  • 1)Socket 是什么;

数据包经由应用程序产生,进入到协议栈中进行各种报文头的包装,然后操作系统调用网卡驱动程序指挥硬件,把数据发送到对端主机。

一个Socket就是五元组:

1)协议;

2)本地地址;

3)外部地址;

4)状态;

5)PID。

什么是Socket?_应用程序

  • 2)Socket 是如何创建的;

Socket 是和应用程序一起创建的。

应用程序中有一个 socket 组件,在应用程序启动时,会调用 socket 申请创建Socket,协议栈会根据应用程序的申请创建Socket:首先分配一个Socket所需的内存空间,这一步相当于是为控制信息准备一个容器,但只有容器并没有实际作用,所以你还需要向容器中放入控制信息;如果你不申请创建Socket所需要的内存空间,你创建的控制信息也没有地方存放,所以分配内存空间,放入控制信息缺一不可。至此Socket的创建就已经完成了。

Socket创建完成后,会返回一个Socket描述符给应用程序,这个描述符相当于是区分不同Socket的号码牌。根据这个描述符,应用程序在委托协议栈收发数据时就需要提供这个描述符。

  • 3)Socket 是如何连接的;


什么是Socket?_数据_02

 上图引用自《跟着动画来学TCP三次握手和四次挥手》

  • 4)Socket 是如何收发数据的;


什么是Socket?_描述符_03

上图引用自《跟着动画来学TCP三次握手和四次挥手》

  • 5)Socket 是如何断开连接的;

当通信双方不再需要收发数据时,需要断开连接。不同的应用程序断开连接的时机不同。

什么是Socket?_数据_04

上图引用自《跟着动画来学TCP三次握手和四次挥手》

  • 6)Socket 套接字的删除等。

上述通信过程完成后,用来通信的Socket就不再会使用了,此时我们就可以删除这个Socket了。这时候Socket不会马上删除,而是等过一段时间再删除。

标签:Socket,创建,什么,来学,应用程序,描述符,TCP
From: https://blog.51cto.com/u_15880272/5884005

相关文章

  • 【C/S通信交互之Socket篇】Cocos2dx(Client)使用BSD Socket与Mina(Server)手机网游通
    本站文章均为​​ 李华明Himi ​​​原创,转载务必在明显处注明:​​​​​其实对于此篇算是对于这段时间网络研究的一个总结。对于手游网络通信的交互,一般情况下,Socket长......
  • 什么是垃圾回收机制 什么叫内存泄漏
    垃圾回收机制垃圾回收机制是js内置的一种管理机制它会自动进行内存的分配和回收内存核心就是判断内存是否不再被使用 如果是就视为垃圾就进行内存释放进行垃圾回收......
  • 为什么要使用IP代理服务器?代理服务器的基本功能有哪些?
    每一个网站背后都有一个固定的Ip地址,这个地址可以显示网站的身份地址,提高网站的安全系数。那么为什么要使用ip代理服务器?的基本功能有哪些?Maxproxy小编简单的告诉大家! ......
  • 什么是作用域 什么是作用域链
    作用域作用域简单来说就是变量能够访问的范围,离开了这个范围就不能被访问,作用域分为全局作用域 局部作用域和块级作用域全局作用与域:是指在script标签内在此声明的......
  • 工业交换机那么贵,为什么那么多人都在用?
    工业交换机具有电信级性能特征,可耐受严苛的工作环境。产品系列丰富,端口配置灵活,可满足各种工业领域的使用需求。假如工业交换机跟普通商用交换机的功能一样,但是普通交换机价......
  • Spring @CrossOrigin注解原理是什么
    问题起源在Postman调用接口中,忘记设置Origin,发现@CrossOrigin未生效(响应头没有cors的)在filter中设置了Access-Control-Allow-Origin发现@CrossOrigin未生效(响应头没有co......
  • 为什么要设置需求优先级?如何设置?
    本文将围绕以下问题展开:1、什么是需求优先级排序,目的是什么?2、优先级排序的8大依据;3、需求优先级排序面临的挑战;4、一些优秀的需求优先级排序工具。 一、什么是需求优......
  • python主要可以做什么
    python主要可以做Web和Internet开发、科学计算和统计、桌面界面开发、软件开发、后端开发等领域的工作。Python是一种解释型脚本语言。Python可以应用于众多领域,如:数据分......
  • day20221124今天学会了什么?
    day20221124周四学习方法:看文献学习,阅读。看视频学习,泡进代码。学呗,不会就问。手把手教。》工作技术最重要:今天计划做什么任务?今天学会了什么?做PPT》明天学会了什么......
  • WebSocket
    1、WebSocket基于TCP协议,支持二进制通信,双工通信。2、性能和并发能力更强。3、WebSocket独立于HTTP协议,不过我们一般仍然把WebSocket服务器端部署到Web服务器上,因为可以......