接口自动化——TCP三次握手与四次挥手

一、TCP 报文头信息

  • 序号:占四个字节,表示发送的数据字节流
  • 确认号:占四个字节,发送方期待接受的下一个序列号,只有ACK=1时才生效
  • ACK:确认号的标志,ACK=1表示确认号有效,ACK=0表示报文不含确认号信息
  • SYN:连接请求序号标志,用于建立连接,SYN=1表示请求连接。
  • FIN:结束标志,用于释放链接,为1 表示关闭本方数据流

二、TCP 建立连接过程

image

  • 首先,客户端发送连接请求报文

  • 服务端接受连接后回复ACK报文,并为这次连接分配资源

  • 客户端接受到ACK报文后也向服务端发送ACK报文,并分配资源

  • 然后双方开始通信

三、TCP 断开连接过程

  • 假设客户端发起终端连接,也就是发送FIN报文
  • 服务端接收到FIN报文后,先发送一个ACK报文,这时客户端进入fin_wait状态,继续等待server的fin报文
  • 当服务端确定数据已发送完毕,则向客户端发FIN报文;
  • client端收到FIN报文后,发送ACK进入time_wait状态,如果服务端没有收到可以重新发送。客户端等2MSL后依然没有收到回复,则证明server端已正常关闭。
  • client关闭连接

四、总结

  • 三次握手
    • 首先 Client 端发送连接请求报文
    • Server 段接受连接后回复 ACK 报文,并为这次连接分配资源
    • Client 端接收到 ACK 报文后也向 Server 段发生 ACK 报文,并分配资源
  • 四次挥手
    • Client 端发起中断连接请求(发送 FIN 报文)
    • Server 端接到 FIN 报文后,先发送 ACK,Client 端进入 FIN_WAIT 状态,继续等待 Server 端的 FIN 报文。
    • 当 Server 端确定数据已发送完成,则向 Client 端发送 FIN 报文
    • Client 端收到 FIN 报文后, 发送 ACK 后进入 TIME_WAIT 状态,如果 Server 端没有收到 ACK 则可以重传。Client 端等待了 2MSL 后依然没有收到回复,则证明 Server 端已正常关闭
    • Client 端关闭连接