Торренты: как они устроены

Сага о тех, кто качает по кусочкам.

Торренты: как они устроены

Представьте: кто-то взял многостраничную книгу, вырвал из неё все листы и раздаёт прохожим ксерокопии случайных страниц со скоростью 10 листов в час. Ваша задача — собрать книгу, чтобы все страницы шли по порядку. Как это быстрее всего сделать?

Самый простой способ — собирать самому все листы, проверять, чтобы среди них не попадались дубликаты и ждать, пока таким образом не соберётся вся книга. Но это долго — скорость сбора целой книги напрямую зависит от количества страниц. Книгу из 100 страниц мы будем собирать 10 часов, а из 1000 страниц — 4 дня.

Но есть способ собрать книгу быстрее, и для этого понадобится помощь других прохожих. Мы будем спрашивать у всех, какие страницы есть у них. Если у нас таких нет — берём их страницы и снимаем копии. А чтобы было честно, отдаём свои страницы на копирование тем, у кого их нет.

Чем больше людей, тем больше в обращении страниц, тем быстрее у вас соберётся книга.

Теперь про торренты

Если в этой ситуации книгу заменить на файл, а прохожих — на компьютеры, то получится описание торрент-сети. Эта сеть основана на протоколе Bittorrent, который делает так:

  • Берёт документ или видео, которым вы хотите поделиться с другими, и делает для него специальное описание — torrent-файл.
  • В torrent-файле записано, на кусочки какого размера нужно разделить этот документ, как их собирать и адрес компьютера, откуда эти кусочки файла можно скачать.
  • Torrent-файл выкладывается на форум или в любое другое место, откуда его можно скачать. На этом пока остановимся и разберём подробнее.

Для того чтобы поделиться с кем-то своим файлом, не обязательно отправлять его целиком. Достаточно сделать из него торрент и поделиться ссылкой. Главное, помните: у кого будет torrent-файл, тот и может скачать этот документ. Если он доступен всем, то и скачивать могут тоже все.

В торрентах файл передается по кусочкам от пользователя к пользователю напрямую.

Как происходит скачивание

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

В итоге вы скачиваете файл случайными кусочками, а все кругом могут узнать, какие кусочки есть у вас.

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

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

Пользователи обмениваются недостающими кусочками файла друг с другом.

Термины

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

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

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

Этикет

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

Даже если изначальный раздающий окончательно пропал, раздача продолжается за счет тех, кто уже успел скачать файл.

У торрентов своя атмосфера

В торрент-сетях нет ограничения на размер выложенного файла или архива — можно выложить хоть терабайт фоток и раздавать их пару недель.

Само использование торрентов — не запрещено. Но если нарушать торрентами чьи-то права, то вот это будет запрещено — по решению суда.

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

Первый торрент-клиент — BitTorrent — был написан на Python. Мы уже говорили о том, почему Питон — это классно, и повторим это снова.

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

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

Обложка:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Маша Климентьева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
Подборка из 8 лучших бесплатных хостингов
Подборка из 8 лучших бесплатных хостингов

Поднимайте сайт, закачивайте файлы и программируйте, что вам нужно. Это бесплатно.

medium
За что все любят Python
За что все любят Python

И стоит ли вам его учить.

easy
Как перевезти гопников и философов с одного берега на другой
Как перевезти гопников и философов с одного берега на другой

Олимпиадная задачка для старшеклассников. Но справитесь ли с ней вы?

easy
Как подключить CSS к HTML
Как подключить CSS к HTML

Способов много, и всё зависит от задачи

easy
Математика на миллион: теория Янга — Миллса
Математика на миллион: теория Янга — Миллса

Седьмая математическая проблема тысячелетия

hard
Обзор курса Яндекс Практикума по бэкенду: разбираем блок про Django
Обзор курса Яндекс Практикума по бэкенду: разбираем блок про Django

Погружаемся в мир бэкенда и веб-серверов

easy
USB Type-C: как он устроен и для чего нужен
USB Type-C: как он устроен и для чего нужен

Разъём, который перевернул игру, хе-хе

easy
Все опять заговорили про VPN. Что это такое, объясни мне!
Все опять заговорили про VPN. Что это такое, объясни мне!

Мы не можем вам сказать. Но можем показать.

medium
Как устроен российский корпоративный мессенджер «Пачка»
Как устроен российский корпоративный мессенджер «Пачка»

Технологии, разработка и перспективы российского ИТ

easy
easy