首页 文章

覆盖tcp段时的TCP FIN行为[重复]

提问于
浏览
0

这个问题在这里已有答案:

在浏览开源代码库时,我想到了一个有趣的场景 . 假设TCP连接 Build 成功后,TCP客户端发送序列号为101,len = 100的数据包 . 服务器尚未从客户端接收seq = 1,len = 100的数据 . 之后,客户端发送序列号为151的FIN . 现在TCP服务器认为FIN为重传 . 我的问题是,如果服务器收到覆盖TCP段的FIN数据包,那么根据RFC的TCP endpoints 的行为应该是什么 . FIN会被处理,丢弃还是依赖于TCP实现?

2 回答

  • 1

    FIN是否会被处理,丢弃或依赖于TCP实施?

    这是重叠段的特殊情况,即服务器接收第一个段以及后来在第一个段内具有起始点的另一个段 . 大多数实现都会认为后面的段无效,但像@EJP已经评论过RFC通常不关心定义无效数据的行为 .

    无论如何,段重叠或类似的无效数据通常可用于绕过客户端和服务器之间的防火墙,因为这些防火墙要么没有保持足够的状态来过滤掉无效数据(因为状态需要资源来减慢防火墙的速度),要么只是显示处理无效数据时与客户端和服务器不同的行为 .

  • 1

    这个问题与我在4周前回复的问题非常相似 . 如果不相等 . 我认为两个线程的响应是一样的 . 请查看@EJP在该主题中与您的问题相关的评论 . out of order FIN packet and overwrite?

相关问题