浅谈TCP三次握手和四次挥手

三次握手

  • 客户端-发送带有SYN标志的数据包-一次握手-服务端
  • 服务端-发送带有SYN/ACK标志的数据包-二次握手-客户端
  • 客户端-发送带有ACK标志的数据包-三次握手-服务端

三次握手的理由

三次握手的目的是为了建立可靠的通信信道。

  1. 第一次握手:客户端什么都不能确认,服务端确认对方发送正常,自己接收正常
  2. 客户端确认自己发送、接收正常,对方发送、接收正常;服务端确认了对方发送正常,自己接收正常
  3. 客户端确认了自己发送、接收正常、对方发送、接收正常;服务端确认了自己发送、接收正常,对方发送、接收正常

四次挥手

  • 客户端-发送一个FIN,用来关闭客户端到服务器的数据传送
  • 服务器-收到这个FIN,返回一个ACK,确认序号为收到的序号加1.和SYN一样,一个FIN将占用一个序号
  • 服务器-关闭与客户端的连接,发送一个FIN给客户端
  • 客户端-发回ACK报文确认,并将确认序号设置为收到序号加1.

四次挥手的理由

任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。