4

我想在 IP 数据包上设置 Don't Fragment 标志。setsockopt()有没有办法通过函数或函数的标志来做到这一点sendto()

我可以使用“普通”套接字执行此操作,还是必须使用原始套接字并自己构建整个 IP 标头,将其偏移字段设置为IP_DF(在 ip.h 中定义)?

4

2 回答 2

2

根据this page,您可以IP_DONTFRAG使用数据报套接字(UDP)设置IP层的选项。这个 SO 讨论指向类似的方向。

于 2010-08-17T11:33:24.203 回答
0

看着/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers我确实发现了一些常数:

netinet/ip.h
99:#define IP_DF 0x4000                    /* dont fragment flag */
netinet6/in6.h
547:#define IPV6_DONTFRAG           62 /* bool; disable IPv6 fragmentation */
于 2020-03-07T20:05:11.547 回答