以特定大小开始丢弃的 Udp 数据包

Udp packets dropped starting with specific size

我用 c# 编写了一个自定义应用程序,用于将数据发送到远程计算机。但是,如果我一次发送超过 23672 个字节,数据将不会到达(~99% 的数据包丢失)。打开 Wireshark 时,我发现了这个: Screenshot udp分片好像失败了,很奇怪,23672以下的数据包也会分片

在测试同一个应用程序本地主机时,一切正常,最高可达 65507 字节(udp header 限制)。重现错误的测试应用程序:

        var client = new UdpClient();
        var sequenceNumber = 0; //i'm sending a sequence number to determine how many packets i've lost
        while (true)
        {

            var buffer = new byte[23673];
            BitConverter.GetBytes(sequenceNumber++).CopyTo(buffer, 0);
            client.Client.SendTo(buffer, new IPEndPoint(IPAddress.Parse("192.168.1.100"), 1234));
            Thread.Sleep(1000);
        }

我该如何解决这个问题? 或者我应该让我的包更小吗?如果是,通过 Internet 发送 udp 数据的最佳数据包大小是多少?

看你的截图,我认为是硬件(交换机网卡)或驱动相关。输入缓冲区可能太小,无法存储该数据包的所有片段,因此在尝试重新组装时超时。
Localhost 是不同的,afaik 它甚至不接触 NIC。
使用 TCP and/or 较小的数据包。