更新时间:2022-09-16 17:46
所谓半开TCP连接,简单地说就是发送了TCP连接请求,但还没有得到对方应答的状态(实际上要复杂些),也就是连接尚未完全建立起来,双方还无法进行通信交互的状态。
半开连接数限制充其量仅会在连接时引入一点时延(从几毫秒到几百毫秒)而已。而数据交互是在已经建立的TCP连接上传输的,传输速率与半开连接数量无关。更何况P2P协议本身还有排队、请求数据等,这些机制引入的时延都远远大于半开连接限制所带来的时延(例如,你连接了数百个对端,但是传输数据的却只有其中的几十个而已,其中大部分都处于等待或闲置状态)。因此,半开连接数限制对上传、下载速率几乎没有影响。
因为每一个半开连接都会使系统(包括路由器、防火墙、操作系统等)引入额外的开销,过多的半开连接数只会导致系统资源紧张、不稳定甚至崩溃,却不能带来传输速率在实质上的提高。例如,在P2P网络中,一个黑客可以通过散布虚假资源信息,引导大量客户端在短时间内试图与某个被攻击者建立连接,如果半开连接数设置过大,将导致系统崩溃(路由器梗死、防火墙瘫痪或者操作系统崩溃等)。还有其它很多DDoS攻击手段。限制TCP半开连接数,可以有效地防止DDoS攻击。
TCP半开连接是指发送了TCP连接请求,等待对方应答的状态,此时连接并没有完全建立起来,双方还无法进行通信交互的状态,此时就称为半连接。由于一个完整的TCP连接需要经过三次握手才能完成,这里把三次握手之前的连接都称之为半连接。
为了便于理解,我们把一次完整的TCP连接比作汽车通过一座大桥,在通过大桥之前的行程都称之为TCP半开连接。TCP半开连接数就是大桥的车道,由于这个这个半连接数量如果设置过大,不仅耗费大量系统资源,而且还可能会遭受很多DDoS攻击。因此,出于安全考虑,默认XP SP2(包括SP3)只允许同时存在10个TCP半开连接,也就是说这个大桥只有10个车道,破解就是通过修改tcpip.sys,拓宽这个大桥,使之拥有更多的车道,也就是增加TCP半开连接数。这样如果同时需要过桥的汽车较多,过桥等待的时间就更短了(注意:不是在桥上通行花费时间,是等待上桥的时间),破解半开连接数的意义也仅此而已。
不过并非大桥越宽越好,大桥宽度要和实际车流量匹配,比如,只要设计50车道就足够车流顺畅通过,设计成100车道就是浪费了。一般来说,在2M、4M宽带条件下,TCP半开连接数只要设置为256左右即可。
需要注意的是,根据微软发布的windows7 sp1 旗舰版版本的使用情况以及微软之前发布的信息,windows7或许取消了半开连接数的限定。