【发布时间】:2017-07-12 22:03:56
【问题描述】:
我正在从一个 .pcap 文件重放,该文件包含一个已被分割成两个帧的 UDP 数据报。使用 tcpreplay 或 scapy 时,两个程序都表示它们都发送了两个帧,但我在直接连接的设备上只收到 1。任何想法为什么?
数据包捕获位于here
编辑:连接的设备是防火墙,我正在运行 tcpdump,所以我希望看到两个帧
Edit2:防火墙上的 tcpdump 应该打印它接收到的所有数据包,即使它由于某种原因被丢弃。但是,这是 tcpdump 打印的唯一数据包:
968.681737 lan in 172.23.0.5.1812 -> 172.16.0.4.37507: udp 1434 (frag 4486:1424@0+)
【问题讨论】:
-
如果接收设备只是使用普通的套接字 API 来接收 UDP,可能设备上的 IP 堆栈工作正常,因此重新组装这 2 个数据包并将一个数据报传递给应用程序,就像它应该假设的那样到。
-
我将编辑上面的描述 - 接收设备是一个网络设备(防火墙),所以我希望在防火墙上使用 tcpdump 时看到两个帧,但我只看到大片段,不是最后一块。
-
那么您需要仔细描述您如何观察/确定设备仅“看到”一个数据包。一些防火墙肯定会重新组装 UDP 数据包以正确应用防火墙规则。其他人可能会根据您的配置丢弃其中一个片段,您必须提供很多关于您正在做什么以及如何配置防火墙的详细描述,以便任何人提供帮助。
-
防火墙上的 tcpdump 应该打印它收到的所有数据包,即使它由于某种原因被丢弃。但是,这是 tcpdump 打印的唯一数据包:
968.681737 lan in 172.23.0.5.1812 -> 172.16.0.4.37507: udp 1434 (frag 4486:1424@0+) -
您在运行 tcpdump 时是否使用了任何过滤器? (例如,端口过滤器只会匹配 1. 片段)
标签: udp ip scapy pcap tcpreplay