引子
至少在3年以前,包括迅雷在内的很多下载软件都提供了“修改(破解)操作系统‘TCP半开连接’数量限制(简称“半开连接数”)”的功能,但是有部分用户并没有正确的理解这玩意儿。
什么是“TCP半开连接”及“限制”?
所谓“TCP半开连接”,简单的说就是发起了TCP连接请求,但尚处于建立连接阶段,双方还无法进行互相通信的状态。
那么“TCP半开连接数量限制”就是指,限制连接发起者最多同时存在“TCP半开连接”的数量。
在Windows XP SP2中,微软首次引入了半开连接数限制,限制数量:10。限制包括了后续的XP SP3、Windows 2003、Windows Vista 、Vista SP1。
【但是微软在Windows 7、Vista SP2、Windows 2008中没有启用半开连接限制】
为什么要修改“TCP半开连接”限制,这样的限制会导致什么?
一、连接多资源的效率降低
如果我们将上面“建立连接阶段”比喻为正在食堂打饭的顾客,就容易理解多了。
1、TCP半开连接被限制为10,就相当于这座食堂有10个窗口可以同时打饭。
2、系统有大量,远超过10个建立TCP连接的请求,就相当于这座食堂有很多顾客光顾,却不得不排队等着前面那10位顾客打饭。
显而易见的,TCP半开连接数限制导致建立TCP连接的效率降低了。套用到下载工具上,由于迅雷下载时可能存在大量需要通过TCP连接进行下载的候选资源,因此就导致连接多资源的效率降低了。
二、当某程序占满区区10个半开连接后,将影响其他应用程序发起TCP连接请求
假设发起连接请求的是都是同一个程序(比如“迅雷”),这时其他程序(比如“浏览器”)的发起连接请求也得排队,由于排队的耗时。就出现了使用迅雷下载时,打不开网页或打开变慢的情况。
微软为什么限制“TCP半开连接”数量?
按照伊文的理解,限制“TCP半开连接”数量的原因,是微软为了防范类似“冲击波病毒”爆发时。受感染的机器发起成百上千的连接,攻击其他计算机的情况。
但是前文中提到“微软在Windows 7、Vista SP2、Windows 2008中没有启用半开连接限制”,但仍保留了限制机制。可能是因为微软决定在正常情况中无必要限制半开连接数量,当情况变化(例如类似病毒爆发)微软可能会重新开启半开连接数限制。