我想到了tcp slowstart算法,以及在tcp / ip网络上传输多个文件时的常见问题。
如果您传输许多小文件(即大小:50kb,金额:10,000),则需要比同时传输相同数据(50kb * 10,000 = 500,000 kb)的时间长得多。对我而言,这可能是一个原因,tcp slowstart是其中一个原因(当然还有其他东西,比如开销......)。
如果我正确地理解了slowstart,那么它会在没有收件人确认的情况下提高可以传输的最大数据量。如果我们现在为每个文件建立新连接,则slowstart会在每次传输开始时导致低吞吐量,并且由于slowstart算法增加了吞吐量 - 我们的文件将被传输并启动新连接。因此,我们永远无法达到优化的吞吐率。另一方面,如果我们传输一个大文件,slowstart会优化最大未确认的数据量,因此我们可以达到更高的吞吐率。
这个假设是否正确? 还有一个问题:对于c或c ++和.net,slowstart的实现是否相同?
请不要看到这是“为什么我的文件传输速度慢?”的副本,我问慢启动算法是否是为什么传输许多小文件很慢的原因。
答案 0 :(得分:1)
不,这不完全正确。慢启动与连接有关,而不是与同一连接发送的单个文件有关。只要建立连接,通过同一连接发送一个大文件或10个较小的文件并不重要。
解决方案是明智地使用连接。如果需要发送许多内容,请重用单个连接(模型HTTP 1.1)。
TCP协议的实现与应用程序的语言无关,它使用的是操作系统提供的相同协议栈。