Как связать торрент с файлом

Обновлено: 04.07.2024

Что такое торрент и как им пользоваться? В статье рассмотрим этот вопрос по инструкции. Скачаем и установим торрент на компьютер, используем торрент-программу для скачивания файлов с Интернета. Данная программа поможет вам быстро скачать необходимый файл.

Что такое торрент простыми словами и торрент программа

Доброго времени суток! Пользуясь компьютером и Интернетом, новички сталкиваются с таким понятием, как торрент. Что это такое? Если говорить простыми словами, то это специальный файл с расширением torrent, который хранит в себе разные файлы. Это могут быть картинки, музыка, игры, фильмы и так далее. Как правило, данный торрент файл можно найти на специальных торрент трекерех, откуда скачивают файлы на компьютер или телефон.

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

Как скачать и установить программу uTorrent

Итак, сначала скачаем и установим программу uTorrent на компьютер. Для этого переходите на официальный сайт программы. Здесь будет несколько вариантов загрузки утилиты – uTorrent Web и Classic.

Затем запустите данную программу на ПК, для этого на нее нужно кликнуть пару раз левой клавишей мыши.

Что такое торрент и как им пользоваться

После того, как программа установится, можете зайти на какой-нибудь торрент трекер в Интернете. Далее скачать, например, фильм. Вот список лучших трекеров:

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

В специальном окне вы можете выбрать место сохранения файла. Затем нажмите кнопку «OK» и пойдет загрузка.

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

Плюсы и минусы торрента

Рассмотрим плюсы и минусы торрентов. Начнем с положительных моментов:

  • нужно установить программу для скачивания торрент файлов;
  • есть реклама в программе;
  • иногда скорость Интернета может замедляться из-за всплывающей рекламы.

Данные минусы не являются серьезными. У пользователей есть большой выбор в использовании торрент трекеров.

Заключение

В статье рассказали о том, что такое торрент и как им пользоваться. С помощью торрента вы сможете быстро скачать на компьютер любые медиа файлы с Интернета. Главное выбирайте тот торрент трекер, где есть свободное скачивание файлов без регистрации. Это поможет вам загрузить файл на ПК без технических проблем.

Не так давно, а именно 5 июня хабрачеловек по имени alan008 задал вопрос. Чтобы не заставлять ходить за подробностями, приведу его здесь:

За несколько лет с разных трекеров (преимущественно c rutracker'а) разными клиентами (преимущественно uTorrent'ом) скачано много гигабайт разного полезного контента. Скачанные файлы впоследствии вручную перемещались с одного диска на другой, uTorrent их соответственно не видит. Многие .torrent файлы устарели сами по себе (например, велась раздача сериала путем добавления новых серий заменой .torrent файла).

Теперь сам вопрос: есть ли способ автоматически (не вручную) установить соответствие между имеющимися на компьютере .torrent файлами и содержимым, раскиданным по разным логическим дискам компьютера? Цель: удалить лишние (неактуальные) .torrent файлы, а для актуальных — поставить всё на раздачу. У кого какие идеи? :)

При необходимости (если это требуется) можно снова поместить все файлы данных в один каталог на одном логическом диске.

В обсуждениях сошлись на том, что если это и можно сделать, то только ручками. Мне же этот вопрос показался интересным, и после возвращения из отпуска я нашел время, чтобы в нем разобраться.

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

  1. Получилось много, но не все.
  2. По формату файла .torrent будут даны лишь необходимые пояснения.
  3. Людей, чувствительных к временами некачественному коду, прошу меня заранее простить — я знаю, что многое можно было написать лучше, оптимальнее и безглючнее.

В данном случае имеется отличный способ решения — перекачать заново. Но мы же не ищем легких путей, да и предлагался такой вариант! Итак, будем решать задачу по сложному — не скачивать.

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

  1. Найти и прочитать все .torrent-файлы;
  2. Найти в куче файлов тот, который соответствует описанному в .torrent, и переместить его в папку, соответствующую пути в .torrent.

Ну что же, приступим к решению поставленной задачи.

Ищем торренты и читаем их

Начнем с самого простого момента — чтения .torrent.

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

Для хранения информации из прочитанного файла будем использовать такой класс Torrent :

