电脑之家 - 专业计算机基础知识与电脑技术学习网站
分类导航

路由器|交换机|网络协议|网络知识|

服务器之家 - 电脑之家 - 网络技术 - 网络协议 - 为啥TCP握手只要3次但挥手却要4次?

为啥TCP握手只要3次但挥手却要4次?

2024-04-07 15:07Web学社 网络协议

TCP建立的是“全双工通信”。也就是单个TCP连接,本质上其实是由两个相互独立却方向相反的数据通道组成。

简而言之就是,在执行挥手前已经有“历史负担”了,但在握手前是没有的。

需要强调的一点是,TCP建立的是“全双工通信”。也就是单个TCP连接,本质上其实是由两个相互独立却方向相反的数据通道组成。

为啥TCP握手只要3次但挥手却要4次?图片

基于此,在建立连接时,其实是由两组连接操作来完成,两组操作一共4个报文,也就是“四次握手”。

为啥TCP握手只要3次但挥手却要4次?图片

但握手阶段没叫“四次握手”而是称为“三次握手”则是因为发生了“报文合并”。而之所以能够合并则是如开头所说,双方没有“历史负担”都是从零开始,可以同时建立连接。

当然,这里不是绝对的同时,建立连接总要有一方先发送SYN连接请求报文,然后接受方再响应。这时接受方就可以在响应报文ACK中合并自己的SYN连接报文,然后“一箭双雕”的发送。

为啥TCP握手只要3次但挥手却要4次?图片

于是,原本的“四次握手”就因为中间两个报文的合并变成“三次握手”了。

但是到了需要挥手断开TCP连接时,全双工的两条数据通道都已经有了数据流,这时很难做到当其中一条数据流决定关闭时,另外一条也恰好要关闭。这也就是开头说的,大家各自都有“历史负担”了。

为啥TCP握手只要3次但挥手却要4次?图片

当然,两条数据流正好同时断开的可能性也是有的,那就只需要“三次挥手”,但因为是特殊情况不具备代表性,所以不能作数。

这就像两个关系好的哥们,刚毕业时都是光棍,很容易约到一起去做事。但等双方各自成家后就难了,就算双方都有意愿,对方也不再一个电话就能到,而是“你先去,我等会到了给你电话”。

原文地址:https://mp.weixin.qq.com/s/eCLetgKHPB4QtBQnJgCj6w

延伸 · 阅读

精彩推荐