无论是什么协议——TCP、UDP 或其他任何协议——许多较小的数据包将比较少的较大数据包效率低。每个数据包都有一个固定大小的标头(或者更准确地说,一个具有最小尺寸但在某些情况下可能更大的标头)以及可能还有一个尾部,因此对于吞吐量有限的网络管道,用以下数据包填充它标头 + 尾标 + 1 字节有效负载意味着几乎所有容量都被元数据使用,而不是实际数据。在每个数据包中发送更大的数据块可以提高效率。也就是说,有时您的应用程序架构没有太多数据要发送,因此您可以选择小数据包或更大的延迟,同时聚合一堆数据包以一次发送。弄清楚采取哪种方法(或介于两者之间的方法,甚至)是设计应用程序的一部分。在您的特定情况下,使用基于回合的方法,如果我正确理解您的意思,那么后续数据包之间的时间段已经很重要(无论如何按网络时间尺度),所以小数据包可能是最佳路线。由于数据包之间的延迟较大,您的小数据包流对整体吞吐量的影响可能可以忽略不计。
可靠性无疑增加了复杂性。从编码的角度来看,使用 TCP 会使可靠性变得“容易”,但根据网络的实际特性,编写自己的重新发送 UDP 代码最终可能是更好的路由,尤其是当通道的整体可靠性降低时。TCP 在大多数情况下会恢复,但由于某些事件而导致的各种超时和调整方式可能会在不太可靠的通道上出现问题(许多 VPN 解决方案基于 UDP 的主要原因之一)。
预测实际丢失率高度依赖于网络,但您可能是正确的,遍历LAN - internet - LAN - mobile network
(或某些类似拓扑)的丢失明显高于本地 LAN 丢失。