Что такое торрент

Торрент | torrent — это сетевой протокол для обмена файлами. Файлы разбиваются на небольшие части и в таком виде передаются по сети. Торрент-клиент | torrent-client  закачивает эти части и затем собирает у себя файл воедино. В процессе скачивания кусочков  клиент также отдаёт уже закачанные части, что позволяет передавать торренты с большой скоростью и без ожидания освобождения источника (раздающий называется «сидер», от англ. seedсеять).
Датой появления технологии торрентов считается 4 апреля 2001 г., когда Брэмом Коэном был написан первый  торрент-клиент. Выход первой версии состоялся 2 июля 2001 г.

Принцип работы протокола BitTorrent

Для того, чтобы скачать торрент-файл, клиент соединяется с торрент-трекером | torrent tracker, передаёт ему информацию о своём IP-адресе и хэш-сумму файла, который требуется скачать. Трекер отправляет клиенту IP-адреса других клиентов, также раздающих или качающих торрент. В процессе скачивания клиент регулярно общается с сервером, сообщая информацию о скачивании и получая обновлённый список IP-адресов.

Клиенты передают данные напрямую друг другу без участия торрент-трекера. Трекер только собирает данные о клиентах в процессе скачивания, подключённых клиентах и другую информацию. Для оптимальной работы торрент-протокола нужно, чтобы максимальное количество клиентов могло принимать и отдавать файлы. При некорректной настройке межсетевого экрана (брандмауэра) или трансляции адресов (NAT), скорость передачи может значительно уменьшиться или прекратиться совсем. 

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

Клиент может приостановить отдачу частей файла другому клиенту, что делается для оптимизации раздачи. Приоритет отдаётся тому принимающему (принимающий, который ничего не отдаёт, называется «личер», от англ. leech — «присасываться, как пиявка», а тот, кто ведёт двусторонний обмен, называет «пир», от англ. peer — «равноправный партнёр»), кто сам отдал вам большее количество частей. Иными словами, чем больше отдал вам пир, тем больше вы отдаёте ему. Благодаря такой особенности более высокую скорость скачивания получают те торрент-клиенты, которые отдают с большей скоростью. Девиз торрент-протокола:  «Скачал сам, дай скачать другому!»

Особенности торрент-протокола

  1. Нет очередей скачивания, т. е. не требуется всем стоять в очереди к источнику / сидеру, чтобы скачать файл.
  2. Торрент загружается частями; чем меньше распространён фрагмент файла, тем чаще он будет отдаваться. Это значит, что наличие раздающего / сидера не обязательно для того, чтобы скачать все файлы раздачи. Протокол распределяет фрагменты между клиентами так, чтобы в дальнейшем они могли обмениваться частями без участия раздающего.
  3. Клиенты работают напрямую друг с другом. Торрент-трекер (то есть центральный координирующий сервер) напрямую не участвует в обмене.
  4. Загруженные части файла сразу же становятся доступными для других.
  5. С помощью контрольной суммы отслеживается целостность каждого скачанного кусочка.
  6. Передавать можно сразу группу файлов, например, целиком всю папку с файлами. При этом разбиение на кусочки происходит без учёта границ файлов, то есть какой-то кусочек может захватывать конец одного файла и начало другого.