easy

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Термины

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

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

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

Этикет

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

easy
Машинное зрение: как компьютер распознаёт даже плохой почерк и отличает котов от собак
Машинное зрение: как компьютер распознаёт даже плохой почерк и отличает котов от собак

Ныряем в бассейн аттракторов

easy
Разбираемся с массивами в Python: списки
Разбираемся с массивами в Python: списки

Многофункциональные и удобные

easy
Что о вас на самом деле знают Google и Facebook (и все остальные)

Если коротко — они знают о вас почти всё. Но с этим тоже можно что-то сделать.

medium
Как проверить, работает ли интернет
Как проверить, работает ли интернет

Рассказываем про две команды, которыми пользуются сотрудники техподдержки провайдера

easy
Как выиграть в самой сложной игре мира
Как выиграть в самой сложной игре мира

Поручим это нейронке.

easy
Python-разработчик: сколько платят, что нужно уметь и куда идти работать
Python-разработчик: сколько платят, что нужно уметь и куда идти работать

Разговор с практикующим разработчиком о работе и зарплатах

easy
easy