【问题标题】:Path MTU Discovery using Socket option - IP_MTU & IP_MTU_DISCOVER使用 Socket 选项的路径 MTU 发现 - IP_MTU & IP_MTU_DISCOVER
【发布时间】:2015-03-16 16:34:56
【问题描述】:

我正在 Linux 中对路径 MTU 发现进行一些实验 - TCP 连接,客户端和服务器配置了不同的 MTU。(分别为 MTU 1500 和 1000)。

在服务器和客户端之间的 TCP_CONNECT 之后,我使用以下命令观察客户端中配置的 MTU,如下所示。

  getsockopt(iSocketId,IPPROTO_IP,IP_MTU,(char *)&socket_mtu, &size);
  printf("MTU --> %d\n",socket_mtu); 

我相信 getsocketopt 返回“路径 MTU”而不是客户端的 MTU。

但我收到 MTU - 1500(客户端 MTU)而不是路径 MTU:1000。

请提供一些想法以使用 getsockopt 获取 PATH MTU。非常感谢示例。

提前致谢。

【问题讨论】:

    标签: c sockets tcp mtu


    【解决方案1】:

    您可能想了解Path MTU Discovery 的工作原理。

    路径 MTU 可以是不对称的,不同方向的 MTU 值不同。

    您在客户端上设置较低的 MTU 并不意味着它不能接收更大尺寸的数据报,它只意味着它不能发送它。

    【讨论】:

    • 这甚至不是那个意思。是 TCP。没有数据报。有 TCP 段,除字宽外不受限制,还有 IP 数据包,受 MTU 限制。
    • @EJP 这是负载大小 MTU 指定的 IP 数据报。 TCP 段在 IP 数据报中携带,TCP 的最大有效载荷是一个不同的参数,称为 MSS。注意IPPROTO_IP 套接字选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 2015-04-17
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多