【问题标题】:Change max UDP Packet Size更改最大 UDP 数据包大小
【发布时间】:2015-05-17 08:04:20
【问题描述】:

似乎我无法接收消息大于 4096 字节的 UDP 数据包。 我在哪里可以更改此限制?

是操作系统还是网络适配器相关?

我的 Windows Server 2012 R2 在我的 Windows 8.1 电脑上运行良好时遇到了这个问题。

任何提示将不胜感激。

【问题讨论】:

    标签: windows udp packet packet-capture packet-loss


    【解决方案1】:

    您需要提高发送方的套接字发送缓冲区大小和接收方的套接字接收缓冲区大小。然而,普遍接受的 UDP 有效载荷大小的实际限制是 534 字节。除此之外,它们可以被分段,如果一个片段没有到达,整个数据报就会丢失。

    【讨论】:

    • 我正在使用开源软件 Packetsender (packetsender.com) 进行测试(因此在这种情况下,您所说的软件限制不应该是问题)。当我在本地 Win 8.1 电脑上使用它时,每次尝试都会得到预期的响应(超过 4096 字节)。当我在我的 Win Server 2012 上执行相同操作时,我只会在数据包大小小于 4096 字节时得到响应(即使我尝试了 100 次,所以我认为它不会是丢包)。所以我想它必须与操作系统或网络适配器相关,因为我使用相同的软件来接收和发送数据包。
    【解决方案2】:

    根据the Microsoft documentation for socket options,有一个SO_MAX_MSG_SIZE 选项是“协议支持的面向消息的套接字的最大出站消息大小”。 UDP 套接字是“面向消息的套接字”(与“面向流的套接字”相反;TCP 套接字是面向流的)。

    这表明操作系统规定了最大消息大小。遗憾的是,该页面没有SO_MAX_MSG_SIZE 行的“设置”列中说“是”,因此您的程序无法覆盖该最大值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-07
      • 2020-05-25
      • 2020-06-23
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多