如何设置don't fragment (DF) flag 在socket上? (实际模拟路径 MTU 发现)

181 篇文章 ¥39.90 ¥99.00
本文详细介绍了如何在socket编程中设置Don't Fragment(DF)标志,探讨了其在网络传输中的作用,同时讲解了如何进行路径最大传输单元(MTU)的发现过程,确保数据有效无损地通过不同网络路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何设置don't fragment (DF) flag 在socket上?

我们尝试设置  DF (don't fragment flag) 用于发送UCP 数据库包

我想尝试 使用setsockopt() 但是不能找到

你可以使用 setsockopt() call, 通过使用IP_DONTFRAG选项:

int val = 1;

setsockopt(sd, IPPROTO_IP, IP_DONTFRAG, &val, sizeof(val));

int val = IP_PMTUDISC_DO;
setsockopt(sd, IPPROTO_IP, IP_MTU_DISCOVER, &val, sizeof(val));

对于linux, 它似乎你必须使用之IP_MTU_DISCOVER 使用之IP_PMTUDISC_DO,

或者IP_PMTUDISC_DONT to turn it off

int val = IP_PMTUDISC_DO;
setsockopt(sd, IPPROTO_IP, IP_MTU_DISCOVER, &val, sizeof(val));


我还没有测试过这个, 只是查看了头文件 

至于是否有其他方法可以设置DF标志:


我在程序中找不到 设置 "force DF flag"的地方, 但tcpdump 建议它是,有没有其他方法可以设置?

IP_MTU_DISCOVER:   设置或者 接收 socket的 Path MTU Discovery  设置。 

当启用时, Linux 执行 Path MTU Discovery  作为定义在RFC 1191 在这个socke
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scan724

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值