udp - 最可靠,最有效的udp数据包大小?

标签 udp processing-efficiency packet-loss

通过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/

相关文章:

c - 如何打印有关我的代码执行的数据?

error-handling - ESP32报文的BLE错误检查

c - Linux UDP 套接字/端口重用

sockets - 监听对 UDP 多播消息的 UDP 单播回复

performance - TeamViewer 怎么这么快?

c# - 更高效的 If\Else?

networking - 防火墙:2路UDP通信可能吗?

c# - 多个视频源合二为一

c++ - 测量ping-c++的丢包