最近一段时间在BBS上,看到了许多关于
TCP连接数的讨论。其中有以理论为重的研究者的言论,也有以实用感受为重的使用者感想,无论是哪一种论调,都让我涨了知识,对TCP半开连接数有了一定的了解。于是,我也在自己的BLOG上发表一下自己的想法。
首先,无论是XP或VISTA系统中所作的
连接数限制并不是限制系统的TCP的连接数量,而是TCP 的
半开连接数。所谓TCP半开连接,就是发送了TCP连接请求,等待对方应答的状态(也就是连接尚未完全建立起来,双方还无法进行通信交互的状态。)
这里要说一个概念:
引用:
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。上述是一个完整的TCP连接过程。
在完成三次握手之后,TCP连接已经建立,那么对系统来说,这就是一个TCP连接数。系统对这样一个
数 没有限制。
如果三次握手没有完成,客户端与服务器没有开始传送数据,那么,这样试图完成三次握手的事件发生 的
数 是被系统所限制的。而这个数就是所谓的半开连接数了。
引用:
为什么一开BT就超级慢呢.问题的根本在于BT是频繁的建立TCP连接.并且是同时建立.所以导致有大量的SYN包.
TCP是Layer 4.从技术角度说是非常耗费资源的.无论是系统资源还是网络资源.在同时并发1000个左右的连接请求的时候.
你可以想象你的网络带宽里都充斥着SYN包.所以频繁建立TCP连接才是让BT影响网络的根本原因.
下面再说
两个概念:一是系统所限制的TCP半开连接数,二是P2P软件所设定的TCP半开连接数。
我先举个例子:相信大家都上过高速,走过收费站。我在过江阴大桥的时候会经过一个收费站,那里大概有十几二十个收费通道。我把这个收费通道比做TCP半开连接数。这里需要做个说明:不考虑已经建立会话的TCP连接,把收费站理想地当成半开连接数发生的地方。
比如,这里的收费站只有20个通道(即系统限制的TCP半开连接数为20),同时最多只有有10辆车可以要求过收费站。但是如果此时有100辆车要求同时过收费站,那么必须在收费站再新建立80个收费通道(假设这样通道可以随时被建立起来),但这样就超出了限制,不会被允许。
同样的,P2P软件所设定的TCP半开连接数超过了系统所限制的数量,它们在下载文件的时候不断建立新的半开连接,系统自然会给出EventID 4226事件警告。
遇过这种情况应该怎么办呢?
要做三个修改:一是修改系统所限制的TCP半开连接数,二是修改P2P软件所设定的TCP半开连接数,三是修改P2P软件所允许的最大TCP连接数(已经开始传送数据的连接数量)。
一是修改系统所限制的TCP半开连接数
相信大家应该都在高速上堵过车,我最惨的一次是从上海回来,原本2个小时的车程,硬是花去我9个多小时的时间。但今年五一过江阴大桥的时候,在收费站没有收费就过去了,当时还高兴一下,但很快就发现,离收费站不远的地方设立一个临时收费站,这个地方比较宽,增加几个收费通道,实在有利于车辆的快速流通的有效措施。
这里所做的临时措施就相当于修改系统的TCP半开连接数限制了,当然修改系统文件并不是每个人都可以的,但网络上的修改工具到处都是。修改了TCP半开连接数限制,可以帮助更快地找到你需要的连接来下载文件。就BT下载而言,我们需要的是优良的种子和对方给我们的下载速度。
二是修改P2P软件所设定的TCP半开连接数
我们也不能把系统所限制的TCP半开连接数改得过大。因为每进行一次半开连接都会系统(包括路由器、防火墙、操作系统等)引入额外的开销,过多的半开连接数只会导致系统资源紧张、不稳定甚至崩溃,反而会影响网络的实际传输。
其实这个才是影响BT下载时不能浏览网页的主要因素。再者,可能会被黑客利用,散布虚假资源信息或进行DDoS攻击等手段。虽然我还没有碰到过类似的攻击,但不得不防啊。
三是修改P2P软件所允许的最大TCP连接数
这里补充一下:
无论是否修改系统所限制的半开连接数,都不会对下载文件的最高速率有影响。也就是说,不会提高下载的最高速率。
如果已经建立了适当的连接,就没必要拥有更多的连接,这样反而可能造成网络负担。
到这里有人就说了,你说了半天又是在说废话。是啊,每个人的硬件和网络环境不一样,实在很难拿出一个两全的方案。那我就说一下
我的情况吧:
我现在的操作系统是VISTA SP1,也破解了TCP半开连接数限制。不过,这个破解工具很好(远景论坛的),可以实时查看当前的连接有多少。我先是将半开连接数的限制修改到无限大,然后在下载文件的时候实时查看。在高速下载的情况下我发现,连接数有时候很少,只有4或者5;而有时候很大,会有113左右。所以,我重新将我的半开连接数限制改为了100。同样的,我也将P2P软件的半开连接数和连接数也要重新设置,这样也不会有4226事件了。
耳语:
欢迎诸位看官交流!希望不要攻击我,我心灵脆弱的说。
耳朵不在西
www.windsn.com
[
本帖最后由 sunset 于 2008-5-23 11:33 编辑 ]