使用套接字选项的路径 MTU 发现 - IP_MTU & IP_MTU_DISCOVER

Path MTU Discovery using Socket option - IP_MTU & IP_MTU_DISCOVER

我正在 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 return "Path MTU" 而不是客户端的 MTU。

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

请给出一些使用 getsockopt.Examples 获取 PATH MTU 的想法,非常感谢。

提前致谢。

您可能想阅读 Path MTU Discovery 的工作原理。

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

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