【问题标题】:How can I force set the MTU with C code?如何使用 C 代码强制设置 MTU?
【发布时间】:2019-01-31 07:19:11
【问题描述】:

当我通过 TCP 套接字连接时,我的设备出现问题,因为客户端在 SYN 连接中发送 MSS,而服务器(我的设备)设置了相同的 MSS,但我不想设置此 MSS在我的设备中。

那么我怎样才能在 MSS 中强制设置这个值呢?

我尝试使用带有 IP_DONTFRAG 的 setsockopt 函数设置 MTU

【问题讨论】:

  • 移动设备通常会忽略套接字选项,例如发送和接收缓冲区大小、MTU 和 MSS。运营商根本不允许您覆盖他们选择的参数。您可能需要使用 Android 和一个 mod,例如 Cyanogenmod。

标签: linux tcp setsockopt mtu mss


【解决方案1】:

您应该能够使用TCP_MAXSEG 选项调用setsockopt 来设置TCP 最大段大小。查看tcp(4) 了解可用选项。您可能必须在connectlisten 之前设置选项。

至于设置 IP MTU,IP_DONTFRAG 选项将导致如果段的 MTU 较小,则丢弃数据包。 IP 层应通过在收到“需要分段”响应后重传一个较小的数据包来协商到一个合理的 MTU 值。 TCP 段和 IP 数据包位于协议栈的不同层——换句话说,一个 TCP 段可以跨越多个 IP 数据包。更改 IP 数据包的大小不会影响 TCP 段的大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 2010-09-15
    相关资源
    最近更新 更多