【问题标题】:Path MTU Discovery in C#C# 中的路径 MTU 发现
【发布时间】:2014-12-03 23:51:27
【问题描述】:

如何找到连接之间的路径 MTU?我需要这个来定义我的 UDP 连接的数据包大小。 .Net 中有类似 Path MTU Discovery 的东西吗?

【问题讨论】:

    标签: c# udp mtu


    【解决方案1】:

    我找到了一种方法(解决方法)在 c# 上找到 udp 的路径 mtu。只需尝试发送 udpclient.dontfragment 设置为 true 的 udp 数据包。如果抛出异常,则减小数据包大小,直到没有抛出异常。如果有人想看一些样品,请问。

    【讨论】:

    • 较低的 MTU 可能在路径上。所以你不会得到异常,数据包已发送,但未收到。您必须发送一些数据包大小并设置其他端点以向您发送一些 ACK 数据包以进行 MTU 发现。
    • “路径上任何 MTU 小于数据包的设备都将丢弃此类数据包并发送回包含其 MTU 的 ICMP“目标无法到达(数据报太大)”消息。 en.wikipedia.org/wiki/…
    【解决方案2】:

    取自here

    winsock 不支持报告 发现了 MTU,即使其他 TCP/IP 协议栈(例如 AIX 通过 套接字选项 IP_GETPMTU)。作为温索克 无法报告,.NET 无法提供 一个 API(它必须在顶部 温索克)。

    【讨论】:

      【解决方案3】:

      您是否尝试过在 C# 中使用 libpcap?您可以使用一个名为 SharpPCap 的库来查找 PMTU。

      【讨论】:

      • 另外,我可以获取您使用 Udpclient 查找没有 libpcap 的路径 MTU 的示例代码吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多