1.为什么要进行三次握手,握手为什么需要三次?
(1)三次握手最主要的目的是保证连接是双工的,可靠更多的是通过重传机制来保证的。
为了保证服务端能够接收到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手;为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。
(2)防止重复连接;同步初始化序列化。
2.挥手为什么需要四次?三次不可以吗?
(1)参照三次握手机制,挥手最少需要三次,如果只有三次,客户端发送完数据请求断开连接,而服务端不一定也同样发送完数据,若同时回ACK和FIN给客户端,断开连接,可能造成数据的损坏;若先发送ACK,再等B的数据发送完了再发送FIN和ACK,就可以保证传输数据的完整性。
TCP是全双工模式,接收到FIN意味着将没有数据再发来,但是还是可以继续发送数据。
(2)如果客户端请求关闭连接时,服务器并没有数据需要发送,其实三次挥手应该也是可以的。但一般情况下,客户端猝不及防地请求断开连接,服务器还是有数据需要传输的,所以四次挥手更加地稳妥。



