代码之家  ›  专栏  ›  技术社区  ›  Unknown

如何找到最大的UDP包,我可以发送没有碎片?

  •  52
  • Unknown  · 技术社区  · 17 年前

    我需要知道我能发送到另一台计算机的最大的UDP包是没有碎片的。

    这种尺寸通常被称为MTU(最大传输单元)。据推测,两台计算机之间的路由器和调制解调器可能具有不同的MTU。

    我了解到Windows中的TCP实现会自动找到路径中最大的MTU。

    我也在试验,我发现从我的计算机到服务器的最大MTU是57712字节+头。上面的任何东西都被丢弃了。我的电脑在局域网上,MTU不是应该在1500字节左右吗?

    5 回复  |  直到 7 年前
        1
  •  23
  •   ChrisW    17 年前

    下面并没有直接回答您的问题,但您可能会发现它很有趣;它说IP数据包可以分解/重新组装,因此超过了底层媒体(例如1500字节以太网)的限制: Resolve IP Fragmentation, MTU, MSS, and PMTUD Issues with GRE and IPSEC


    有关此主题的详细信息:

    我不知道如何通过Windows上的API生成ICMP:有一次,这样的API被提出了,并引起了争议,因为人们认为这样可以很容易地编写通过生成大量ICMP消息来实现拒绝服务功能的软件。

    不,看起来像 已实现:请参见示例 Winsock Programmer's FAQ Examples: Ping: Raw Sockets Method .

    因此,要发现MTU,请使用“不分段”标志生成ping数据包。

    也许还有比这更简单的API,我不知道;但我希望我已经给了您理解底层协议。

        2
  •  12
  •   mvorisek Robert Gamble    10 年前

    除了前面所有的答案,引用 classic :

    IPv4和IPv6定义 最小重组缓冲区大小 ,保证任何实现都必须支持的最小数据报大小。对于IPv4,这是576字节。ipv6将此值提升到1280字节。


    这几乎意味着,如果您在公共互联网上工作,并且只控制交换的一侧,那么您希望将数据报大小限制在576以下——这是大多数基于UDP的标准协议所做的。

    还要注意,pmtu是路径的动态属性。这是TCP为您处理的事情之一。除非您准备好重新实现大量的顺序、定时和重传逻辑,否则请将TCP用于任何关键的网络。基准、测试、剖面,即 证明 TCP是您的瓶颈,只有考虑到UDP。

        3
  •  3
  •   Alexp    12 年前

    这对我来说是个有趣的话题。也许在通过UDP在现实世界的互联网上传输大块的UDP数据时,一些实际的结果可能会很有趣,并且以每秒1个数据包的传输速率,数据继续以最小的数据包丢失率出现,最多可达2 K左右。在这一点上,您开始遇到问题,但我们定期提供1600+字节的数据包,而不存在分发区。S-这是通过GPRS移动网络和广域网实现的。假设信号稳定(不是!)你的包丢失率很低。

    有趣的是,它不是奇怪的数据包,而是经常有几秒钟的大量数据包——这大概就是为什么VoIP呼叫偶尔会崩溃的原因。

        4
  •  2
  •   Jherico    17 年前

    您自己的MTU在 registry 但实际上,MTU是在您的机器和目的地之间的路径中到达最小的MTU。这两者都是变量,只能通过经验来确定。有很多 RFCs 演示如何确定。

    局域网内部可以有很大的MTU值,因为网络硬件通常是同质的,或者至少是集中管理的。

        5
  •  0
  •   bockmabe    7 年前

    对于UDP应用程序,如果要避免IP碎片或丢失数据包,则必须自己处理端到端MTU。任何应用程序的推荐方法都是尽最大努力使用PMTU选择最大数据报,或发送数据报<最小PMTU

    https://tools.ietf.org/html/rfc5405#section-3.2

    应用程序设计器的单播UDP使用指南“不应发送超过PMTU的数据报,应发现PMTU或发送最小PMTU

    Windows通过其基本套接字选项界面设置和访问PMTU信息:

    您可以确保PMTU Discover通过IP_MTU_Discover打开,并且可以通过IP_MTU读取MTU。

    https://docs.microsoft.com/en-us/windows/desktop/winsock/ipproto-ip-socket-options

    推荐文章