分段UDP帧-使用tcpreplay或scapy发送时仅接收一个帧

分段UDP帧-使用tcpreplay或scapy发送时仅接收一个帧,udp,ip,scapy,pcap,tcpreplay,Udp,Ip,Scapy,Pcap,Tcpreplay,我正在从一个.pcap文件中重播,该文件包含一个已分为两个帧的UDP数据报。当使用tcpreplay或scapy时,两个程序都指示它们发送了两个帧,但我在直接连接的设备上只接收到1。你知道为什么吗 数据包捕获位于 编辑:连接的设备是防火墙,我正在运行tcpdump,因此我希望看到这两个帧 Edit2:防火墙上的tcpdump应该打印它接收到的所有数据包,即使它由于某种原因被丢弃。但是,这是tcpdump打印的唯一数据包: 172.23.0.5.1812中的968.681737 lan->172.

我正在从一个.pcap文件中重播,该文件包含一个已分为两个帧的UDP数据报。当使用tcpreplay或scapy时,两个程序都指示它们发送了两个帧,但我在直接连接的设备上只接收到1。你知道为什么吗

数据包捕获位于

编辑:连接的设备是防火墙,我正在运行tcpdump,因此我希望看到这两个帧


Edit2:防火墙上的tcpdump应该打印它接收到的所有数据包,即使它由于某种原因被丢弃。但是,这是tcpdump打印的唯一数据包:


172.23.0.5.1812中的968.681737 lan->172.16.0.4.37507:udp 1434(frag 4486:1424@0+)

您接收的是UDP数据报,而不是片段。如果两个片段都到达,IP层将合并它们,查看数据包是否已完成,并将其传递给UDP层,UDP层将其传递给接收进程。作为单个重新组装的数据报。

如果接收设备仅使用普通套接字API来接收UDP,则设备上的IP堆栈可能工作正常,因此会重新组装这两个数据包,并按照预期的方式将一个数据报发送到应用程序。我将编辑上面的描述-接收设备是一个网络设备(一个防火墙),所以我希望在防火墙上使用tcpdump时可以看到两个帧,但我只看到一个大片段,而不是最后一个片段。然后您需要仔细描述如何观察/确定设备仅“看到”一个数据包。某些防火墙肯定会重新组装UDP数据包,以便正确应用防火墙规则。其他防火墙可能会根据您的配置丢弃其中一个片段,您必须提供大量关于您正在执行的操作以及您如何配置防火墙的详细说明,以便任何人提供帮助。tcpdump on防火墙应打印其接收到的所有数据包,即使出于某种原因将其丢弃。但是,这是tcpdump打印的唯一数据包:
968.681737 lan in 172.23.0.5.1812->172.16.0.4.37507:udp 1434(frag 4486:1424@0+)
您在运行tcpdump时是否使用了任何筛选器?(例如,端口筛选器将仅与1.片段匹配)这对于基于套接字的应用程序来说是正确的,但不是tcpdump,它应该显示所有以太网帧。在这种情况下,它只显示第一个IP片段,而不是重新组装的IP数据包。