Буквально сегодня боролся с этой проблемой. (Если кому интересно лог борьбы с проблемой в разделе Андеграунд->Музыка->БИ-2. Нечетный воин (2005))
А проблема была простая. Добрый человек залил многотомный RAR на несколько обменников. Я их поставил качаться и пошел спать. С утреца встал послушать и обломался при распаковке. Более детальный анализ показал что один из архивов
пришел битым, хотя качал я в один поток. Выяснил какой файл кривой, залил его еще раз и напоролся на те же грабли. Попросил заливающего проверить целостность файлов. Заливающий подтвердил что файло залито целиком и без ошибок из чего был сделан вывод что что-то не то с каналом до сервака, с которого я загружал файл. Tracert и пинг подтвердил мои догадки. Пакеты стопорились на маршрутизаторе на M9 (я на стриме сижу), т.е. они проходили, но с таймаутами больше 3 секунд. Стало понятно почему файл приходит кривой. Замечу что я качал в один поток!!!! Предсставляю что было бы если бы качал в несколько.
А теперь немного о причинах подобных глюков. Все маршрутизаторы как правило используют NAT (Network Address Table). Это таблица, по которой машрутизатор отпределяет куда отсылать пакеты. Как правило таблица эта не очень большая, но при нормальной согласованной работе каналов она не переполняется. Неделю назад в МТУ была авария, по слухам рубанули кабель Питер-Москва, по которому идет большая часть траффика МТУ на Запад. Анжинеры МТУ начали подключать альтернативные каналы (не всегда проверенные, на которох может стоять глючное железо или хреново сваренная оптика или паршиво обжатый коннектор). На данный момент часть кабеля восстановили, но пропускной способности еще пока маловато, да плюс ко всему наверняка после сварки оптики толком её не проверяли. Так вот в такой ситуации при большой нагрузке начинаются потери пакетов, при этом таблица NAT на машрутизаторах начинает расти как на дрожжах. После определенного критического момента машрутизатор начинает вытворять все что ему вздумается. Может не тот пакет ни туда отослать, может забить на проверку контрольной суммы и т.д. и т.п. Результатом подбных поглюкиваний становятся битые файлы.
Поэтому если на сервере источнике - файл целый, и на приемнике нет вирусов, кривого железа или софта, значит проблема в транспорте!!!! А именно в машрутизации. Поэтому еще раз повторяю, если при скачке часто приходят битые файлы ищите проблему в транспорте. Tracert и Ping позволяют определить эти проблемы с 99% гарантией. Если большие пакеты теряются, значит велика вероятность чего-нибудь не докачать.
Как лечить. 1. Пинать провайдера, причем настойчиво. От умных пользователей они отмахиваются как от назойливых мух.
2. Если есть возможность использовать HTTPS, SSL, SOCKS, VPN то лучше использовать эти протоколы. Эти протоколы будут долбить до тех пор, пока не получат пакет без ошибок.
3. Иногда бывает достаточно снизить скорость закачки (тот же FlashGet это позволяет делать)
4. Существует еще 1001 способ как бороться с этой проблемой, впрочем как проблема транспорта, далеко не единственная, вызывающая проблемы с закачкой.