为什么不同的数据包分析器有时会产生不同的结果?

为什么不同的数据包分析器有时会产生不同的结果?

我同时运行了 wireshark 和 windump。两个数据包分析器都使用相同的 winpcap 库。

然而,在对结果进行逐行比较之后,我注意到两者之间的每一列都匹配,除了协议和信息列之外,尽管所有源、目标、长度列都匹配,但 40% 的协议列值不匹配。

所以我想知道为什么当两个分析器使用相同的 winpcap 库时协议列之间会有 40% 的差异,以及我应该相信哪个数据包捕获最准确?

答案1

协议字段是应用程序对协议性质的最佳猜测。它不是实际捕获的一部分。

答案2

tcpdump 和 WinDump(tcpdump 代码移植到 Windows)没有协议列本身。这是我的机器上的一些 tcpdump 输出:

11:11:52.409447 IP 192.168.42.69.45779 > broadcasthost.ssdp: UDP, length 378
11:11:52.717007 IP 192.168.42.69.45779 > broadcasthost.ssdp: UDP, length 431
11:11:52.921460 IP 192.168.42.69.45779 > broadcasthost.ssdp: UDP, length 381
11:11:53.068266 IP 192.168.42.66.49778 > my.isp.net.domain: 38666+ PTR? 69.42.168.192.in-addr.arpa. (44)
11:11:53.123356 ARP, Request who-has 192.168.42.66 (Broadcast) tell 192.168.42.1, length 46
11:11:53.123383 ARP, Reply 192.168.42.66 is-at ac:bc:32:7e:1a:69 (oui Unknown), length 28
11:11:53.128804 IP my.isp.net.domain > 192.168.42.66.49778: 38666 NXDomain* 0/1/0 (93)
11:11:53.129931 IP 192.168.42.66.52809 > my.isp.net.domain: 17704+ PTR? 255.255.255.255.in-addr.arpa. (46)
11:11:53.161878 IP my.isp.net.domain > 192.168.42.66.52809: 17704* 0/1/0 (109)

前三行是 UDP 数据包 - 它们可能是 SSDP 数据包,因为它们要发送到 SSDP 的标准端口(来自目标端点中的“.ssdp”),但 tcpdump 不会尝试剖析 SSDP。

其余的是 DNS 数据包,但是那里没有任何内容说“DNS”。

因此,tcpdump/WinDump 和 Wireshark 解剖之间实际上没有可用于比较的协议列。

它们都查看原始数据包数据以确定所使用的协议,并且它们的做法不同,即使查看完全相同的捕获文件,也会得到不同的结果。Wireshark 比 tcpdump/WinDump 做的工作多得多,因此通常更有可能确定正确的顶级协议。

相关内容