1.连接时
因为当服务器端收到客户端的SYN连接请求报文后(一),
可以直接发送SYN(请求)+ACK(确认)报文(二),
然后客户端确认与服务器已连接(三)。其中ACK报文是用来应答的,SYN报文是用来同步的。
2.关闭时
但是关闭连接时,当服务器端收到FIN(请求断开连接)报文时(一),
很可能并不会立即关闭SOCKET( Socket是建立网络连接时使用的,在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话)
,所以只能先回复一个ACK(确认)报文(二),告诉客户端,“你发的FIN报文我收到了”。
只有等到服务器端所有的报文都发送完了(三),才能发送FIN报文,因此不能一起发送,
后客户端确认关闭(四)。故需要四步握手。