为什么 TCP 建立连接协议是三次握手,而关闭连接却是四次握手呢?
应用程序完成全部数据发送后,服务器才能告诉客户端断开连接。
- 建立连接时:服务端当收到客户端建立连接请求的 SYN 报文后,它可以把 ACK 和 SYN ( ACK 起应答作用,而 SYN 起同步作用)放在一个报文里来发送。
- 关闭连接时:服务器收到客户端的 FIN 报文通知时,服务器首先发一个回应报文 ACK:“哦,我知道了”,然后通知应用程序。
- 当应用程序完成全部数据发送并确定可以终止了,服务器才能发送 FIN 告诉客户端可以真正断开连接了。这一步 ACK 报文和 FIN 报文需要分开发送,因此多了一个步骤。