您的位置:首页 > 理论基础 > 计算机网络

TCP为什么要三次握手而结束要四次

2018-04-01 12:52 218 查看
举个打电话的例子:  A : 你好我是A,你听得到我在说话吗  B : 听到了,我是B,你听到我在说话吗  A : 嗯,听到了  建立连接,开始聊天!



简单而言:如果不是三次握手的话,那么到底需要几次握手最佳呢?2次握手,或者4次以上的握手?
先看2次握手的情况:客户端给服务器发送建立连接的请求,服务器同意连接请求发回应给客户端,连接就此建立。有问题的就是网络中经常会出现的包的延迟,如果客户端的某个包在路由器上延迟了,过了很久才发给服务器,服务器收到这个包后回应给客户端,服务器以为连接就此建立成功,分配资源,这样就会出现问题。
再看四次握手的情况:①A发送SYN,②B收到SYN后发送ACK+SYN③A发送ACK④B再发送ACK实际上这样的过程可以一直循环下去,其实3次握手已经是能够使双方知道对方设备都是好用的最少次数。四次握手会浪费资源。综上所述,TCP 3次握手最好。

 

为什么TCP协议终止链接要四次?1、当主机A确认发送完数据且知道B已经接受完了,想要关闭发送数据口(当然确认信号还是可以发),就会发FIN给主机B。2、主机B收到A发送的FIN,表示收到了,就会发送ACK回复。3、但这是B可能还在发送数据,没有想要关闭数据口的意思,所以FIN与ACK不是同时发送的,而是等到B数据发送完了,才会发送FIN给主机A。4、A收到B发来的FIN,知道B的数据也发送完了,回复ACK, A等待2MSL以后,没有收到B传来的任何消息,知道B已经收到自己的ACK了,A就关闭链接,B也关闭链接了。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: