上传杀死互联网连接

The*_*eLQ 4 networking upload wireless-router

在我的房子里,我有两台相关的计算机,一台无线和一台有线,连接到无线 G 路由器(Belkin G F5d7234-4 V5),该路由器连接到我的互联网调制解调器。我的互联网是 Insight BB 10.0(实际速度:下行 10.4-9.8 Mbps,上行 800-950 Kbps)。

在无线计算机上,我想上传一堆视频。将它们排队并开始上传(这是 HTTP)。平均上传速度为 100-200 kbs。互联网很慢,但这是意料之中的。

出乎意料的是,当我使用有线计算机时。它是独立的,不必通过大量无线连接共享管道,但它仍然很慢,几乎达到运行 bittorrent 时的速度。

这令人困惑,因为我仍然应该有大部分管道空闲。即使上传管道被数据堵塞,它也不应该影响我的下载速度。HTTP 标头不大,应该不需要太多处理。我唯一能想到的是 TCP 的工作方式,即每个数据包都需要确认(或类似的东西,自从我上课以来已经很长时间了)。

是什么导致了这样的事情?是路由器问题、调制解调器问题、连接问题,还是只是 TCP 的结果?

Mok*_*bai 6

您的互联网速度测量

我认为这是一个测量单位错误,您的互联网速度以千字节为单位,而上传和下载往往以千字节为单位,这会给(完全正确地)期望以相同方式测量这些东西的用户带来困惑和痛苦。

您的互联网上行速度为 800-950 KB,我们将其除以 8 以获得以千字节为单位的速度:

950 / 8 = 118.75 kilobytes
Run Code Online (Sandbox Code Playgroud)

对我来说,这听起来很像您获得的速度,忽略随机跳跃到 200kbps,这可能仅仅是由于突发、停顿、测量错误或其他异常事件。

这样做的结果是您的互联网连接、计算机和网络都很好,不利的一面是您的互联网连接已经完全饱和,这使得网站请求和下载的数据确认难以通过。

我建议您找一些带宽管理软件,然后尝试将上传速度减半,如果突然一切都更加敏感,那么您的问题确实是一个饱和的互联网管道。


为什么上传会杀死互联网速度。

只是想我会添加一些详细信息,说明为什么使您的互联网连接饱和会导致正常浏览的响应时间变慢...

几乎所有与网络打交道的程序都会通过某种 FIFO(“先进先出”)缓冲区工作,这基本上意味着有一个数据队列进入机器和一个数据队列离开机器机器。

通常,对于所有传入数据,任何需要数据的程序都能够很快清空传入缓冲区并发送一个小的“确认”数据包以请求下一个数据块。该确认被放置在传出队列中,并且通常没有太多传出流量使其几乎立即到达传出队列的前面,因此下载和确认的循环继续进行。

当您开始上传时,这个 FIFO 队列就会成为一个问题。可以说 Window可能有一个 400 KB 的队列,我不确定,但现在这似乎是一个合理的数字。这意味着当你上传一个 200 KB 的小文件时,它会被推送到队列中,程序可以继续并假设数据已经发送或者至少会很快消失,比如 1-2 秒大多数,几乎不明显。

当你开始上传更大的文件时,尽管这个队列成为一个瓶颈,一个程序以允许的速度填充这个队列将意味着另一个只想发送一个小的“给我这个网页”请求的程序将不得不等待在队列的整个长度上转一整圈,其中一个 400 KB 的队列和大约 125 KB 的带宽意味着它至少需要3 秒才能到达前面并离开队列,它可能会收到一个数据块由于下游缓冲区非常空,因此很快返回,但是“向我发送更多数据”请求将需要另外 3 秒才能再次退出队列。

一直在队列中等待会导致网站请求在上传数据时超时,大多数站点和浏览器都被调整为期望从数据请求到开始接收数据的周转时间不到一秒,因此拥有这个大缓冲区在途中造成的延误比他们预期的要大得多。随着队列缓冲区变大,任何请求通过队列并到达实际互联网的时间也会变大。

当您限制任何给定程序的带宽时,您实际上正在做的是减慢该程序将数据放入队列的速度,这意味着可以以比填充速度更快的速度清空队列并阻止队列从吃饱。将数据或请求放入队列的任何其他程序都可以期望它到达队列前端的时间更短(因为它不再接近满),因此连接似乎“工作得更好”。

哇,这比我预期的要长。