抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

TCP三次握手

为什么是三次握手?

  • 双方都得确认建立连接
  • 防止历史的连接请求造成混乱

TCP四次挥手

为什么需要四次挥手?

因为TCP是全双工的协议,连接的两端可以同时发送和接受数据,所以每一端都必须独立的关闭自己的“发送通道”,这就需要四次交互。
服务器刚收到客户端的FIN时,往往还有数据没发完。

什么时候可以三次挥手?

有一种特殊情况:如果服务器收到客户端FIN时,已经没有数据要发了,那么可以将ACK和FIN合并。
看起来像三次挥手

[!note]

  1. Client → Server: FIN
  2. Server → Client: ACK + FIN (合并!)
  3. Client → Server: ACK

为什么会有TIME WAIT状态,为什么是2MSL时间?

只有主动断开连接的一方才有TIME WAIT状态
目的:
确保最后一个ACK能到达服务器,如果没有到达服务器的话,服务端会重新发送FIN。
MSL:Maximum Segment Lifetime,一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,客户端都没有收到FIN,那么客户端推断ACK成功被接受,则结束TCP连接。

评论