`
KongFUN
  • 浏览: 19821 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
最近访客 更多访客>>
社区版块
存档分类
最新评论

迅雷下载为什么会卡

阅读更多
如果您和其他人通过同一个 路由 器连接着电信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”的一个参数,它存在于TCPIP.SYS文件中。这就是那个备受各种修改软件以及国内下载软件关注的参数。所谓半开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”的连接都是半开连接。
分享到:
评论

相关推荐

    如何调用迅雷下载API-迅雷源代码开放平台.zip

    迅雷下载API是迅雷公司为其开发者社区提供的接口,允许开发者在自己的应用程序中集成迅雷的下载技术。这个"如何调用迅雷下载API-迅雷源代码开放平台.zip"压缩包包含了关于如何利用迅雷API进行下载操作的详细资料和...

    迅雷下载接口java实现

    本话题将深入探讨如何使用Java实现迅雷下载接口,这是一项利用迅雷的动态链接库(DLL)和C++开放接口来提升下载效率和稳定性的技术实践。 首先,我们需要了解迅雷的C++开放接口。迅雷为了方便开发者集成其下载功能...

    易语言迅雷下载引擎模块源码

    本资源提供的是易语言迅雷下载引擎模块的源码,它允许开发者利用迅雷的下载技术来构建自己的应用,提高下载速度和稳定性。 迅雷下载引擎是迅雷公司开发的一种高效、稳定的下载管理技术,广泛应用于迅雷下载工具中。...

    python调用迅雷sdk实现迅雷下载

    python调用迅雷sdk实现迅雷下载,不需要安装迅雷实现迅雷下载,所有调用的接口具体介绍,参考迅雷云加速开放平台文档 http://open.xunlei.com/wiki/tutorial.html 迅雷SDK只提供了32位的版本.所以python版本必须为32位...

    制作迅雷下载 链接生成器

    迅雷下载链接生成器是一种工具,它允许用户创建可以直接通过迅雷下载的链接。这个工具在互联网上分享大文件时非常实用,因为它可以利用迅雷的高速下载技术,提高文件传输的效率。以下是对这个话题的详细解释: 一、...

    迅雷下载宝breed不死固件和PandoraBox固件

    在本文中,我们将主要探讨两个重要的固件类型——Breed不死固件和PandoraBox固件,以及如何为迅雷下载宝安装这些固件。 1. **Breed不死固件**: Breed是一款知名的开源路由器固件,以其稳定性和易用性而受到用户...

    arcgis10官方中文版迅雷下载地址

    arcgis10官方中文版迅雷下载地址arcgis10官方中文版迅雷下载地址arcgis10官方中文版迅雷下载地址arcgis10官方中文版迅雷下载地址arcgis10官方中文版迅雷下载地址

    JS生成迅雷下载地址

    本文将详细讲解如何使用JS生成迅雷下载地址,以便用户可以直接通过迅雷客户端进行下载。 首先,我们需要理解迅雷下载地址的工作原理。迅雷是一款流行的下载管理器,它支持通过特定的链接格式(称为“Thunder Link”...

    易语言源码迅雷下载引擎模块源码.rar

    在“易语言源码迅雷下载引擎模块源码.rar”这个压缩包中,包含了一些关键文件,让我们来深入探讨其中所涉及的知识点。 1. **XLDownload.dll**: 这是一个动态链接库(DLL)文件,它是迅雷下载引擎的核心组件。DLL...

    迅雷下载引擎SDK(C#版Demo)

    这份DEMO就是针对资源《迅雷下载引擎SDK》写的一个调用示例。并非我项目的代码,我自己的系统已经把这个资源构建成了主力传输的核心。不方便共享。代码中包含的仅是如何调用迅雷引擎及完成下载,其余的就小伙伴自行...

    迅雷API接口_通过脚本调用迅雷自动下载资源.txt

    迅雷API接口是迅雷提供的一种高级功能,允许开发者通过编写脚本或程序的方式调用迅雷下载引擎,实现自动化下载任务的管理。这对于需要频繁或批量下载文件的应用场景非常有用,可以显著提高下载效率和自动化程度。 *...

    解决迅雷下载问题的方法

    ### 解决迅雷下载问题的方法 #### 迅雷极速版简介 迅雷极速版是一款于2014年3月24日由迅雷官方推出的一款下载工具。该软件相较于其他版本的迅雷,有着显著的特点,即无广告、无插件、无捆绑,启动速度快,下载速度...

    迅雷5(2个版本,包含1.8M的单迅雷下载程序)

    本压缩包包含了两个版本的迅雷5,特别值得一提的是其中有一个是仅1.8M的精简版,专为那些对迅雷7的资源占用、运行卡顿以及速度不满意而设计的用户准备。 迅雷5作为早期的版本,其核心功能在于提供高效的多线程下载...

    迅雷配置器 能优化你的迅雷是你下载更快

    迅雷是一款在中国广受欢迎的下载工具,以其高速的下载能力和多任务处理能力赢得了用户的青睐。迅雷配置器是专门针对迅雷软件进行个性化优化的工具,旨在帮助用户更有效地利用迅雷,提升下载速度和效率。本文将详细...

    32位迅雷下载SDK工具库,包含示例

    总的来说,32位迅雷下载SDK工具库是一个用于C#开发者的宝贵资源,它使得开发者能够利用迅雷强大的下载技术,提升应用的下载性能,为用户提供更流畅的下载体验。通过深入理解和实践"ThunderSDKDemo"中的示例,开发者...

    迅雷专用下载链接代码

    根据给定的文件信息,我们可以深入探讨“迅雷专用下载链接代码”的相关知识点,这将涵盖如何使用不同的编程语言(如JavaScript、JSP、ASP、PHP)来创建专门用于迅雷下载的链接。 ### 一、理解迅雷专用下载链接 ...

    迅雷下载引擎SDK

    我工作的原因,一度需要用到大量资源下载,曾经的迅雷COM组件用过,但无法达到无人值守,需要人工干预。曾经我的一个同事就天天盯着迅雷长达半年,终于在迅雷官方关闭SDK申请之前被我找到了这个可用的SDK,至今我们...

    迅雷下载开发包

    迅雷下载开发包是一款专为开发者设计的工具,它提供了API接口,允许程序员在自己的应用程序中集成迅雷的下载功能。这个开发包包含了必要的DLL动态链接库和C++的示例代码,帮助开发者快速理解和应用迅雷的下载技术。 ...

    迅雷下载链接解析工具

    迅雷下载链接解析工具是一款专为了解决特定下载工具限制问题而设计的实用软件。它主要功能是将迅雷、电驴(eMule)、旋风等非标准下载链接转换成通用的HTTP链接,使用户能够用任何支持HTTP协议的下载工具或浏览器...

    java防迅雷下载源码

    【Java防迅雷下载源码】是一个基于Java编程语言实现的软件项目,旨在防止迅雷等第三方下载工具对特定资源的快速抓取和下载。这个项目的核心在于提供一种策略,使得只有通过特定的方式或者特定的客户端才能访问和下载...

Global site tag (gtag.js) - Google Analytics