Здесь поля хранят следующую информацию:

* Name — имя торрента (вообще говоря — имя папки или имя файла)
* Files — список файлов, которые нам надо будет в дальнейшем искать
* PieceLength — размер тех самых кусочков, хеш которых нам предстоит считать
* Hash — хеш строка всех файлов
* FileName — имя .torrent-файла на диске

Теперь стоит заострить внимание на строке хеша. Она составляется очень просто. Все файлы склеиваются в один (виртуально конечно) друг за другом, образуя при этом один БОЛЬШОООООООЙ воображаемый файл. В этом воображаемом файле берем кусок длины PieceLength , считаем SHA1 хеш, кладем хеш в строку, берем следующий кусок, считаем хеш, дописываем к концу строки с хешем предыдущего куска. Т. е. это обычная конкатенация хешей всех кусков.


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

Здесь все просто: имя файла и его размер. Кроме того этот класс содержит еще одно поле — BeginFrom . Оно описывает начало этого файла в том БОЛЛЬШОООООМ воображаемом файле. Он нужен, чтобы взять правильную часть файла для подсчета хеша — ведь длина файла очень редко кратна длине куска.


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

С помощью найденной на просторах интернета библиотеки BencodeLibrary мы читаем наш .torrent-файл и выкорчевываем из него блок info:


Далее из этого блока необходимо забрать данные об имени торрента, размере куска.


В этом месте мы передаем в метод `BencodingUtils.DecodeFile` вторым параметром информацию о кодировке. Это как раз тот момент, когда пришлось добавлять один метод в библиотеку — изначально codepage-437 была вшита в код.

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

Сначала разберем .torrent с описанием одного файла.


Тут все просто — имя торрента совпадает с именем файла. В случае, когда файлов в раздаче много, то в поле name пишется имя папки, в которую их надо положить (на самом деле может быть что угодно, но почему-то все пишут имя папки в которой эти файлы лежали при создании). Кроме того появляется список files в котором содержится информация о каждом файле: путь к нему и размер. Если размер — просто целое число, то путь к файлу представляет собой список из строк (имен директорий), пройдя по которым мы увидим этот файл.

Такое лучше пояснять на примере. Для файлов level_1\level_2_1\file_1.txt и level_1\level_2_2\file_2.txt , если мы захотим их раздавать, поле name будет содержать имя папки верхнего уровня ( "level_1" ), а список path для одного из файлов будет следующего вида: и для другого.

Нам для .torrent с несколькими файлами надо путь до каждого файла собрать в одну строку. Кроме того, надо хранить начало каждого файла в том БОЛЬШООООМ (не забыли, правда же?!):

Очень важно отметить, что порядок следования файлов в БОЛЬШОООООМ файле может быть любым, не обязательно по алфавиту или по размеру. Но порядок файлов в списке files будет точно таким же. Это ключевой момент для понимания принципа хеширования. Для примера, в ситуации, изображенной на первом рисунке, список файлов будет следующим: . Таким образом, считая хеш одного файла, мы знаем какой файл надо будет брать следующим.

Когда мы все это дело прочитали и посчитали — давайте создадим и вернем экземпляр Torrent :


Собирая теперь все чтение и разбор .torrent-файла воедино, получаем:

Теперь, когда у нас есть все необходимые данные, мы готовы к самому интересному — поиску наших файлов.

Ищем файлы

Мы вплотную подошли к реализации второго шага нашего алгоритма. Для этого будем использовать метод FindFiles такого вида:


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

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


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


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


Есть в коде выше три важных для пояснения момента. Начну с двух последних — вот эти строки:


Я посчитал вполне логичным убирать уже отсортированные файлы из рассмотрения, что позволит несколько сократить время выполнения поиска. Во второй строке есть конструкция .RemoveAt(i--); так как из коллекции убирается текущий элемент, то указатель надо сдвинуть назад, чтобы на следующей итерации цикла брался следующий элемент, а не через один.

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

Ну вот! Самое вкусное.

Проверка хеша

Как видно из кода выше, для проверки хеша мы передаем имя файла на диске и номер файла в списке файлов торрента. Это надо для того, чтобы не запускать поиск в списке файлов, а сразу взять его по номеру, раз он известен (еще одно "+1" циклу for ).


