"为什么连接的时候是三次握手,关闭的时候却是四次握手?"

为什么连接的时候是三次握手,关闭的时候却是四次握手?

因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。

但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

连接3次握手:
3handshake.webp

关闭4次握手:
4handshake.webp

PS:写作不易,如要转裁,请标明转载出处。
登录
注册
回顶部