客户要求 MTU 限制应为 1492。
有没有办法在源代码(C 程序)中做到这一点?
一般情况下还有其他方法吗? (ifconfig?)
为什么有人需要将 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
}
它至少在 Ubuntu 上有效,参见 man netdevice
.
关于c - 以编程方式在 C 中设置 MTU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5903818/