
First of all this won't affect the average user. All those who use multi threaded downloads in areas such as: scraping, file sharing, port scanning, … And this applies to all of you who have large bandwidth and need many concurrent connections established simultaneously.
Fighting worm spreading at the speed of light, Microsoft decided it's time to TCP/IP limit their non-server editions. So instead of fixing the problem the decided to limit the speed of the worm spread. They have a limit present in XP SP2 (not in SP1) and XP x64 editions (maybe Vista too) that will not allow you to have more than 10 half-open connections during one second. And this limits a lot of legitimate uses of TCP/IP:)
When you use the Sockets connect() function there are several ICMP requests that travel between sides before your function actually returns and gives you the success or failure notification. In that small delay between connect() is called and connect() succeeds a socket is called half-connected. In that short interval Microsoft imposed the limit on sockets in Windows.
So if you start a multi threaded downloader with over 10 threads, threads number 10-19 will only connect in second two giving you a one second delay. It may seem small but it does matter and the difference is huge for me as I connect 100s of sockets at same time.
Let's say you are in a rock throwing contest. You are the best, a freaking cannon and you can throw 100s of rocks in one second. But there's a rule which will never allow you to show your true skill. The rule claims: no more then 10 stones can be in the air during one second. So if you throw 10 rocks in 1/10 of a second you will have to wait the rest of 9/10 of a second. But you could have thrown 100 rocks per second yet they limit you to 10.
I found out about the limitation here and I found my XP x64 Pro TCP/IP Patch (the 1000 limit) here. These sites will show you where to get the patch and how to apply it to tcpip.sys. Do not use tools to patch. Get a patched tcpip.sys file, start Windows in Safe Mode without networking support and backup the old file in several places (and rename it to tcpip.old) :) and overwrite. Patching executables can't patch it as it's open at all times in a non safe-mode environment and it's better to backup and overwrite it by hand.
This has been the difference between heaven and hell for me. I'm consuming my entire bandwidth now when doing the nasty things! Do let me know how it feels…
Post Feedback