0

我们有一个应用程序进行 udp 广播。数据包大小大多高于 mtu,因此它们将被分段。

tcpdump 表示所有数据包都已收到,但应用程序并未全部收到。

如果将 mtu 设置得更大,那么整个事情就不会发生,因此不会出现碎片。(这是我们现在的解决方法 - 但德国人不喜欢解决方法)

所以看起来碎片化是问题所在。

但我无法理解数据包丢失的原因和位置。

应用程序开发人员表示,他们可以在接收数据包的套接字上看到数据包的丢失情况。所以他们的应用程序不会丢失数据包。

我的问题是:

linux设备上的tcpdump监控在哪里?

那里的数据包是否已经重新组装或稍后完成?

如何进一步调试此问题?

4

1 回答 1

0

tcpdump 使用 libpcap,它很早就在 Linux 网络堆栈中获取数据包的副本。Linux 网络堆栈中的 IP 片段重组将在 libpcap 之后(因此在 tcpdump 之后)发生。使用 Wireshark 保存 pcap 和视图;它将具有更好的分析功能,并将帮助您找到任何丢失的 IP 片段(如果有的话)。

于 2018-02-06T04:25:18.273 回答