1.4 委托协议栈发送消息

1.4.1 数据收发操作概览

  1. 向操作系统内部的协议栈发出委托时,需要按照指定的顺序来调用Socket库中的程序组件。
  2. 步骤:
    a. 创建套接字(创建套接字阶段)
    b. 将管道连接到服务端的套接字上(连接阶段)
    c. 收发数据(通信阶段)
    d. 断开管道并删除套接字(断开阶段)

1.4.2 创建套接字阶段

  1. 创建套接字只需要调用Socket库中的socket程序组件就可以了。
  2. 套接字创建完成后,协议栈会返回一个描述符,应用程序将收到的描述符存放在内存中,描述符用来识别不同的套接字。

1.4.3 连接阶段:把管道接上去

  1. 应用程序通过调用Socket库中的名为connect的程序组件来完成连接操作。
  2. 调用connect需要的三个参数是描述符、服务器IP地址、服务器端口号。协议栈需要通过描述符判断使用哪个套接字进行连接,服务器端通过IP和端口号识别出进行连接的套接字。
  3. 连接成功后,协议栈会将对方的IP地址和端口号等信息保存在套接字中。

1.4.4 通信阶段:传递消息

  1. 发送通过调用Socket的write组件,读取调用Socket的read组件。
  2. 收发步骤:
    a. 应用程序首先要在内存中准备好要发送的数据。
    b. 调用write程序组件,要指定描述符和发送数据。
    c. 调用read读取数据,需要指定存放响应数据的内存地址,称为接收缓冲区。

1.4.5 断开阶段:收发数据结束

  1. 调用Socket的close组件断开连接,最终管道会被断开,套接字本身被删除。
  2. HTTP协议规定,服务器发送响应消息后应主动断开连接,断开操作传达到客户端后,客户端套接字也进入断开阶段。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容