【87、TCP的三次握手,四次挥手,为什么要三次、四次】

196 阅读2分钟

TCP协议中的三次握手和四次挥手是为了保证通信双方建立可靠的连接和正确地关闭连接而设计的。

三次握手的原因:

  1. 确保双方都具备发送和接收数据的能力:第一次握手时,客户端发送SYN包给服务器,告诉服务器自己具备发送数据的能力;第二次握手时,服务器发送SYN+ACK包给客户端,告诉客户端自己不仅具备发送数据的能力,也具备接收数据的能力;第三次握手时,客户端发送ACK包给服务器,告诉服务器自己也具备接收数据的能力。
  2. 防止已失效的连接请求报文段突然又传送到了服务器,从而产生错误:假设客户端发送了一个连接请求,但是由于网络等原因,连接请求报文段在传输过程中被延迟了,此时客户端没有收到服务器的响应,于是重新发送了一个连接请求。如果没有三次握手,服务器就会认为客户端发送的是一个新的连接请求,从而建立连接,这样就会出现连接请求被错误地接受的情况。

四次挥手的原因:

  1. 客户端和服务器端都有可能在最后一次通信时,需要告诉对方它们不再发送数据了:当一方完成它的数据发送任务后,它会发送FIN包给另一方,告诉它自己已经没有数据要发送了。
  2. 接收到FIN包的一方需要向发送FIN包的一方发送ACK包,表示已经接收到FIN包,并且同意关闭连接。
  3. 为了确保双方都能正确地关闭连接,可能需要等待一段时间,以确保对方已经接收到了自己发送的ACK包,才能彻底地关闭连接。

综上所述,TCP的三次握手和四次挥手可以保证通信双方建立可靠的连接和正确地关闭连接,从而保障网络通信的稳定性和可靠性。