连接管理_rf6hhz1b05kh9tlv

最后修改于

建立三报文握手,释放四报文握手
TCP 连接三个阶段,连接建立,数据传送,连接释放

连接建立#

建立连接前服务端创建传输控制块 TCB,进入监听状态。

  • 客户端创建 TCB,发送 SYN 报文
    • SYN=1,sequence=x
  • 服务端同意建立连接,发送 SYN 报文
    • SYN=1,ACK=1,sequence=y,ack=x+1
  • 客户端返回 ACK 报文,可以携带数据
    • ACK=1,sequence=x+1,ack=y+1

SYN 报文不携带数据但消耗 1 个序号

连接释放#

释放时双方均处于 ESTABLISHED 状态。

  • 客户端发送连接释放报文
    • FIN=1,seq=u
  • 服务端立即发送确认
    • ACK=1,seq=v,ack=u+1
  • 此时 A,没有数据需要发送,TCP 半关闭
  • 服务端可以进行最后的数据传送
    • FIN=1,ACK=1,seq=w,ack=u+1
  • 客户端返回最后的释放报文
    • ACK=1,seq=u+1,ack=v+1
  • 此时客户端仍需等待 2MSL 才能进入 closed 状态。
    • 防止确认丢失服务端重传
    • 保证网络中的该连接的报文段消失