我们有一个应用程序正在进行udp广播。 数据包大小通常高于mtu,因此它们将被分段。
tcpdump表示所有数据包都已收到,但应用程序并未全部收到这些数据包。
如果mtu设置得更大,那么整个事情根本就不会发生,所以没有碎片。 (这是我们现在的解决方法 - 但德国人不喜欢解决方法)
所以看起来碎片就是问题。
但我无法理解数据包丢失的原因和位置。
应用程序开发人员说,他们可以看到数据包丢失,正好在他们正在接收它们的套接字上。因此他们的应用程序不会丢失数据包。
我的问题是:
linux上的tcpdump监控设备在哪里?
那里的数据包是否已经重新组装,或者是否稍后完成?
如何进一步调试此问题?
答案 0 :(得分:0)
tcpdump使用libpcap,它很早就在Linux网络堆栈中获取数据包的副本。 Linux网络堆栈中的IP片段重组将在libpcap之后发生(因此在tcpdump之后)。使用Wireshark保存pcap和视图;它将具有更好的分析功能,并将帮助您找到任何缺失的IP片段(如果有的话)。