固定TCP有效载荷大小

我有一个应用程序,需要在TCP数据包中有一个固定的(516 byes)有效载荷大小。 应用程序本身不能被修改来调整它的设置,因此我需要调整操作系统的TCP缓冲区大小…

据我所知TCP缓冲区大小(SO_SNDBUF)可能会被调整,以便“自动调整”不会尝试在数据包中包含更多的数据。

如果我调整SO_SNDBUF到516将只有有效载荷或将影响整个数据包(头+有效载荷)?

如果将套接字上的SO_SNDBUF设置为516,则内核会将其加倍并假定缓冲区必须为1032个字节。 这个开销是针对内核结构的。

如果创build一个516字节的消息缓冲区,填充它,然后调用send()或sendto()或write(),那么这些516字节将自动作为单个数据包在线路上发送。