Торрент | torrent -
это сетевой протокол для обмена файлами. Файлы разбиваются на небольшие
части и в таком виде передаются по сети. Торрент-клиент |
torrent-client закачивает эти части и затем собирает у себя файл
воедино. В процессе скачивания кусочков, клиент также отдает уже
закачанные части, что позволяет передавать торренты с большой скоростью
и без ожидания освобождения источника (сидера).
Датой появления
торрента считается 4 апреля 2001 года, когда Брэмом Коэном был создан
первый клиент, выход первой версии состоялся 2 июля 2001 года.
Принцип работы протокола торрент
Для того чтобы скачать торрент файл, клиент соединяется с торрент трекером | torrent tracker,
передает ему информацию о своем IP адресе и хэш сумму файла, который
требуется скачать. Трекер отправляет клиенту IP адреса других клиентов,
также раздающих или качающих торрент. В процессе скачивания клиент
регулярно общается с сервером, сообщая информацию о скачивании и
получая обновленный список IP адресов.
Клиенты передают
информация напрямую между собой без участия торрент-трекера. Трекер
только собирает данные с клиентов о процессе скачивания, подключенных
клиентах и другую информацию. Для оптимальной работы торрент протокола
нужно, чтобы максимальное количество клиентов могли принимать и
отдавать файлы. При некорректной настройке межсетевой экран/брандмауэра
или трансляции адресов/NAT, скорость передачи может значительно
уменьшиться или прекратиться совсем.
Когда клиенты
подсоединяются друг к другу, они сразу же передают данные о кусочках
торрента, имеющегося у них. Если у первого клиента есть недостающий
сегмент, то второй клиент посылается запрос "скачать торрент". Первый
клиент отдает запрашиваемую часть торрента, если есть такая
возможность. После получения запрошенной части, второй клиент проверяет
контрольную сумму и ставит в известность о том, что он также имеет эту
часть, что все остальные подключенные клиенты могли скачать torrent с
него.
Клиент может приостановить отдачу частей torrent файла
другому клиенту, что делается для оптимизации раздачи. Приоритет
отдается тому, который сам отдал Вам большее количество частей, то есть
чем больше отдал Вам пир, тем больше вы отдаете ему. Благодаря такой
особенности большую скорость скачивания получают те торрент клиенты,
которые отдают с большой скоростью. Девиз torrent протокола: «Скачал сам, дай скачать другому!»
Особенности торрент протокола
Нет очередей скачивания, т. е. не требуется всем стоять в очереди к источнику / сидеру, для того чтобы скачать файл.
Торрент загружается частями; чем
меньше распространен фрагмент файла, тем чаще он будет отдаваться. Это
значит, что наличие раздающего / сидера не обязательно для того чтобы
скачать torrent. Протокол распределяет фрагменты между клиентами, так
чтобы в дальнейшем они могли обмениваться частями без участия
раздающего.
Клиенты работают напряму друг с другом. Торрент-трекер на прямую не принимает участия в обмене.
Загруженные части файла сразу же становятся доступными для других.
С помощью контрольной суммы отслеживается целостность для каждого скачанного кусочка.
Передовать можно вложенные файлы, например каталог с файлами внутри.
Сетевые протоколы и порты
Торрент клиент подсоединяется к серверу по TCP протоколу (по умолчанию порт 6969).
Клиенты соединяются между собой по TCP протокол. Порты: 6881-6889, но
номера портов не являются обязательными и могут быть другими. Множество
torrents трекеров используют 80 HTTP порт, а в клиентах рекомендуется
выставлять опцию «случайный выбор порта».
Также в клиентах
заложена возможность использовать UDP порты, но она не является
официально утвержденной. Не все клиенты поддерживают ее. UDP порты
используются для работы опции DHT, то есть для режима работы без связи
с torrent трекером.
Файл метаданных
Для того чтобы можно было распространить информацию о торренте, требуется создать torrent файл, содержащий метаданные. Такой файл имеет расширение .torrent и содержит следующую информацию:
адрес (URL) трекера;
информацию о файле (атрибуты, размер и т. д.);
контрольную сумму / хэш сумму фрагментов.
Для того чтобы скачать torrent
нужно получить его файл, содержащий метаданные. Сам он может быть
передан любым доступным способом: по электронной почте, скачан с сайта
или FTP сервера и т. д.
Торрент-трекер
Торрент трекер (torrent tracker) -
это выделенный сервер, который работает по протоколу HTTP. Он позволяет
клиентам взаимодействовать друг с другом, т. е. находить друг друга и
обмениваться информацией, то есть какие торренты у них есть. Трекер
содержит информацию об IP адресе, используемых портах и хэш суммы
раздаваемых torrents файлов. Сами файлы на трекере, как правило, не
присутсвуют и определить их из хэш суммы нельзя. Но часто сервер помимо
непосредственного хранения хэш суммы торрентов также является Веб
сайтом, на котором может содержаться описание файлов. Также часто на
нем содержится информация:
описание торрент файла;
статистика скачиваний;
статистика сидиров / личеров и т. д.
Работа без торрент трекера (torrents tracker)
В
современной версии торрент протокола разработана поддержка работы без
центрального трекера, режим DHT. В таком режиме, в случаи недоступности
центрального сервера, клиенты могу продолжать работать поддерживая
связь между собой.
Функция
работы основана на протоколе Kademlia. При таком режиме работы торрент
трекер доступен децентрализовано на клиентах в виде хеш таблиц.
В
настоящий момент не все клиенты способны работать в этом режиме. Также
протоколы работы без теркера реализованы в многих клиентах по-разному и
поэтому они могут не работать друг с другом.
Супер-сид (Super seeding)
Супер-сид
- это режим работы, когда имеется всего один раздающий. Раздающий
торрент клиент отдает подключенным к нему часть торрента и
останавливает его отдачу другим, до тех пор пока эта часть не появиться
у любого другого torrent клиента. Так как не все участники обладают
хорошей скоростью отдачи, а у некоторых заблокированы порты, то общая
скорость распространения torrent файла сильно снижается. При нормальной
работе каждый клиент получает ту часть файла, которую запрашивает,
поэтому в этом режиме средняя скорость распространения обычно выше.
Супер-сид
эффективен при участии большого количества скачивающих. При участии
нескольких качающих их клиенты могут быть не способны соединяться между
собой, что приведет практически к полной остановке. При количестве
скачивающих более десяти, такая ситуация менее вероятна, поэтому
достаточно раздать каждому свою часть. Клиент обменяется своим
фрагментом со всеми остальными, и у всех в конечном итоге будет торрент
целиком.