BitTorrent
BitTorrent — это сетевой протокол для обмена файлами через Интернет. Он был создан американским программистом Брэмом Коэном, который написал первый torrent-клиент BitTorrent на языке Python в апреле 2001 года. Файлы по такому протоколу передаются частями, а каждый торрент-клиент, получая эти части, отдаёт их другим клиентам.
Как работает протокол BitTorrent
Принцип работы протокола заключается в том, что нагрузка на распространителя файла уменьшается, благодаря скачивающим клиентам. Они начинают обмениваться файлами сразу же, даже если файл не докачан ими до конца.
Для работы BitTorrent, как правило. необходим трекер — специализированный сервер, работающий по протоку http. Он нужен, чтобы клиенты, именуемые пирами (англ. peer — соучастник), могли найти друг друга.
Перед началом скачивания клиент подсоединяется к трекеру по указанному в торрент-файле адресу, сообщает ему свой адрес и идентификатор файла, который требуется скачать. В ответ клиент получает адрес других клиентов, скачивающих или раздающих этот файл. В последствии клиент периодически информирует трекер о ходе процесса и получает обновлённые списки адресов.
Пиры соединяются друг с другом и обмениваются сегментами файлов, без непосредственного участия трекера. Он лишь хранит информацию, получаемую от клиентов.
BitTorrent подсчитывает количество переданных сегментов и, если одна из сторон обнаруживает, что передаёт, в среднем, больше, чем принимает, она блокирует на некоторое время отдачу другой стороне. Это делается для более эффективного использования канала отдачи.
Порядок обмена выбирается таким образом, чтобы сначала клиенты обменивались наиболее редкими сегментами, таким образом повышается доступность файлов в раздачи. Сами сегменты делятся на блоки размером от 16 до 4000 килобайт.
Когда скачивание почти завершено, клиент входит в режим, именуемый end game. Он запрашивает все оставшиеся сегменты у всех раздающих клиентов, что позволяет избежать замедление почти завершённой закачки.
При получении полного файла, клиент становится сидом, то есть переходит в специальный режим работы, в котором он только отдаёт данные. Далее сид периодически информирует трекер об изменении состояния торрентов и обновляет списки ip-адресов.