Теперь приступим к реализации нашего метода проверки хеша. На данном этапе мы знаем номер в списке файлов торрента и путь до файла на диске

  1. Нет необходимости дополнительно искать на диске соседние файлы;
  2. Длина куска для хеширования очень редко превышает 2-4 МБ, что дает нам еще один плюс — с точки зрения производительности и времени, докачать такие файлы намного проще, чем искать их на диске.

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


Ответить на вопрос «Почему номер куска разный для случая, когда его начало совпадает с началом файла, и для случая, когда кусок лежит внутри?» предлагается самостоятельно.

Сейчас, зная номер куска мы должны взять его хеш из торрента с помощью такой конструкции:


После этого, надо прочитать кусок из файла и посчитать его хеш:


Ну и самое важное — его проверить. У меня, почему-то не захотел работать ни один из методов Equals() , которые я смог найти, поэтому проверяем так:


Собирая воедино сие творение возбужденного мозга, получим метод следующего содержания:

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

Программа

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


Чтобы запустить сканирование, необходимо выбрать три директории (с файлами .torrent, с файлами для сортировки и папку для отсортированного), по желанию указать две опции и запустить сканирование.

По поводу производительности. Она пока что низкая: обработка 10 больших torrent-файлов заняла около 5 минут.

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

Не ищите торренты рекурсивно, если они собраны в корне диска.
Копирование может занять много времени, поэтому интерфейс может подвиснуть — не пугайтесь.

Так как писалась эта программа 4fun, то качество кода там немного не то, которое хотелось бы, но у меня оно работает. Данная программа не тестировалась, исправлялись только очевидные ошибки, поэтому могут быть, да что скрывать-то, есть скрытые баги. ИСПОЛЬЗУЯ ДАННУЮ ПРОГРАММУ, ВЫ ИСПОЛЬЗУЕТЕ ЕЕ НА СВОЙ СТРАХ И РИСК.

Взять исходники можно на github. Распространяется по GPLv2. Там есть архив с исполняемым файлом. Для работы требуется библиотека Bencode Library, но не оригинальная, а модифицированная мною (есть у меня в репозитарии, подключена субмодулем).

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

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

UPD2. Если у тех, кто пользовался этой утилитой, есть еще какие-то пожелания по функционалу или баг репорты, то прошу оставлять их на github в issue-трекере.

Favorite

В закладки

Как скачать через торрент любой файл. Это просто и легально

Многие наивно полагают, что торренты нужны только для выкачивания из сети нелегального контента. Это не так.

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

Если нужно передать через интернет проект видеоролика, подборку снимков с фотосессии, архив рабочих документов — это проще всего сделать через торренты.

Нет смысла заливать несколько гигабайт в облако, а потом делиться ссылками. Смотрите как правильно пользоваться торрентами:

Как создать новую раздачу через любой торрент-клиент



qBittorrent с активной раздачей файла

1. Чтобы создать новую раздачу, для начала нужен торрент-клиент. На Mac проще всего использовать Transmission или qBittorrent — они бесплатные и практически не подводят.

Что интересно, μTorrent, загруженный с официального сайта, на macOS 10.15 Catalina не заводится, потому что не поддерживает 64 бита. Жаль.

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

Для этого достаточно перетащить необходимые данные из Finder, используя drag-and-drop.

3. После этой нехитрой манипуляции торрент-клиент тут же откроет окно создания раздачи. В нем нужно выбрать путь для сохранения торрент-файла и определить его имя, убрать любую информацию из поля «Трекер» («Трекеры», «Адреса трекеров») и обязательно перевести в неактивное положение переключатель «Частный трекер».

После этого нужно подтвердить намерение создать новую раздачу с помощью соответствующей кнопки.



Окно qBittorrent для создания нового торрента

4. Файл формата TORRENT появится на рабочем столе или в другом месте Finder, которое было выбрано на предыдущем шаге.

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

Как загрузить информацию через любой торрент-клиент



Начало загрузки файла через Transmission

1. Файл формата TORRENT, который был создан в предыдущем пункте статьи, получатель должен скачать удобным образом. А после этого открыть в любом торрент-клиенте.

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

После добавления торрента в клиент придется подождать от нескольких секунд до пары минут, пока начнется скачивание.

