我家里有 2 台相关计算机,一台无线,一台有线,连接到无线 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 导致的?
答案1
您的互联网速度测量
我认为这是一个测量单位错误,您的互联网速度以千比特为单位,而上传和下载往往以千字节为单位,这会给那些(非常正确地)期望以相同方式测量这些东西的用户带来困惑和痛苦。
您的互联网上行速度为 800-950 千比特,我们将其除以 8 得到以千字节为单位的速度:
950 / 8 = 118.75 kilobytes
对我来说,这听起来很像您所获得的速度,忽略随机跳转到 200kbps,这可能仅仅是由于突发、停顿、测量错误或其他异常事件造成的。
这样做的结果是您的互联网连接、计算机和网络都很好,缺点是您的互联网连接完全饱和,这使得网站请求和下载的数据确认难以通过。
我建议找一些带宽管理软件并尝试将上传速度减半,如果突然间一切都变得更具响应性,那么您的问题确实是互联网管道饱和了。
为什么上传会降低网速。
我只是想补充一些关于为什么互联网连接饱和会导致正常浏览的响应时间变慢......
几乎所有处理网络的程序都会通过某种 FIFO(“先进先出”)缓冲区来工作,这基本上意味着有一个数据队列进入机器,还有一个数据队列从机器出来。
通常,对于所有传入数据,任何等待数据的程序都能够很快清空其传入缓冲区并发回一个小的“确认”数据包以请求下一个数据块。该确认被放入传出队列,并且由于通常没有太多的传出流量,因此几乎立即将其置于传出队列的前面,因此下载和确认的循环继续进行。
当你开始上传时,这个 FIFO 队列就会成为一个问题。假设 Window可能队列有 400 千字节,我不确定,但目前看来这是一个合理的数字。这意味着当您上传一个 200 千字节的小文件时,它将被推送到队列中,程序可以继续并假设数据已发送或至少会很快消失,最多 1-2 秒,实际上几乎察觉不到。
但是,当你开始上传较大的文件时,这个队列就会成为瓶颈,一个程序以允许的最快速度填满这个队列,这意味着另一个只想发送一个小型“给我这个网页”请求的程序将不得不等待整个队列的完整长度,对于一个 400 千字节的队列,大约 125 千字节的带宽意味着它将需要至少在它到达最前面并离开队列之前 3 秒钟,它可能会很快收到一块数据,因为下游缓冲区几乎是空的,但是“向我发送更多数据”请求将需要另外 3 秒钟才能再次离开队列。
正是在队列中等待的时间会导致网站请求在上传数据时超时,大多数网站和浏览器都经过调整,预计从请求数据到开始接收数据的时间不到一秒,因此设置这么大的缓冲区会导致比预期的延迟大得多。随着队列缓冲区变大,任何请求通过队列并进入实际互联网的时间也会变长。
当您限制任何给定程序的带宽时,您实际上正在做的是降低该程序将数据放入队列的速度,这意味着队列的清空速度可能比队列的填充速度更快,从而防止队列变满。将数据或请求放入队列的任何其他程序都可以预期更短的时间到达队列的前面(因为它不再接近满),因此连接似乎“工作得更好”。
哇,这比我预期的要长。
答案2
好的,首先介绍一些事实:
- 您有一个具有一定带宽的“上游”和一个具有一定带宽的“下游”。
- 最后两台机器都使用相同的互联网连接(相同的调制解调器),对吗?这是“一个管道”。
- 当你通过 HTTP 下载数据(下游)时,你收到的每个数据包都会触发一个确认数据包(承认数据包)将被发送回服务器(上游)。这样,服务器就知道它是否必须重新发送一些数据,或者您是否已收到所有数据。
现在让我们想想: 如果您在一台机器上上传大量数据,那么您将使用大部分上行数据。没有太多“空间”容纳其他数据包 - 例如确认数据包。因此,如果您从另一台机器下载,它无法以维持一定下载速度所需的速度确认收到的数据包。下载速度需要减慢。
哦不——我们该怎么办? 尝试降低或限制“无线”机器的上传速度。这样,就有更多的带宽用于确认数据包和下载,上网和其他事情应该会很快两个都机器又来了!
答案3
您需要路由器支持服务质量。如果您的路由器支持该功能,它将允许您优先处理某些类型的流量或将部分带宽分配给某些类型的流量。您可能能够通过上传/下载、端口号(== 数据包类型:VOIP、Web 等)或本地 IP 地址来指定流量。
编辑:我没有在简短的搜索中找到您的路由器手册,但至少有几个参考资料表明它支持 QOS。
答案4
作为一个“不太特别”由于我使用过比您更早的、仅有线的 Belkin F5D5231-4 路由器,我很容易怀疑您的路由器。
毫无疑问,问题的一部分还在于您已经达到了总带宽的极限,正如其他答案所暗示的那样。但由于我不喜欢 Belkin 重新贴牌的任何路由器,所以我建议您尝试借用另一台较新的非 Belkin 路由器,看看是否能注意到差异。
我的猜测是 Belkin 的处理器功率不足,在流量很大时无法跟上。(这是一种降低制造成本的可能方法,不是吗?)不过,除了试用另一台(希望是更好的)路由器外,我不知道还有什么简单的方法可以验证这一点。
有没有理解并热爱技术的朋友可能要去度假并且愿意在不使用路由器时借给你?