Как это работает? | BitTorrent

BitTorrent — это сетевой протокол для обмена файлами через Интернет. Он был создан американским программистом Брэмом Коэном, который написал первый torrent-клиент «BitTorrent» на языке Python в апреле 2001 года. Файлы по такому протоколу передаются частями, а каждый torrent-клиент, получая эти части, в то же время отдаёт их другим клиентам. Как же работает протокол BitTorrent — об этом в сегодняшнем выпуске!

Принцип работы протокола заключается в том, что нагрузка на распространителя файла уменьшается благодаря скачивающим клиентам. Они начинают обмениваться данными сразу же, даже если файл не докачан ими до конца.

Для работы BitTorrent, как правило, необходим трекер — специализированный сервер, работающий по протоколу HTTP. Он нужен, чтобы клиенты, именуемые пирами, могли найти друг друга. Перед началом скачивания клиент подсоединяется к трекеру по указанному в торрент-файле адресу, сообщает ему свой адрес и идентификатор файла, который требуется скачать (он именуется хеш-суммой). В ответ клиент получает адреса других клиентов, скачивающих или раздающих этот файл. Впоследствии клиент периодически информирует трекер о ходе процесса и получает обновлённые списки адресов. Пиры соединяются друг с другом и обмениваются сегментами файлов без непосредственного участия трекера. Он лишь хранит информацию, получаемую от клиентов. Существуют также и бестрекерные системы, в которых трекер доступен децентрализованно — на клиентах в форме распределённой хеш-таблицы.

Как это работает? | BitTorrent

При соединении клиенты сразу обмениваются информацией об имеющихся у них сегментах. Обмен данными начинается, когда каждая из сторон имеет сегменты, которых нет у другой. Пир, желающий скачать сегмент, именуемый также личем, посылает запрос, и получает его от соответствующего клиента. После этого он проверяет контрольную сумму сегмента. Если она совпала с той, что записана в торрент-файле, сегмент считается успешно скачанным, и клиент оповещает всех о наличии у него этого сегмента. Если же контрольные суммы различаются, то сегмент скачивается заново.

Количество переданных сегментов подсчитывается, и если одна из сторон обнаруживает, что передаёт в среднем больше, чем принимает, она блокирует на некоторое время отдачу другой стороне. Это делается для более эффективного использования канала отдачи. При выборе кого разблокировать, предпочтение отдаётся клиентам, которые передали много сегментов.

Порядок обмена выбирается таким образом, чтобы сначала клиенты обменивались наиболее редкими сегментами: таким образом повышается доступность файлов в раздаче. Сами сегменты делятся на блоки размером от 16 до 4000 килобайт. Одновременно могут запрашиваться блоки из разных сегментов.

Как это работает? | BitTorrent

Когда скачивание почти завершено, клиент входит в режим, именуемый end game. Он запрашивает все оставшиеся сегменты у всех раздающих клиентов, что позволяет избежать замедления почти завершенной закачки.

При получении полного файла клиент становится сидом, то есть переходит в специальный режим работы, в котором он только отдаёт данные. Далее сид периодически информирует трекер об изменениях в состоянии торрентов и обновляет списки IP-адресов.

Источник

Похожие статьи

Добавить комментарий

Закрыть