cat*_*eof 6 c sockets network-programming mtu
客户端请求 MTU 限制为 1492。
有没有办法在源代码(C 程序)中做到这一点?
一般情况下还有其他方法吗?(如果配置?)
为什么有人需要将 MTU 修改到一定的限制?有什么好处?最重要的是:更改 MTU 是否存在破解代码的风险?
使用C以编程方式:
int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
struct ifreq ifr;
strcpy(ifr.ifr_name, "eth0");
if(!ioctl(sock, SIOCGIFMTU, &ifr)) {
ifr.ifr_mtu // Contains current mtu value
}
ifr.ifr_mtu = ... // Change value if it needed
if(!ioctl(sock, SIOCSIFMTU, &ifr)) {
// Mtu changed successfully
}
Run Code Online (Sandbox Code Playgroud)
它至少可以在 Ubuntu 上运行,请参阅man netdevice。
小智 3
这与速度无关;而是与速度有关。通过增加 MTU,您可以减少开销,这些数据负责正确传送包,但最终用户无法使用它;这可以提高速度,但仅限于交通繁忙的情况;
此外,如果增加 MTU,则很容易增加丢弃的数据包数量(因为数据包中有固定的误码概率和更多位),最终导致重发数据包等性能下降。 .所以这是开销和数据完整性之间的折衷;
我想它更多的是一个界面配置,而不是你用程序控制的东西;因此,最好坚持使用“ifconfig”命令或找到适用于 Windows 的等效解决方案。