В одном, достаточно специфическом случае, появление "красных раздач" неизбежно и определяется особенностями реализации стека TPCP/IP в Windows XP SP2, Windows Server 2003 SP1 и Windows Vista.
Речь идет о случае, когда ваш клиент вынужден обрабатывать большие списки пиров. Например, в вашем клиенте есть одна или несколько раздач / закачек с количеством пиров 150 и более и включенным DHT. Такое не редкость на англоязычных трекерах или здесь, когда перераздают релизы с других трекеров, а DHT в торрент-файле не отключают.
В этом случае из-за медленности обновления данных DHT часть пиров, полученных клиентом, неизбежно будет уже off-line. Клиент, тем не менее, попробует связаться с каждым пиром из полученного им большого списка пиров, включая и «мертвых душ».
Вот тут клиент и наступает на грабли. В указанных Windows есть жесткое ограничение на количество устанавливаемых (именно устанавливаемых, а не установленных) TCP соединений – 10 штук. Как только этот лимит будет достигнут, новые соединения будут устанавливаться по мере освобождения лимита, но не быстрее 10 соединений в секунду.
С пирами on-line соединение устанавливается быстро, как только от пира пришел ответ (30 – 100 мс), а если в лимит попадает соединение с off-line пиром, начинаются тормоза, т.к. пир место в лимите из 10 занимает, а ответа нет. Как только в лимит попали 10 off-line пиров, и еще несколько таких же ждут в очереди, соединиться не может ни одна программа – у всех у них фиксируется тайм-аут при попытке установления соединения и вы видите сообщение «трекер off-line».
Резюме:
Если у вас в Пуск-Панель управления-Администрирование-Просмотр событий-Система есть Предупреждение Код 4226 «Достигнут предел безопасности для TCP/IP, налагаемый на количество попыток одновременных TCP-подключений.»
И если в командной строке в ответ на
netstat -no | find "SYN" появляется 10 строк с пометкой “SYN_SENT” и 8 – 10 строк с пометкой “SYN_RECEIVD” - это тот самый случай.
Рекомендация:
Если вы поддерживаете политику безопасности Microsoft – смириться, если нет – отпатчить драйвер TCPIP.SYS, и не забывать патчить его ежемесячно по мере выхода обновлений от Microsoft.
Взять патч можно здесь
http://www.lvllord.de/.
Некоторые антивирусы на него ругаются, т.к. этот патч входит как составная часть в дистрибутивы некоторых сетевых червей и противоречит политике безопасности Microsoft.