Торрент или BitTorrent (дословно с англ. "битовый поток") – это специализированный пиринговый сетевой протокол для равноправного обмена файлами между пользователями через Интернет.
Этот сетевой протокол был создан американским программистом Брэмом Коэном, который разработал и внедрил первый торрент-клиент "BitTorrent" на языке Python 4 в апреле 2001 года. Первую версию сервиса запустили 2 июля 2001 года.
Главная особенность BitTorrent заключается в том, что все файлы передаются по частям, и каждый торрент-клиент, скачивая и получая эти части, одновременно отдает их другим участникам сети. Файлы пользователи скачивают не с какого-то сервера, а друг у друга, т. е. непосредственно с жестких дисков компьютеров. Такая организация передачи информации значительно снижает нагрузку на сеть и исключает зависимость от каждого торрент-клиент или источника данных.
Принцип работы
Для того чтобы начать скачивание необходимого файла, пользователь Торрента подключается к торрент-трекеру по адресу, который содержит в своем описании торрент-файл. Торрент-трекер – это сервер для обработки запросов клиентов и их координации в сети. Торрент-файл – это специальный файл, содержащий информацию о метаданных (URL трекера, имя и размер файла в данной раздаче, контрольные суммы частей раздаваемых файлов прочую информацию). Пользователь, сообщая трекеру свой адрес и хеш-сумму торрент-файла, получает в ответ адреса других клиентов, которые скачивают или раздают этот же файл. Затем в процессе скачивания или раздачи файлов, клиент периодически обновляет информацию для торрент-трекера о ходе процесса и в ответ получает новый список адресов. Когда клиенты соединяются друг с другом, сразу же происходит обмен информацией об имеющихся у них сегментах (частях файла). Торрент-трекер не принимает участия в этом процессе, он лишь хранит информацию (список клиентов и другие статистические данные), которая была получена от клиентов, подключенных к обмену файлами. Для того чтобы работа сети BitTorrent была более эффективной, необходимо как можно большее количество клиентов, имеющих способность принимать входящие соединения.
Посылая запрос, клиент (личер), который имеет желание скачать сегмент какого-либо файла, получает его в том случае, если второй клиент готов отдавать этот сегмент. После получения, клиент должен проверить контрольную сумму сегмента. Если контрольная сумма полностью совпала с записанной в торрент-файле, то сегмент расценивается как успешно скачанный. После этого клиент делает оповещение всех присоединенных пиров о том, что у него имеется в наличии этот сегмент. В том случае, если контрольная сумма отличается, то сегмент начнет скачиваться заново.
Обмен данными
Для того чтобы скачать необходимый файл (программу, музыку, фильм, игру и т. п.) необходимо:
- зайти на сайт Торрент-трекера и зарегистрироваться;
- найти заинтересовавший файл с помощью встроенного поиска или в специальных категориях, на которые делится Трекер;
- скачать торрент-файл – файл метаданных;
- скачать, установить и настроить специальную программу для закачки и раздачи;
- запустить торрент-файл с помощью программы и начать скачивать сегменты интересующего файла.
Одновременно автоматически включается раздача уже закаченных сегментов этого файла другим желающим.
Действия раздающего человека (сидера), который хочет поделиться имеющимся у него файлом (музыкой, фильмом, программой, игрой и т. п.):
- зайти на сайт Торрент-трекера и зарегистрироваться;
- скачать, установить и настроить специальную программу для раздачи и закачки;
- в этой специальной программе создать торрент-файл – файл метаданных (этот файл имеет расширение "имя файла.torrent" и обычно имеет небольшой размер, около 200-300 кб);
- на сайт Торрент-трекера выложить ссылку на свой торрент-файл (делается это в специальной категории, которая определяет тип этого файла, к примеру, музыку – в музыкальный архив, фильмы – в каталог фильмов и т. д.);
- также необходимо краткое описание файла,– для пользователей, желающих скачать файл.
Такой файл может распространяться любым удобным способом: на сайте Торрент-трекера, по почте с помощью ссылки на него, в информационных статьях, описаниях программ, а также множеством других.
Особенности и преимущества
- Отсутствие очереди для скачивания.
- Можно начать закачку постепенно, частями, т. е. свободными фрагментами. Система сама распределяет фрагменты и собирает их затем в необходимой последовательности.
- Осуществляется контроль над целостностью каждого фрагмента торрент-файла.
- Все свободные части сразу же оказываются доступными для других пользователей, поэтому весь процесс проходит очень быстро.
- Объектом для раздачи могут быть сразу несколько файлов, к примеру, содержимое каталога.
- Чтобы оптимально использовать какие-либо другие процессы или увеличить скорость во время скачивания, пользователь может приостановить раздачу своего файла.
- Приоритет для закачки файлов отдается тем, кто больше всех раздает.
- Обновленные версии протокола Торрент-трекера могут обеспечивать новые возможности. Последние версии имеют возможность использовать режим DHT. Этот режим дает право пользователям функционировать и поддерживать связь между собой, даже если сервер Торрент-трекера по какой-то причине будет недоступен.
Основные термины
Раздача – процедура распространения файла с помощью специального протокола BitTorrent, т. е. обращение клиента к Торрент-трекеру.
Пир – пользователь, который принимает участие в раздаче в сетях по файловому обмену. В сетях типа BitTorrent – пиры бывают 2 видов: личи – скачивающие и сиды – раздающие.
Личер (англ. leech – пиявка) – это клиент, который не имеет пока всех сегментов файла, но продолжающий скачивание или уже закончивший скачивание избранных частей раздачи. Этот термин имеет и негативный смысл. На файлообменных ресурсах так называют тех пользователей, которые отдают гораздо меньше информации, чем скачивают.
Сид (англ. seeder) – это пользователь, который имеет все сегменты или части распространяемого файла, участвовавшего в раздаче (пире). Это может быть как изначальный распространитель файла, так и уже скачавший весь файл.
Сегмент – это часть или небольшой кусок, на которые делятся все файлы для передачи по сети, а затем уже передаются в произвольном порядке для наилучшей оптимизации обмена.
Рой – это совокупность всех пиров или группа источников, коллективно участвующих в раздаче конкретного файла. Например, Торрент-трекер выдает вам сообщение, что вы подключены к 10-ти пирам и 3-м сидам, тогда рой будет состоять из 13-ти других источников.
Доступность – это количество всех цельных копий файла, которые доступны клиенту.
Рейтинг – это отношение розданного к уже скачанному. За этим параметром необходимо следить, потому что если вы будете много скачивать, и мало раздавать уже скаченные файлы, то вы рискуете лишиться права скачивать вообще. Бывает так, что некоторые сидеры устанавливают ограничения для личеров с низким рейтингом (обычно рейтингом, который ниже 0.5). Рекомендуется поддерживать рейтинг выше 1.0. Каждый сид добавляет 1.0 к этому числу, личеры увеличивают доступность в зависимости от количества скачанного, которого нет у других личеров.
Анонс – это автоматическое обращение клиента к Торрент-трекеру. В каждом таком обращении клиент передает на трекер информацию об объеме уже скачанного и отданного, a Торрент-трекер, в свою очередь, передает клиенту новый список адресов других пользователей. Обращение клиента к трекеру делается периодически, через определенные интервалы времени, которые устанавливаются настройками клиента и трекера.
Passkey – это аутентификатор (проверка подлинности) пользователя на неанонимных Торрент-трекерах. Эта информация содержится в свойствах скачиваемого торрент-файла. Если пользователь получит доступ к торрент-файлу, то у него появляется возможность работать с Торрент-трекером от имени этого пользователя, который возможно по неосторожности "расшерил" его (разрешил доступ к файлу). По запросу пользователя трекер может изменить passkey, но тогда нужно будет перезакачивать все прошлые торрент-файлы либо редактировать их, чтобы снова появилась возможность в дальнейшем раздавать скачанные файлы.
Супер-сидирование (англ. super seeding) – это специальный режим раздачи в некоторых Торрент-клиентах. С помощью этого режима можно попытаться минимизировать количество данных, которое отдаст раздающий до появления первого скачавшего. Суперсид рекомендует каждому пиру скачать не более одного сегмента файла, который еще не существует у других пиров. После этого сид не дает этому пиру других сегментов, пока не получит от остальных пиров подтверждения, что они также получили этот сегмент. Подобным образом, суперсид стремится избежать повторной отдачи одних и тех же сегментов, и делает все для того, чтобы отдавать сегменты только тем пирам, которые активно передают их другим.
Веб-сид – это HTTP или FTP-сервер, который может быть использован в качестве источника данных, выступая при этом в роли обычного сида.
Индекс — это список торрент-файлов, который может включать в себе описание и другую информацию. Этот список управляется веб-сайтом (индексатором) и доступен для поиска. Индексирующий сайт может быть также и Торрент-трекером.
Отравленный торрент – так называется ситуация, когда часть пиров раздает поврежденные сегменты.
Хеш – это строка буквенно-цифровых символов в торрент-файле, используемая клиентами для проверки передаваемых данных. В самом начале, каждая часть после получения, проверяется на совпадение хеша. Если проверка не удалась, данные удаляются и запрашиваются еще раз.
Заинтересованный (англ. interested) – это пользователь, который хочет получить сегменты файла, имеющиеся у другого пользователя. Например, если у одного клиента не хватает каких-либо сегментов, которые есть у другого клиента, то значит, что первый клиент заинтересован в обмене со вторым клиентом.
Заглохший (англ. choked) – клиент, обмен данными с которым не работает, проще говоря, заглох. Также есть вероятность того, что его канал на раздачу забит полностью, и он не может ничего передать (т. е. он достиг максимума загрузки – max uploads), или он является сидом и ему ничего не нужно качать.
Пренебрегающий (англ. snubbed) – клиент, который подключен к получателю, но уже более 60 секунд не отправляет данных.
Использование magnet-ссылки
Magnet-ссылка – это специальная ссылка, предназначенная, прежде всего, для указания на ресурсы, которые доступны к загрузке через пиринговые сети. Поэтому этот стандарт ссылок широко используется в работе с Torrent-трекерами.
Magnet-ссылки поддерживаются, к примеру, такими приложениями, как: BitTorrent, KTorrent, μTorrent, QBittorrent, rTorrent и многими другими приложениями.
Magnet-ссылка обычно имеет такой вид:
magnet:?xl=[Размер в байтах]&dn=[Имя файла (URL encoded)]&xt=urn:tree:tiger:[ TTH хеш файла (Base32) ]
Эта ссылка может содержать в себе: имя файла, размер файла в байтах, ключевые слова для поиска и хэш - контрольную сумму, которая вычисляется на основе содержимого файла. magnet-ссылка имеет достаточно информации для того, чтобы найти по ней файл в пиринговой сети типа P2P (от англ. peer-to-peer – т. е. равный к равному).
Различные преимущества magnet-ссылок:
- Magnet-ссылка дает возможность добавления файла в очередь закачки, даже если в сети нет ни одного его владельца, и как только источники появятся, клиент сам начнет закачку, так как у него уже есть вся информация о необходимом файле.
- Magnet-ссылка включает в себе хэш файла; это означает, что файл будет обнаружен автоматически даже после переименования или перемещения в другую папку.
- Хэш файла – это контрольная сумма файла, которая гарантирует, что после закачки и проверки хэша файл будете иметь цельный вид.
- Magnet-ссылка дает возможность начать закачку файла еще до того, как он полностью появится в сети. Если кто-то из пользователей уже успел скачать сегмент файла, то клиент сможет, зная magnet-ссылку, запросить скачанные сегменты необходимого файла.
Шифрование протокола
Шифрование протокола (англ. protocol encryption) – это вид шифрования, используемого, чаще всего, для борьбы с провайдерами, которые распознают и подавляют Bit-трафик. Шифрование протокола поддерживается в Bit-клиентах (µTorrent).
Случаи использования шифрования протокола:
Клиент, который начинает соединение, может запросить шифрованное соединение. Все совместимые клиенты, в случае приема соединения с таким запросом, обязаны также согласиться на шифрование, независимо от своих настроек. При этом трафик шифруется в обе стороны, как на скачивание, так и на отдачу.
Настройки шифрования на примере µTorrent
Существует три варианта для исходящих соединений, которые начинает клиент:
- Выкл: устанавливать обычное, т. е. нешифрованное соединение. Это настройка по умолчанию. Если используемый провайдер не подавляет Bit-трафик и открыт порт для входящих соединений, то можно оставить такие настройки. Пользователи, чей провайдер подавляет Bit-трафик, вынуждены использовать только шифрованное соединение. Такие пользователи сами подсоединятся с предложением начать шифрованное соединение.
- Включено: предлагать шифрование, а в случае неудачи устанавливать обычное соединение. Это означает, что шифрованные соединения для более предпочтительны, но могут подходить и обычные соединения.
- Форсировано: предлагать шифрование, а в случае неудачи обычное соединение не устанавливать. Это означает, что обычные соединения для бесполезны, т.е. провайдер подавляет такие соединения целиком. Именно в этом случае есть смысл убрать галочку "пропуск",– это будет означать, что обычные соединения для приема трафика также будут недоступны.
В случае низкой скорости скачивания или отдачи, искать причину в подавлении Bit-трафика провайдером нужно в последнюю очередь. Чаще всего, низкая скорость бывает по другим причинам, первая из них – недостаточное количество раздающих или качающих на раздаче.