首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对TCP片段进行排序

如何对TCP片段进行排序
EN

Stack Overflow用户
提问于 2016-06-03 08:53:20
回答 1查看 383关注 0票数 0

我有10个未排序的TCP段(A),我想暂时对它们进行排序。我从每个人那里得到的信息:

  • A:{序列号:434a6fBD,确认号:666 e b6 f4,标志: ACK}。
  • B:{序列号: 43 4a 6e 71,确认号: 66 6e b2 53,标志: ACK}。
  • C:{序列号: 43 4a 6e 70,确认号: 00 00 00,标志: SYN}。
  • D:{序列号:666 e b6 f3,确认号: 43 4a 6f bd,标志: ACK+FIN}。
  • E:{序列号: 66 6e b2 52,确认号: 43 4a 6e 71,标志: ACK+SYN}。
  • F:{序列号: 66 6e b2 53,确认号: 43 4a 6f bd,标志: ACK+PSH}。
  • G:{序列号: 66 6e b2 53,确认号: 43 4a 6f bd,标志: ACK}。
  • H:{序列号:666 e b3 a4,确认号:434 a 6f bd,标志: ACK+PSH}。
  • I:{序列号: 43 4a 6e 71,确认号: 66 6e b2 53,标志: ACK+PSH}。
  • J:{序列号:434 a 6f bd,确认号:666 e b6 f3,标志: ACK}。

据我所知,第一个应该是C,第二个应该是E,但我不知道如何安排其他部分。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-09-01 14:27:10

为了更准确地排序,您需要每个数据包的有效负载大小(以避免错过与其上一段重叠的段的顺序)。

但是,如果您确定没有包含一些重叠数据的段,则可以通过比较数据包的顺序和确认号(并考虑控制标志)对数据包进行排序。

首先,最好在每个方向上独立地对数据包进行排序:

请求端:CBIJA

响应侧:EGFHD

FG之间进行选择时,我们认为F的PSH标志是设置的,因此它包含了数据并提高了序列号,因此,由于G似乎不包含任何数据,所以它应该在G之后出现。

现在我们可以通过比较每一方的第一个数据包来进行合并:

  1. C:SYN
  2. E:SYN + ACK
  3. B:ACKs E
  4. IG的确认号大于I的序列号。
  5. GJ的确认号大于G的序列号。
  6. FJ的确认号大于F的序列号。
  7. HJ的确认号大于H的序列号。
  8. JJD之前,因为它没有ACK D。(设置了D的鳍控制标志;因此它会提高序列号。)
  9. DA的确认号大于D的序列号。
  10. A
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37610024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档