假设我有几个不同大小的文件(10KB、100KB、1MB、10MB、100MB)。开始以每秒 2MB 的速度单独传输这些文件的网络将根据下载或上传该特定文件的开始和停止时间戳返回不同的最终吞吐量。当然,较大的文件将获得非常接近 2MB 的最终吞吐量,但 10KB、100KB 和 1MB 可能会少得多。
因此最终吞吐量可能会变成这样:0.2MB/s 0.5MB/s 1.2MB/s 1.95MB/s。
我知道存在初始连接延迟。例如,如果我使用scp
,则发送空文件可能需要大约 0.2-0.3 秒的时间。从总时间中减去初始延迟来计算吞吐量并不会为所有文件产生相同的吞吐量(我无法使所有文件的无延迟吞吐量等于 2.0MB/s)。
还有什么其他因素会影响这个吗?网络速度是否逐渐升至 2MB,导致较小的文件(10KB、100KB、1MB)看起来具有较小的最终吞吐量(因为在最快速率可用之前数据已经发送)?
答案1
这比减去连接延迟更复杂。 TCP 窗口调整和缓冲区的功能是可见的,它是动态调整的,对于较大的文件,它是可见的,因为速度从非常低的速度增加到网络吞吐量限制。
更多信息可以在这里找到:
https://en.wikipedia.org/wiki/TCP_tuning#Window_size
或者描述1000多个单词的图片:
http://www.linuxfoundation.org/collaborate/workgroups/networking/tcp_testing