如何在Wireshark中避免无序TCP数据包

时间:2014-03-25 07:06:56

标签: wireshark

我确实有以下情况 - 有时当我使用Wireshark记录TCP流量时,我会收到一些无序的数据包。然后我需要将数据保存为PDML(Wireshark detail XML)并逐个处理每个主标记。问题是我期望数据以正确的顺序保存,但是对于无序数据包而言并非如此。 基本上数据包如下所示:

  • ID Time ... ACK SEQ
  • 1 12:10:01 ... 1 1
  • 2 12:10:02 ... 206 1461
  • 3 12:10:03 ... 206 1(无序)
  • 4 12:10:04 ... 2143 206
  • 5 12:10:05 ... 2143 218
  • 6 12:10:06 ... 283 2143

所以第3个数据包是服务器响应的实际开始,第2个数据包是它的继续。

这种情况很少发生,我可以在生成的PDML中手动切换这些数据包。但是,如果可能的话,我想自动执行此操作,以确保无法解决此问题。

所以问题 - 是否有一些默认的可能性在Wireshark中配置排序以避免此类问题?或者唯一的选择是为生成的PDML编写我自己的解析器,其中必须处理描述的情况。

我需要的是获得第二和第三个数据包切换的输出。

1 个答案:

答案 0 :(得分:0)

  

如何在Wireshark

中避免无序TCP数据包

假设数据包实际上没有按顺序传送到您的计算机,您可以通过在不会将数据包无序传送到libpcap / WinPcap使用的捕获机制的操作系统上进行捕获来避免它们。在多处理器/多核机器上,至少某些版本的Linux有时会这样做,可能是因为这两个数据包是由不同的内核处理的,而稍后在机器上到达的数据包首先使它成为PF_PACKET套接字。

示例中的数据包按时间戳顺序排列,它们之间存在显着的时间差;是你的捕获中发生了什么?如果是这样,那么可能的数据包无法按顺序到达捕获主机。

Wireshark中没有任何机制可以按TCP序列号对数据包进行排序,并按顺序写出来。