![较小的网络数据包与较大的数据包——令人困惑](https://linux22.com/image/608365/%E8%BE%83%E5%B0%8F%E7%9A%84%E7%BD%91%E7%BB%9C%E6%95%B0%E6%8D%AE%E5%8C%85%E4%B8%8E%E8%BE%83%E5%A4%A7%E7%9A%84%E6%95%B0%E6%8D%AE%E5%8C%85%E2%80%94%E2%80%94%E4%BB%A4%E4%BA%BA%E5%9B%B0%E6%83%91.png)
有人说,发送较大的数据包比发送较小的数据包更好。
但在这个应用中:http://media.pearsoncmg.com/aw/aw_kurose_network_2/applets/message/messagesegmentation.html
数据包越小,到达目的地所需的时间就越短。所以我不明白为什么更喜欢大一点的?你能解释一下吗?谢谢
答案1
有很多事情需要考虑。其中最重要的是:
最大传输单元
特定介质的 MTU 决定了可发送的最大数据包的大小。在互联网上,该大小通常为 1500 字节,但如果涉及其他技术(如 PPPoA),则可能会有所不同。如果需要发送大于 MTU 的数据,则数据将被分割成多个数据包 - 这需要时间。
高架
您传输的所有内容都会产生开销 - 通常是描述您发送内容的元数据。一次发送大量数据可以减少这种开销,从而减少所需的网络带宽。
失败
根据您使用的协议,您可以检测并补偿丢失的数据包。如果一次发送的数据量较大,则在发生故障时需要重新发送的数据量会更大。同样,如果发送的数据量较小,则发生故障的可能性也会增加。
要求
客户端应用程序可能需要快速或批量获取数据。例如,视频流需要尽可能快地获取少量数据才能开始播放视频。IRC 等消息系统在完全接收消息之前无法显示消息。因此,视频流适合较小的数据包,而消息传递可能适合较大的数据包。
协议
您使用的协议决定了要发送的数据大小。例如,使用 TCP,如果您的窗口大小较小,则确认的开销会更大。如果您的窗口大小较大,则会遇到上述失败重新发送的问题。
答案2
汽车可以比卡车更快地穿越全国。但如果你需要将两吨南瓜从纽约运到洛杉矶,卡车会比汽车快得多。为什么?因为卡车虽然速度较慢,但装载量较大,因此需要的行程较少。
答案3
对于 voip 电话和即时通讯等,您需要更小的数据包。它们传输速度更快,但携带的数据更少。您需要更多的数据包,但每个数据包到达的速度更快。
这可以优化延迟——即单个单词或声音到达目的地需要多长时间。
较大的数据包可优化吞吐量 - 即整个信息集到达所需的时间。这对于文件传输等情况非常有用,因为只拥有文件的一部分对您没有好处。除非您拥有全部文件,否则您什么也做不了。
VOIP 尤其使用较小的数据包。如果您等到有大量数据要发送时再发送,那么从开始发送到结束的传输速度会更快 - 但另一端的人直到您说完这句话并开始发送时才会听到任何消息。
答案4
很简单,每个数据包都有一些开销。数据包传输所需的时间取决于其大小和网络延迟。
因此,一个小数据包将以最快的速度到达目的地。但如果您要发送大量数据,许多小数据包的开销加起来将非常可观。如果您发送较少的大数据包,则开销将保持较小,整体传输速度将更快。
总结一下:
- 对于较小的总数据量,小数据包是最快的
- 对于较大的总数据,大数据包是最快的