如何强制使用C代码设置MTU?

时间:2018-08-24 19:37:00

标签: linux tcp setsockopt mtu mss

当我通过TCP套接字进行连接时,我的设备上有一个issu,因为客户端在SYN连接中发送了MSS,并且服务器(我的设备)使用相同的MSS进行设置,但我不想设置此MSS在我的设备中。

那么如何在MSS中强制设置此值?

我尝试通过IP_DONTFRAG的 setsockopt 函数设置 MTU

1 个答案:

答案 0 :(得分:1)

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

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