3. Данные, на которые ссылается файл TORRENT, передаются напрямую с одного компьютера на второй, минуя посредников. Поэтому во время хода скачивания оба устройства должны быть включены.

Система торрентов не боится обрывов интернета и других современных невзгод. Даже если поставить скачку на паузу, ее можно будет продолжить в любое удобное для себя время.



Файл загрузился на 100% через Transmission

4. После окончания загрузки документ или папка с файлами появится в выбранном на предыдущих шагах месте.

Если в раздаче больше нет необходимости, ее желательно прервать как на компьютере отправителя, так и на устройстве получателя. Для этого нужно удалить соответствующий пункт из перечня Transmission, qBittorrent или любого другого трекера.

Как раздать данные сразу нескольким пользователям

Как использовать magnet-ссылки для размещения в блоге



Копирование magnet-ссылки через Transmission

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

Создать magnet-ссылку обычно можно через контекстное меню конкретной раздачи в торрент-трекере. После нажатия на нее закачка откроется автоматически.

Как сделать свою раздачу максимально безопасной



Создание архива с паролем через «Терминал»

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

Важные файлы можно собрать в архив, защищенный паролем. Извлечь их из него любым обманным путем будет практически невозможно. Жаль, архиваторы с необходимым функционалом для Mac достаточно дорогие — за тот же WinZip просят 2 290 руб.

Немногие знают, что для создания архивов с паролем на Mac можно использовать «Терминал». Подойдет следующая команда:

zip -ejr [path/archive_name] [path_to_folder_or_file]

Здесь [path/archive_name] — путь и имя архива, а [path_to_folder_or_file] — путь и имя исходного файла.

Чтобы добавить и первый, и второй набор из пути к файлу и его имени, достаточно просто перетянуть в «Терминал» необходимые документы из Finder с использованием drag-and-drop.

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

Какие термины из мира торрентов желательно знать



Сиды и прочая «нечисть» в приложении qBittorrent

Пользователи торрентов активно использует несколько терминов, вот они:

Пир. Так называют пользователя, который принимает участие в обмене файлами через систему торрентов.

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

Сид. Это пользователь, который организовал раздачу или полностью скачал документ или папку с файлами и продолжает раздавать ее всем, у кого есть доступ к соответствующему файлу формата TORRENT.

Лич. Так называют пользователя, который еще не успел скачать файл, который ему раздают через торренты. Как только он закончит делать это, его автоматически переведут в состав сидов.

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

Рейтинг. Это соотношение объема информации, которую удалось отдать, к тому, который был загружен, — все это существует в рамках одной конкретной раздачи.

Как передавать файлы через торренты, если кратко



Дополнительная информация о загружаемом торренте в Transmission

1. Сначала нужно создать раздачу. Для это нужно перетянуть документ или папку с файлами в торрент-клиент и снять галочку с пункта «Частный трекер».

2. Потом нужно передать файл с расширением TORRENT получателю любым удобным образом.

3. После получатель должен открыть файл TORRENT в торрент-клиенте, дождаться начала и окончания загрузки.

4. После окончания загрузки раздачу из всех торрент-клиентов можно удалить.

5. Чтобы сделать передачу данных как можно более безопасной, желательно добавить файлы в защищенный паролем архив — в этом поможет команда ZIP для «Терминала».

В общем, передавать большие объемы данных через торренты — это быстро и удобно. Пробуйте.

(45 голосов, общий рейтинг: 4.56 из 5)

Favorite

В закладки

Как работают торренты и насколько это законно

Многие пользователи Интернета привыкли скачивать фильмы и сериалы, хотя сейчас куча разнообразных сервисов, приложений и сайтов, где за небольшую плату можно посмотреть все, что душе угодно. Некоторые лейблы даже новинки сразу выкатывают на своих сервисах, и в кино идти не нужно. Но так называемые торренты не теряют популярности. Что это такое, как работает и насколько это законно — разберемся в этом материале.

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

Торрент, он же BitTórrent (в буквальном переводе — поток бит) — это пиринговый (P2P) сетевой протокол, созданный, чтобы совместно обмениваться файлами через Интернет. А пиринговая сеть — это одноранговая сеть, где узлы «общаются» без центрального элемента. Сетевой протокол является набором правил и последовательности действий. Все это вместе позволяет устройствам соединяться и обмениваться данными.

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

