距离和毫秒可以影响下载速度多less?

让我们考虑A(客户端)和B(服务器),其中A从B下载。

如果你需要额外的信息,请让我知道。

这个问题涉及到与各种事情有关的几个问题。 我会尽量按顺序回答,然后提供更详细的解释。

(略微解释一下):

从A到B的跟踪路由返回的path长度为10跳,往返延迟为300ms。 它也显示了在第四跳时〜10%的数据包丢失。 在正常情况下,A和B之间的平均往返延迟在10ms到30ms之间。

按顺序解决这些问题:

  1. path中的跳数与有效吞吐量几乎无关。 重要的是端到端延迟,平均数据包丢失以及A和B中TCP堆栈的设置,特别是TCP窗口。 (更多细节在下面)
  2. 跟踪路由中第4跳丢包率为10%,不太可能是端到端连接问题的症状。 许多路由器实现控制平面监pipe或ICMP速率限制 (特别是跟踪路由所依赖的ICMP“TTL到期过期”消息的产生)的function。 测量数据包丢失的唯一可靠方法是检查TCP堆栈中的计数器,或者使用tcpdump / Wireshark从实际数据stream中捕获数据包,并使用协议分析器检查捕获。
  3. 到特定的互联网目的地的往返延迟将从10-30ms变为300ms是非常罕见的。 这种变化很可能是ISP内部灾难性路由策略变化的结果,并且可能会尽快纠正。 也许我能看到这种情况正常发生的唯一情况是在一个通过卫星备份与ISP相连的单一物理(以太网,DSL等)连接的站点上。

关于延迟对下载速度的影响,许多TCP实现被configuration为使用64k字节的接收窗口大小。 当两个主机(更具体地说是一个高带宽延迟产品)之间的高延迟连接时,这个窗口大小通常会限制您的有效吞吐量,因为TCP将停止传输缓冲数据,直到它开始接收已经从远端发送的数据的ACK为止。

编辑:根据您的pingplotterconfiguration如何,它可能不会提供您的连接损失的准确表示。 如果Pingplotter正在使用ICMP,那么在拥塞时networking可能会丢弃/排除此stream量的优先级,因为它不被视为“用户stream量”。 此外,由于上述原因,任何有关中间跳跃损失的数据应视为可疑。

如果可能的话,在主机上运行数据包捕获(例如,可以使用Wireshark完成),以及查看Wireshark中与应用程序正在执行的实际TCP对话有关的分析将会很有趣。

是的,networking连接的高延迟肯定会影响下载速度(如果TCP窗口相当大,将会产生较低的影响,以便源可以发送多个数据包,而无需等待每个数据包被确认)。 而任何重大的数据包丢失都会对性能造成灾难性影响,因为每次丢包时,在TCP重传超时期间,下载都将有效地停止。