Методы
Клиент-сервер
Наиболее распространенный метод. Центральный сервер посылает файл целиком каждому, кто в нем нуждается - так работают протоколы HTTP и FTP. Единственное преимущество этого метода - он прост в реализации и использовании. Эта модель может давать сбои - как только сервер становится слишком популярным, и как только размер данных начинает быть слишком большим.
Зеркала
Концепция "зеркалировани" лишь отчасти решает эту проблему, поскольку требует сложной настройки "отзеркаливания" серверов и распределения загрузки между ними.
Клиент-клиент (p2p)
Вторые по популярности - p2p системы, такие как Kazaa, eDonkey, Gnutella, Direct Connect, etc. Пользователи сети обмениваются файлами, напрямую подсоединяясь друг к другу.
Преимущество:
- файлы не обязательно должны находится на одном сервере.
Недостатки:
- невозможно отследить содержимое файлов. Именно поэтому эти сети получили огромное распространение среди любителей музыки, фильмов и особенно warez.
- проблемой стали популярные данные, к которым обращается наибольшее количество людей, поскольку за новыми файлами буквально "выстраивались очереди", то скорость скачивания уменьшалась пропорционально количеству запросов на этот файл.
- в большинстве p2p систем количество соединений между пользователями ограничено, и зачастую пользователи обратившиеся за каким либо файлом попросту получали отказ.
- не полностью скачанные файлы также были проблемой для пользователей, поскольку заранее определить "целый" ли запрошенный файл или не невозможно.
Результатом этих проблем стало падение популярности многих сетей и введение запретительных правил для пользователей, участвующих в них.
Метод клиент-клиент (торрент)
Однако взяв на вооружение опыт Usenet, где информация распространяется между пользователями по цепочке, где каждый из пользователей может скачать информацию и при этом внести свою, не разрушая логическую целостность группы. В результате файлы, распространяемые по Usenet стали наиболее удобным способом для массового распространения файлов. Как следствие - группы новостей превратились в потоки сообщений из цифровых данных.
Битторрент похож на Usenet в этом. Он наиболее подходит для распространения новинок, которыми интересуется большое количество людей. Старые или мало используемые файлы распространяются в нем медленно или вообще недоступны.
Все кто скачивает данный файл одновременно являются и распространителями уже скачанных ими фрагментов. Так что вы скачивая недостающие фрагменты файла одновременно распространяете уже скачанные вами фрагменты другим. Тем самым вы "помогаете" другим а "другие" в свою очередь "помогают" вам.
Результат таков, что скорость скачивания в идеале ограничена лишь пропускной способностью вашего канала. В реале - она сильно зависит от количества людей качающих этот файл. То есть, чем больше людей, тем больше количество потенциальных источников распространения этого файла. А поскольку торрент-клиент поддерживает многопотоковость, то как следствие - выше скорость!