我需要通过可能有损的网络将数据包从一台主机发送到另一台主机。为了最大限度地减少数据包延迟,我不考虑 TCP/IP。但是,我希望最大化使用 UDP 的吞吐量。要使用的 UDP 数据包的最佳大小应该是多少?
以下是我的一些考虑:
网络中交换机的 MTU 大小为 1500。如果我使用大数据包,例如 8192,这会导致分片。丢失一个片段会导致整个数据包丢失,对吗?
如果我使用较小的数据包,我会产生 UDP 和 IP 标头的开销
如果我使用一个非常大的数据包,我可以使用的最大数据包是多少?我读到最大的数据报大小是 65507。我应该使用什么缓冲区大小来允许我发送这样的大小?这会有助于提高我的吞吐量吗?
常见操作系统(例如 Windows、Linux 等)支持的典型最大数据报大小是多少?
更新:
一些数据的接收者是没有实现 TCP/IP 堆栈的嵌入式系统。
我知道这个地方到处都是非常坚持使用可用的东西的人。但我希望有更好的答案,而不是只关注 MTU。