乐趣区

关于后端:socket传输数据的流程

socket 传输数据的流程

服务器:

在客户端发动连贯申请之前,服务端必须初始化好。

  1. 初始化socket
  2. 执行 bind 函数,将服务与 IP 端口 绑定。
  3. 执行 listen,将原来的socket 转化为服务端的socket
  4. 服务器阻塞在 accept 上期待客户端申请的到来。

客户端:

此时服务端曾经准备就绪。

  1. 客户端初始化socket
  2. 执行 connect 向服务端的 IP 端口 发动连贯申请(三次握手)

一旦握手实现,客户端和服务端建设连贯,就能够进行数据传输。

一旦连贯建设,数据的传输就不再是单向的,而是双向的(即全双工)

敞开:

当客户端须要与服务端断开连接时,执行 close 函数,操作系统会向服务端发送一个 FIN 包;服务端收到执行后被动敞开,这时整个数据链路处于半敞开状态;尔后服务端也会执行 close 函数,整个数据链路才会真正的敞开。

半敞开状态下,发动 close 的一端在没有收到对端发来的 FIN 报文之前都认为连贯是失常的;全敞开状态,单方都感知到连贯曾经敞开。

退出移动版