AF_PACKET SOCK_DGRAM 的原始 IP 数据包需要分段?

AF_PACKET raw IP packets with SOCK_DGRAM require fragmenting?

我看到的大多数在 linux 中使用 AF_PACKET 套接字的示例代码都使用 SOCK_RAW 版本发送以太网数据包。我希望使用带有第 3 层 SOCK_DGRAM 选项的 AF_PACKET 套接字来发送带有自定义 IP header 的自定义 UDP 数据包。我的问题是,我是否必须在用户空间处理 IP 分段并将多个分段的 IP 数据包写入 AF_PACKET 套接字,或者我是否可以编写一个包含 30K 数据的 UDP 数据包,内核会为我分段?

经过开发,我可以确认如果您使用 AF_PACKET 套接字和 SOCK_DGRAM 用于 IP 数据包,您必须手动处理碎片。我试图写一个 4000 字节的 UDP 数据报,并收到一个 "message size too long" 错误。