TCP的三次握手与四次挥手

众所周知,TCP是面向连接的、可靠的传输层的通信协议,它在建立连接以及断开连接时分别会发生三次握手和四次挥手的行为,以保证它的这种可靠性特征。

建立连接:三次握手

三次握手的过程如下:

  1. 客户端发送一个SYN (SEQ=x)报文给服务器;
  2. 服务器收到后,回应一个SYN (SEQ=y) + ACK (ACK=x+1)的报文;
  3. 客户端收到服务器的报文后,再回应一个ACK(ACK=y+1)的报文,即完成三次握手过程。
    TCP三次握手

三次握手完成后,客户端和服务器就能正常进行数据传输了。

断开连接:四次挥手

四次挥手的过程如下:

  1. 某一端想要关闭连接时,需要发送一个FIN分节给另一端,表示该端的数据发送已经完毕,可以关闭连接了。
  2. 另一端接收到关闭信号后,发送ACK报文确认已接收到关闭信息。
  3. 一段时间后,另一端也完成了数据发送后,将发送FIN给对端。
  4. 接收到FIN的原发送端会发送确认报文ACK,至此两端将关闭连接。
    TCP四次挥手

    四次挥手过程中,任何一端都可以执行主动关闭,但一般是客户端一方主动执行。
  • Q:为什么断开连接需要四次而不是三次?
    A: 因为断开连接时,被动方需要先发送确认报文,确认它已经收到了主动方发送的断开信息。这时,它可能还需要等待一段时间,等数据发送完毕,再发送FIN报文告知主动方它也已经发送完成,可以断开连接。因此ACKFIN不是同时发送的,需要多一次。

参考文献:
https://baike.baidu.com/item/TCP/33012?fr=aladdin#6_2
https://www.cnblogs.com/lms0755/p/9053119.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容