您当前位置:资讯中心 >IDC >浏览文章

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

来源:CTO 日期:2024/4/7 0:02:00 阅读量:(0)

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

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

图片图片

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

图片图片

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

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

图片图片

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

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

图片图片

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

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

关键字:
声明:我公司网站部分信息和资讯来自于网络,若涉及版权相关问题请致电(63937922)或在线提交留言告知,我们会第一时间屏蔽删除。
有价值
0% (0)
无价值
0% (10)

分享转发:

发表评论请先登录后发表评论。愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。