Создатель протокола — Брэм Коэн — 4 апреля 2001 года написал первый torrent-клиент BitTorrent на языке программирования Python. Первая версия протокола была запущена 2 июля 2001 года.

Торренты распространяются через файлы с метаданными, имеющими расширение «.torrent». Каждый такой файл содержит обязательную информацию: URL трекера, имя и размер файла и контрольные хеш-суммы SHA1-сегментов раздаваемых файлов. Также в файле может быть необязательная информация: хеш-суммы файлов целиком и альтернативные источники, работающие не по протоколу BitTorrent.

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


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

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

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

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

Режим End game

Компьютер переходит в этот режим, когда скачивание почти закончилось. В еnd game клиент запрашивает оставшиеся сегменты у всех подключенных. Благодаря этому не происходит замедление или полное «зависание» процесса скачивания файла, который почти уже загрузился, из-за каких-то медленных клиентов.

Сидирование

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

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


  • Нет очереди на скачивание.
  • Файлы загружаются небольшими фрагментами.
  • Клиенты-пиры обмениваются сегментами по принципу «ты — мне, я — тебе».
  • Скачанные фрагменты становятся немедленно доступны другим клиентам.
  • Контролируется целостность каждого фрагмента.

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

Клиенты работают по протоколу TCP (Transmission Control Protocol — протокол управления передачей, один из основных протоколов передачи данных интернета). Клиенты и трекеры могут использовать любой порт, вместо стандартного 6969, чтобы избежать блокировки по порту некоторыми провайдерами.

Трекер

Трекер — это специальный сервер, позволяющий клиентам найти друг друга. Трекер хранит у себя только IP-адреса и хэш-суммы раздач и ничего не знает об имени и содержимом передаваемых файлов. Начиная с версии 4.2.0 официального клиента, выпущенного в 2015 году, появилась бестрекерная работа, которая базируется на DHT Kademlia. В этой реализации трекер доступен децентрализовано на клиентах в форме распределенной хеш-таблицы.


DHT — аббревиатура Distributed hash table, то есть распределенная хэш-таблица. Является протоколом, позволяющим битторрент-клиентам находить друг друга без использования трекера. Клиенты с поддержкой DHT образуют общую DHT-сеть и помогают друг другу найти участников одних и тех же раздач. Это позволяет участникам быстрее находить друг друга, снизить нагрузку на трекер, поддерживает участников вместе в периоды недоступности трекера.

Magnet-ссылка

magnet: — это открытый стандарт URI (Uniform Resource Identifier — единообразный идентификатор ресурса) схемы. Магнитная ссылка позволяет найти файлы без файла torrent. Эта ссылка содержит в себе только хэш-код раздачи. Также magnet-ссылки могут распространяться в виде файлов с расширением *.magnet.

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

Недостатки и ограничения

Если в сети нет сидера, у которого есть все фрагменты раздачи нужного файла, то все части невозможно скачать, пока не появится клиент с полным набором. Раздача, в которой долгое время нет полного содержимого, называется «мертвой». Также в торрент-сети отсутствует анонимность, возможно узнать IP-адреса тех, кто скачивает, и тех, кто раздает. Но нельзя узнать какие еще раздачи или скачивания производятся с данного адреса.

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

В 2008 году началась разработка нового поколения протокола — BitTorrent v2. В нем алгоритм хеширования SHA-1 заменен на более совершенный SHA-256. Он несовместим со старым, поэтому современные клиенты могут работать с обоими протоколами.

Законно ли пользоваться торрентами

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


За нарушение авторского права в российском законодательстве существует административная ответственность — уголовная и гражданская. Чтобы привлечь к административной ответственности по п.7.12 КоАП, надо доказать, что с помощью скаченного контента человек получит доход. А для привлечения к уголовной ответственности стоимость нарушения авторских прав должна превышать 100 тысяч рублей.

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

Протокол BitTorrent сам по себе не является незаконным или небезопасным. Это просто средство для обмена файлами любого типа, и существует множество легальных торрент-сервисов.

