2023年11月29日发(作者:)
如果您和其他人通过同一个路由器连接着电信ADSL Modem上网,其中一人使用迅雷等软
件下载的时候,您是否会觉得网络异常的“卡”,甚至连网页都打不开呢?
这样的案例实在是太多了,但是大家终未究其原因,一般情况下,大家应该会认为这个
在下载的人占尽了带宽,穷尽了网络资源,从而会要求他限速,比如,将当前的195KB/s
的自然速度手动限制为60 KB/s。但是,您可否注意到这样的两个问题:
> 为什么使用IE下载的时候,有时速度也是190 KB/s左右,却一点也不会造成网络过
度“繁忙”?
> 如果有人使用迅雷等下载软件进行下载,进行限速之后,仍然还是比较“卡”?
其实,如果您的电信带宽充足,这种由于一人或多人下载造成的“网络繁忙”均为假象,
笔者将在此文中详细地为大家阐述为何会出现此假象以及如何解决这一问题。
下面,我将结合一个案例进行一个Case Study。
此例中,共有6人通过同一台路由器共享中国电信4M带宽的ADSL连接。此刻,只有
三台计算机处于活动状态,其中IP地址为192.168.1.101的用户正在使用迅雷进行下载,路
由端的统计如下图所示:
如上图蓝色框选部分所示,该用户的当前流量为287003字节/秒,也就是280 KB/s左
右,这是这台正在下载的计算机的总网络流量。我们对图中红色框选部分所示的数据进行求
和,统计出当前所有计算机使用的电信宽带流量为2.3M左右,远小于带宽4M。
打开这位用户的迅雷,可以发现这位用户当前的下载即时速度为213.33KB/s,打开迅
雷的速度限制配置,可以发现全局最大连接数为256,有的用户甚至没有启用这个选项,让
迅雷自动增大全局连接数。如下图所示:
现在,我们将全局最大连接数启用,并且将其设为10,如下图所示:
我们可以发现,设置完毕后,网络通畅了许多,用浏览器打开网页也不怎么“卡”了,而
且,等一段时间之后,你可以看见上图中的即时速度几乎与之前没有太大变化,偶尔即时速
度还可以达到248.06KB/s。
那么这究竟是为什么呢?我们要讲述以下四个概念了:
全局最大连接数:迅雷里面的“全局最大连接数”是指迅雷软件可以使用的最多连接数。
此连接数为全开连接数,它必须小于半开连接数,否则为无效设置。
全 开 连 接 数:已经建立并在使用中的连接数。
半 开 连 接 数:又名“并发连接数”。就是XP SP2及之后的Windows系统中限制为“10”
的一个参数,它存在于文件中。这就是那个备受各种修改软件以及国内下载软
件关注的参数。所谓半开TCP连接,简单地说就是发送了TCP连接请求,但还没有得到对
方应答的状态,也就是连接尚未完全建立起来,双方还无法进行通信交互的状态。在迅雷中,
修改它的位置如下图所示:
路由器“连接数”:主要是指并发连接数,它是路由器能够同时处理的点对点连接的数目。
在“您的当前连接数为”一栏中显示的即为系统当前的半开连接数。如果不是10,则说
明您的系统被修改过了。国内的下载软件总是说推荐设置为“256”或更高,这点我们在下文
中讨论。
好了,明白了以上三个概念之后,我们得讲一讲下载速度、“卡”与“不卡”等现象同全开、
半开连接数等参数之间的关系了。首当其冲的,我们需要了解连接数的具体意义。
要了解连接数,首先需要明白一个概念,那就是“会话”。这个“会话”可不是我们平时的
谈话,但是可以用平时的谈话来理解,两个人在谈话时,你一句,我一句,一问一答,我们
把它称为一次对话,或者叫会话。同样,在我们用电脑工作时,每一次完整的数据交换过程,
我们都可以把它叫做一个“会话”。说到这里,可能有人会说:这个是在电脑上的操作,跟路
由器有什么关系呢?事实并不是这样的,我们使用路由器的目的是共享上网,电脑说出去的
话都需要路由器来转发出去,对方电脑的回话也需要路由器转发回来,那么,如果是多台电
脑的话,路由器如何知道哪句话是谁说的呢?举个例子:张三、李四、王五说话,您都知道
哪句话是张三说的,哪句话是李四说的;那是因为您记住了他们说的话。路由器如果要分辨
的话,同样也要记住。在路由器内部维护着一张连接数表,是用来存放连接数信息,动态占
用一些内存、CPU。这张表的大小是固定的,如果某个时候,这张表被填满了;那么,再有
数据要出去的话,路由器没有办法转发。可以这么说:“路由器的连接数是有上限的,如果
其中的一部分电脑就用完了连接数,那么,其余的电脑就没法上网”。这就是为什么有的时
候下载速度并不高,但是其他人觉得很卡。因为,正在下载的计算机的全局最大连接数过大,
也就是全开连接数(正被占用的建立了连接的连接数)过大,耗尽路由器资源,他人得不到足
够的路由器连接数资源,就像有车却没有路,开不动。
那么,可能有人会说,“如果将全局最大连接数设置过小,比如10,肯定会降低我的下
载速度”。
其实不然,可以说,这个说法是错误的。下载速度与连接数之间并没有直接的普通数学
关系,而是一种概率统计的关系。速度大,连接数不一定多;反过来,连接数多,速度也不
一定大。只能这么说,连接数多的话,速度变大的可能性比较高,或者说,连接数大的话,
达到当前可能的最大下载速度所用的时间会稍稍短一些。举个例子,公路是八车道的,车流
量未知。如果就两辆车,他们可以使用两个车道就OK了,但是你却开启了全部8个车道,
并将其标记为只允许那两辆车使用,因此别人的车不能够上路,虽然明明有6个空闲的车道,
这是关于连接数占用的比喻。对于速度,我们打类似的比方,比如你要将一桶水装满,装满
就意味着达到了可以达到的最大速度,那么你一个人装,迟早会装满,但是多个人装的话就
会快一点达到装满的状态并保持,但是,如果你叫了一个人来,他什么也不做,那么他这个
人对于你更快装满这通水没有帮助,而且他被你叫来了,别人也叫不了他帮忙了。
在迅雷软件中,明显规定,全局最大连接数必须小于半开连接数。如果您的系统未被修
改半开连接数,那么您本应将全局最大连接数设为10或更少。
对于微软对半开连接数的限制,我们必须要认识到以下知识。半开连接数并不是越大速
度越快,就像上面说过的一样。限制半开连接数,也就是说限制的是在同一时间发起请求连
接的TCP 数量,TCP并发连接数,并不会影响系统的TCP连接总数。 P2P软件下载文件
时对源的请求链接就是半开链接,一个半开链接,要么对方返回响应建立正常的TCP连接,
要么超时断掉被释放,不会长时间存在的。
国内用户所使用的某些下载软件往往将自身的半开连接数设定的非常大(如256或更
高),远远超过了系统限制的10个,当这10个半开连接都被程序占用的时候,就会出现影
响正常网络使用,比如WEB浏览器开启网页缓慢。降低TCP半开连接数并不会影响下载
软件的最大下载速度,更高的半开连接数所能获得的只是提升下载达到最高速度的时间。
半开连接数没有必要设置得太大。因为每一个半开连接都会为系统(包括路由器、防火
墙、操作系统等)引入额外的开销,过多的半开连接数只会导致系统资源紧张、不稳定甚至
崩溃,却不能带来传输速率在实质上的提高。更加危险的是,在P2P网络中,一个黑客可
以通过散布虚假资源信息,引导大量客户端在短时间内试图与某个被攻击者建立连接,如果
半开连接数设置过大,将导致系统崩溃(路由器梗死、防火墙瘫痪或者操作系统崩溃等)。还
有其它很多DDoS攻击手段,限制TCP半开连接数,可以有效地防止DDoS攻击。
半开连接数量限制对上传、下载速率几乎没有影响。半开连接数限制充其量仅会在连接
时引入一点时延(从几毫秒到几百毫秒)而已。而数据交互是在已经建立的TCP连接上传输的
(与全局最大连接数有关),传输速率与半开连接数量无关。更何况P2P协议本身还有排队、
请求数据等,这些机制引入的时延都远远大于半开连接限制所带来的时延(例如,你连接了
数百个对端,但是传输数据的却只有其中的几十个而已,其中大部分都处于等待或闲置状
态)。因此,半开连接数限制对上传、下载速率几乎没有影响。
讲了这么多,可能您头都快晕了。我们简要总结一下:
> 下载软件的下载速度与连接数没有直接关系,源少而连接数多的话,速度还是低得
很,可是路由器上的其他用户却会因为路由器的连接数被耗尽而“卡”、得要死,网页都打不
开,直到您下载完。建议您将全局最大连接数改小;
> 为了获得更高的全局最大连接数,下载软件才提示您修改系统的TCP/IP半开连接数
(并发连接数),因为全局最大连接数(全开连接数)必须要小于半开连接数。将半开连接数设
置得过大有害而无益;
> 修改软件设置的话要注意弄清其含义,并不是什么参数都改得越大越好。
> 如果您的网络繁忙,也就是觉得很卡,要么是下载速度太高了,耗尽了带宽资源,
要么就是您的全局最大连接数过大,耗尽了路由器等硬件的连接资源。
最后,如果您要查看当前的连接,可以使用“netstat”命令,其中状态为ESTABLISHED
状态的都是已经建立的连接,也就是全开连接;状态为“Time_Wait”的连接都是半开连接。
发布评论