什么是Socket?
  qyA0uFVezRgJ 2023年11月02日 146 0

网络应用程序员最熟悉的就是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不会马上删除,而是等过一段时间再删除。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

qyA0uFVezRgJ