Но совместное использование и загрузка материалов, защищенных авторским правом, с помощью BitTorrent или иными способами, является незаконным процессом во многих странах. Простыми словами: торрент сам по себе легален, но загрузка несанкционированных материалов, защищенных авторским правом — это противозаконный процесс.

Лучшие торрент-клиенты


BitTorrent — это оригинальный и официальный торрент-клиент от разработчиков протокола. В бесплатной версии показывает рекламу.

BitComet — еще одно классическое приложение, появившееся чуть ли не одновременно с разработкой протокола. Но отзывы о нем протитвречивые.

BitLord — еще один собственный торрент-клиент, который доступен для платформ Windows и MacOS. Первоначально выпущенный в 2003 году, BitLord появился из вышеупомянутого BitComet и включает в себя ряд функций, которых нет на других платформах. Например, встроенный проигрыватель VLC для просмотра видео в приложении, поддержку субтитров с использованием API и встроенный торрент-поисковик.

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

uTorrent — очень популярный клиент, который, со временем стало труднее рекомендовать из-за переизбытка рекламы. Изначально программа была легким и простым в использовании торрент-клиентом. В 2010 году uTorrent начала включать панель инструментов Conduit Engine в свою утилиту загрузки, а также делать домашнюю страницу и поисковую систему Conduit по умолчанию без согласия. В 2011 году uTorrent начал включать панель инструментов Bing, а затем объявил о платной версии приложения под названием uTorrent Plus.

qBittorrent — бесплатный клиент с открытым исходным кодом, без рекламных объявлений, регулярно обновляется.

Deluge — еще один бесплатный клиент с открытым кодом. От qBittorrent отличается меньшим размером — 34 килобайта.

Transmission — клиент для MacOS и linux, версия для Windows имеет меньший функционал.

Vuze — торрент-клиент. Имеет бесплатную и платную версии.

Сеть торрент и криптовалюты

BitTorrent, Inc. — частная американская компания со штаб-квартирой в Сан-Франциско, была основана 22 сентября 2004 года Брэмом Коэном (Bram Cohen) и Ашвином Невином (Ashwin Navin). На пике популярности аудитория сервисов BitTorrent достигала 150 миллионов активных пользователей в месяц.

Джастин Сан

В июне 2018 года компанию купил миллиардер, создатель криптовалюты TRON, Джастин Сан (Justin Sun). Протокол позволяет передавать любые типы файлов. Это помогло скомбинировать cеть BitTorrent и блокчейн TRON, так и был создан проект Atlas и криптовалюта BTT.

Криптовалюта BTT (BitTorrent Token) впервые появилась в продаже 28 января 2019 года на бирже Binance. Буквально за 15 минут было распродано 60 миллиардов токенов BitTorrent. Это принесло команде около $7 миллиардов. Сейчас эмиссия BitTorrent (количество монет в обращении) — 990,000,000,000.

Проект Atlas не предполагает майнинг. Разработчики не видят смысла поощрять майнеров за огромные траты электроэнергии и дорогостоящее оборудование — принцип действия алгоритма proof-of-work (например, у биткоина).

Алгоритм консенсуса BTT — delegated proof-of-stake (DPoS). Он основан на голосовании между владельцами токенов в реальном времени. Выбираются супер представители, которые следят за стабильностью системы, и за это получают вознаграждение. Если сообщество не устраивают представители, их можно переизбрать. Такой же алгоритм у криптовалюты Tron (TRX) — основного блокчейна для проекта Atlas.

BTT можно получить через обмен на другие валюты, либо через эирдроп. Для владельцев криптовалюты Tron (TRX) производится эирдроп, запланированный на шесть лет. Чтобы получить монеты BTT бесплатно, достаточно хранить любое количество токенов TRX. Но чем больше их будет, тем больше BTT получите на эирдроп:

  • с 11 февраля 2019 — 10,890 миллионов BTT;
  • с 11 марта 2019 до февраля 2020 — 11,880 миллионов BTT;
  • с 11 марта 2020 до февраля 2021 ー 12,870 млн BTT;
  • до февраля 2025 года сумму эирдропа будут повышать на 0,1 % от всех токенов ежегодно.

Эирдроп для держателей TRX производится 11 числа каждого месяца. Следить за курсом BTT можно здесь.

Читайте также: