0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

再次感受到了TCP的博大精深

小林coding 来源:小林coding 2023-02-13 16:48 次阅读

我在网站看到一位老哥问了个问题。

4a8136c2-aabf-11ed-bfe3-dac502259ad0.png

简单点说,为什么在 TCP 三次握手过程中,如果客户端收到的 SYN-ACK 报文的确认号不符合预期的话,为什么是回 RST,而不是丢弃呢?

4aa2394e-aabf-11ed-bfe3-dac502259ad0.png

我说回 RST 就回 RST 吗?

当然不是,我也是看 RFC 标准确认过。

4ac7c9d4-aabf-11ed-bfe3-dac502259ad0.png

我来先描述下这个场景吧:

  • 客户端向服务端发送 SYN 报文(seq=100),但是网络中有个不速之客,一个历史的 SYN 报文(seq=90)先抵达服务端;
  • 服务端收到历史的 SYN 报文,就会对此 SYN 报文做了确认,回了 SYN-ACK 报文,确认号为 90+1;
  • 客户端收到 SYN-ACK 报文后,诶发现不对劲,他明明发的是 SYN 报文(seq=100),按道理 SYN-ACK 报文中的确认号是 100+1,可现在收到的确认号为 90+1 的 SYN-ACK 报文,所以礼貌地回了 RST 给服务端;
  • 服务端收到 RST 报文后,服务端就断开处于 SYN_RECEVIED 状态的连接;
  • 最后正常的 SYN 报文(seq=100)终于抵达了服务端,经过三次握手后,双方的 TCP 连接都建立完成。

上面这个过程,就是 TCP 三次握手防止历史连接建立的过程,之所以 TCP 需要三次握手,首要原因是为了防止旧的重复连接初始化造成混乱,其次原因是可靠的同步双方的序列号。

那为什么要设计成,当客户端收到不符合期望的 SYN-ACK 报文,是回 RST,而不是丢弃呢?

现在我们来假设是丢弃处理,看看会发生什么?

4adb1c50-aabf-11ed-bfe3-dac502259ad0.jpg

可以看到,当处于 SYN_SENT 状态连接的客户端收到不符合期望的 SYN-ACK 报文时,如果选择的处理是「丢弃」,那么双方都会触发超时重传,直到达到最大的重传次数才会进入 CLOSE 状态,这个过程需要持续 10-20 秒。

从客户端的角度看,就是迟迟与服务端建立不来连接,因为服务端这边已经存在一个相同四元组的旧连接,如果不把服务端这个连接干掉,那么是无法确认客户端新的连接(SEQ=100),因为非 LISTEN 状态下,如果收到 SYN,都是回 challenge ack,这个 ack 并不是对收到 SYN 报做确认,而是继续回复上一次已发送 ACK。

是不是有种服务端的旧连接(SEQ=90)占着茅坑不拉屎的感觉?

所以啊,干掉服务端的旧连接的工作,就交给了客户端来做了。

当处于 SYN_SENT 状态连接的客户端,在收到不符合期望的 SYN-ACK 报文时,就直接 RST 给服务端,干掉服务端的旧连接,这样客户端的新连接才能快速建立。

怎么样,TCP 处处是细节啊!

再次感受到了 TCP 的博大精深

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1353

    浏览量

    79059
  • RFC
    RFC
    +关注

    关注

    0

    文章

    16

    浏览量

    10101
  • 服务端
    +关注

    关注

    0

    文章

    66

    浏览量

    7006

原文标题:这也能考虑到?TCP 有点牛逼

