通过UDP发送大量小数据包会占用更多资源(cpu,zlib压缩等)。我读过here,说通过UDP发送一个大包〜65kBYTE可能会失败,所以我认为发送很多较小的包会更成功,但是随之而来的是使用更多处理能力的计算开销(或者至少就是我我假设)。问题基本上是这样。发送最大成功数据包并将计算量降至最低的最佳方案是什么?在大多数情况下,是否有适用的特定尺寸?我正在使用服务器的Erlang和客户端的Enet(用c++编写)。也使用Zlib压缩,并且我向每个客户端发送相同的数据包(广播是我猜的术语)。
最佳答案
大多数情况下,不会导致ip碎片的UDP payload
的最大大小为
MTU size of the host handling the PDU (most of the case it will be 1500) -
size of the IP header (20 bytes) -
size of UDP header (8 bytes)
1500 MTU - 20 IP hdr - 8 UDP hdr = 1472 bytes
@EJP谈到了
534
字节,但我将其修复为508
。这是 FOR SURE 不会引起碎片的字节数,因为主机可以设置的最小MTU大小是576,而IP header max size
可以是60 bytes
(508 = 576 MTU-60 IP-8 UDP)顺便说一下,我会尝试使用
1472
字节,因为1500
是一个标准的值。如果要通过
1492
连接,请使用1500
而不是PPPoE
进行计算。
关于udp - 最可靠,最有效的udp数据包大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14993000/