windows xp SP2 的tcpip并发连接限制是怎么回事? - 服务器端程序开发 ...

来源:百度文库 编辑:神马文学网 时间:2024/04/27 18:34:52
windows xp SP2 的tcpip并发连接限制是怎么回事?
peakzhang 发表于: 2008-9-18 23:41 来源:ACE 开发者
我看了相关的材料,说是SP2默认限制了一个进程对TCP/IP的并发数量,一个程序默认只能建立10个TCP连接。但没有从微软找到相关的文章。
可是我使用了测试程序实际实验,安装了SP2的应用程序,可以对外并发连接到198个,后面的才出现错误,代码是121,有谁能够解释一下或者提供相关的资料呢?
最新回复
peakzhang at 2008-9-18 23:41:33我找到了一些资料:
关于tcpip.sys的10连接数限制
WinXP SP2后tcpip.sys的10 TCP/IP连接限制真正限制的是:
每个程序的并发新建连接数,而不是对于已经建立的TCP/IP连接的限制。
也就是说所谓10连接限制,是指一个软件不能同时发出10个以上TCP/IP的新建连接请求。
tcpip.sys的限制打个比方,就好像你在商店的试衣间试衣服,总共试多少套老板并不限制,但是每次拿进试衣间的只能小于等于10套。
其实理论上设256左右就足够了,即便是最热门的种子,同时与2000个其他用户新建连接也没什么可能。
peakzhang at 2008-9-18 23:42:01除了前面文章(Windows 2k/XP 注册表调节和更多有关win2k/xp的调节)中讲到的一些调节方法之外, Windows XP sp2也引入了一些问题,下面这篇文章讲述了这些方面。在对你的操作系统进行整修前,请确保自己清楚你正在做些什么。要注意的是下面这些信息只适用于window xp sp2。 移除TCP连接尝试限制
windows xp sp2对TCP/IP引入了一些新的变化,为的是照顾初级用户,并减少不能控制的却传播快速的蠕虫病毒的威胁。于是,可能的TCP/IP连接尝试次数被限制为每秒10次(SP1中无限制)。这个有争议的特性很可能会对那些需要同时开放许多连接的服务器和P2P程序产生影响。
Rant:微软开发者的想法是这样的,你只可以通过TCP/IP每秒感染10个新系统?!?…如果你考虑到每个被感染的系统仍然会以相同的速度感染10个其他的系统的话:
第一秒:a1=1+10台电脑
第二秒:a2=a1*(1+10)台电脑
第三秒:a3=a2*(1+10)台电脑
……
这样,一分钟之后就会有11^60(这是一个有60位数字的值,或者说,他远超过地球上的人数)台电脑被感染。即使我们认为这些电脑中的90%被保护着,但地球上的电脑仍然能够全部被波及。(Even if we consider that 90% of those computers are unreachable/protected,one would still reach all of them within a minite)。
总的来说,即使这个设置有阻碍蠕虫病毒散播的功效,它也只能是将他延迟几分钟,并且能稍微限制一点网络拥塞,同时限制你的电脑在运行时只能有每秒10次连接尝试。尽管如此,用户有取消或改变这个设置的决定权。这里我可能要岔开一下话题,从介绍windows XP到现在,我无法让自己去喜欢那些内置在windows中的"wisardry",意思是系统竟也限制用户的访问。想到windows代替最终用户做这些很“明智”的选择又限制用户通过访问来调节这些设置,那种要减轻用户的智力负担的意愿好像是一种侮辱,让人愤怒。
因为这个实现,如果P2P或其他网路程序要去立刻连接100个站点,结果只能每秒连接10个,这样导致要花10秒钟才能连接100个。另外,虽然这个设置在xp sp1系统的注册表中是可编辑的,但是现在,只能通过在tcpip.sys这个系统文件里作修改来改变它。更糟糕的情况是,这个文件是被使用的,所以要编辑它,你还需要进入安全模式。
如果你已注意到网络程序在同时打开较多个连接时会变慢,这时你只需要考虑的是每秒连接尝试的数量。你可以在事件查看器中检查你是否达到了这个极限。在“系统”栏里查找[url=]TCP/IP[/url]的警告:“TCP/IP 已经达到并发 TCP 连接尝试次数的安全限制。”谨记这只是一个幌子,掩盖不完全的每秒开放的连接尝试,而没有使用到全部的连接。(keep in mind this is a cap only on incomplete outbound connect attempts per second,not total connections.)“总之,运行的服务器和P2P程序一定会受到这个新限制的影响。
要改变或移除这个限制,你可以使用下面的程序:
Event ID 4226 Patcher-一个用来移除或改变强加在sp2中的连接尝试限制的补丁程序。这个补丁也可以恢复tcpip.sys到原来的状况…尽管这样,你仍可能需要备份tcpip.sys,我们对出现的可能情况不负任何责任。这个补丁的来源:http://www.lvllord.de/
手动编辑tcpip.sys,移除tcp/ip包生成限制
对敢冒风险的人的另一种方法是使用一个十六进制编辑器来手动修改你的tcpip.sys文件。下面的方法针对xp sp2最终发行版,而且他的tcpip.sys文件必须正好359,040 bytes, CRC-32 是 8042A9FB,同时MD5 是 9F4B36614A0FC234525BA224957DE55C。在你的系统中可能有好几个tcpip.sys文件,确保你修改的是c:\windows\system32\drives\目录中的。
要移除tcpip.sys包生成限制:
-在开始编辑之前请先备份tcpip.sys文件,这比较重要!
-在十六进制编辑器中,定位到偏移量为十六进制数4F322 (或 十进制数324386)的位置。
-将0a 00 00 00 改为 00 00 0a 00
完工!上面的改变不需要对偏移量123hex上CRC的编辑(这里谢谢Thomas Wolf Tompkins,有这么聪明的解决方法)。
注意:
如果上面的数据不能完全吻合(crc,文件大小, md5和在偏移量4F322上的数据),请仔细检查你的行为,或者完全中断此次修改。
上面的信息会增加对外连接的速度。(我对下面这段技术把握不准,所以没敢妄加翻译)但对于工作站PC上文件共享的10个连接限制没有任何影响 (这是 MS强加的限制,以迫使你升级你的操作系统到服务器版本)。网络共享10个连接的限制被引入NT4工作站(SP3)中,并存在于Windows 2k 工作站和Windows XP家庭版/专业版/媒体中心中。他只适用于鉴别windows 的服务,例如文件和打印共享。 (It only applies to authenticated windows services, such as file and print sharing.)
本文翻译自:http://www.speedguide.net/read_articles.php?id=1497,尽管做出了努力,但仍有很多地方翻译得很晦涩,希望多多指教讨论。