文章出处:【微信号:小林coding,微信公众号:小林coding】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    中国5G基站总量占全球60%,你感受到了吗?

    城区、超过98%的县城城区和80%的乡镇镇区。截至2021年底,5G移动电话用户达3.55亿户。   然而,你感受到了吗?   可以看到,现在很多人已经用上5G,然而,感觉怎么样呢?   首先,与4G相比,5G网络的速度确实更快,时延更低。而且,与2020年及以前相比,2021年之后,随
    的头像 发表于 02-10 07:56 3954次阅读

    学raw os 以来的真实感受之小见

    以前自己一直都是学ucos 的,公司里也是盗用这个,我也没觉的什么不妥,但是接触了作者后,发现这样子是可耻的。中国必须要有自己优秀的操作系统,最好是开源的。raw os 的内核让我感受到了什么叫速度
    发表于 02-27 14:18

    为什么步进电机能感受到在转动,但是看不到转动?

    步进电机能感受到在转动,但是看不到转动,是什么原因啊!电机型号是 28BYJ-48 5vDC.求大家帮忙分析一下,非常感谢啊!
    发表于 06-27 04:35

    最新可穿戴威廉希尔官方网站 可助聋哑人通过皮肤感受到立体声

    据外媒报道,一项名为Music:Not Impossible的新兴威廉希尔官方网站 设备出现,可以帮助聋哑人通过皮肤感受到立体声。据悉,该威廉希尔官方网站 的创意来源于前好莱坞制片人Mick Ebeling。Mick
    发表于 07-19 04:20

    TCP/IP协议连接指南

    前言 :之前只用了Wifi和Ethernet的连接,例程一下载就能连接的,但是没有讲到通讯。所以我还是很不懂。这次教程接触到了TCP/IP协议了,在使用例程时,就明显感受到,起始wifi和以太网在其
    发表于 02-17 07:45

    Linux那些事儿之我是U盘

    Linux的usb驱动开发博大精深,USB这一块的驱动开发详解
    发表于 11-03 17:31 20次下载

    雷霆世纪猎空C504评测 感受到了满满的诚意

    现在很多朋友,一有时间就喜欢打几把游戏来放松放松,最近也正是到了寒假期间,相比会有很多同学在家里都以游戏来度日吧?但是很多人又发愁用什么样的设备来玩游戏呢?小编还是推荐用台式机,因为在小小的笔记本上
    的头像 发表于 10-13 09:21 3560次阅读

    机器人进行新闻播报 使人类感受到了前所未有的压力

    如今,人工智能威廉希尔官方网站 的出现,为很多各行各业都带来了便利,未来在我们的日常生活中肯定离不开人工智能,同时也使人类前所未有的感受到了压力,“人工智能将取代哪些行业的人员?”这成为近些年来的热点话题。
    发表于 12-05 17:19 3522次阅读

    传感器威廉希尔官方网站 用于文物保护,将迎来新的机遇和挑战

    近日,故宫博物院院长提出,在紫禁建成600周年之际,故宫博物院将陆续推出许多精品文物,其中,就包括著名的古画——清明上河图等。文物重现人间可以让人们更好的感受到传统文化的博大精深,但是,在著作展出之际,文物的保护工作也要格外注意。
    发表于 03-17 09:22 1724次阅读

    感受到了零售的改革吗

    新零售的提出,让线上线下联动的模式被广泛关注,
    发表于 06-01 09:05 815次阅读

    Apple推出VR手套专利 可以使用户感受到VR或AR显示的对象

    Apple推出了VR手套专利,该专利可以使用户感受到虚拟现实或增强现实显示的对象。新专利表明,Apple将继续为尖端的VR和AR投入大量的研发工作。
    发表于 11-21 15:40 825次阅读

    Apple VR手套专利威廉希尔官方网站 可以让您感受到虚拟纹理

    Apple推出了VR手套专利,该专利可以使用户感受到虚拟现实或增强现实显示的对象。新专利表明,Apple将继续为尖端的VR和AR投入大量的研发工作。
    发表于 11-22 09:55 810次阅读

    Apple VR手套专利可让我们感受到虚拟纹理

    Apple推出了VR手套专利,该专利可以使用户感受到虚拟现实或增强现实显示的对象。
    发表于 03-11 10:04 652次阅读

    电路已经感受到纳米威廉希尔官方网站 的影响

    电路已经感受到纳米威廉希尔官方网站 的影响
    的头像 发表于 01-04 11:17 696次阅读

    感受到空气质量变化的开源设计

    电子发烧友网站提供《能感受到空气质量变化的开源设计.zip》资料免费下载
    发表于 06-16 15:21 0次下载
    能<b class='flag-5'>感受到</b>空气质量变化的开源设计