TCP连接和断开为什么是三次握手和四次挥手?

阅读本文需要先了解TCP连接过程,这里不详细描述,流程如下:

图片发自简书App

问题来了:

1.为什么建立连接要三次握手?

2.为什么断开连接要四次挥手?

先说第一个问题。在想这个问题的时候,我想到的是为什么两次握手不可以。以A、B两人通信为例,第一次握手是A发消息给B,第二次握手是B发消息给A,我们知道经过两次握手之后,A和B之间的通信线路(A到B,B到A)是通了,但没有解决信任的问题。第一次握手使得B知道A->B是通的,第二次握手使得A知道A->B,B->A是通的,但此时B不知道B->A是否通,因此需要第三次握手,即A再发消息给B告诉它收到消息,这时B就知道B->A是通的。经过三次握手之后,A和B都知道彼此通信是通的。其实这个信任的问题,用四次握手来描述就比较清楚,即A发B,B回A,B再发A,A回B,只是中间B那两步简化成一步就可以了。

其实断开连接的时候,使用的就是类似上述四次握手的过程,那么问题来了,为什么断开连接时中间那两步不能并成一步了呢?B回应A的分手请求时同时也发送自己的分手请求不可以吗?

答案是不可以。这是因为断开连接时,要连接过程中的数据处理可能没有完成。A发给B,B回应A时,表示A->B的线路断开,此时A不再发消息,B不再收消息。但是B可能还有数据要发给A,经过一段时间后,B处理完数据并全部发送给A后,才发起断开连接请求,开始B->A断开的过程,因此B回应A的分手请求和B发送分手请求不能合并成一步。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容