Что такое BitTorrent?

BitTorrent — дословно переводится как «поток битов», это сетевой протокол для обмена файлами через Сеть Интернет. Он был создан американским программистом Брэмом Коэном, который написал первый торрент-клиент «BitTorrent» на языке Python в апреле 2001 года. Отличительной особенностью протокола BitTorrent является, то что файлы передаются частями, и каждый торрент-клиент, получая эти части, в то же время отдаёт их другим клиентам.

Для работы BitTorrent, как правило, необходим специализированный HTTP сервер, координирующий обмен между участниками — «пирам». Такие сервера принято называть битторрент-трекерам или торрент-трекерам или совсем упрощенно трекерами.

Трекер

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

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

Торрент-файл

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

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

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

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

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

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

  • Отсутствие очередей на закачку.
  • Файлы закачиваются небольшими сегментами; чем менее доступен сегмент, тем чаще он будет передаваться. Таким образом, присутствие в сети «сида» с полным файлом для загрузки необязательно — система распределяет сегменты между «пирами», чтобы в последующем они могли обмениваться недостающими сегментами.
  • Клиенты (peers) обмениваются сегментами непосредственно между собой, по принципу «ты — мне, я — тебе».
  • Закачанные сегменты становятся немедленно доступны другим клиентам.
  • Контролируется целостность каждого сегмента.
  • В качестве объекта закачки могут выступать несколько файлов (например, папка с файлами).

Протоколы и порты

Клиенты соединяются с трекером по протоколу TCP.

Клиенты соединяются друг с другом, используя протокол TCP.

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

DHT-сеть в BitTorrent-клиентах использует протокол UDP.

Программы клиенты BitTorrent

Кроссплатформенные:

  • aria2 — поддерживает HTTP, FTP, BitTorrent; файлы Metalink 3.0
  • Azureus — написан на языке Java, поэтому является кроссплатформенным;
  • BitTornado — кроссплатформенный клиент, написанный на языке Python;
  • FoxTorrent — расширение для браузера Mozilla Firefox, реализующее функции клиента BitTorrent;
  • mlDonkey — кроссплатформенный клиент;
  • Браузер Opera поддерживает закачку торрентов, начиная с версии 9.0, но его торрент-клиент несовместим со многими трекерами.
  • TorrentFlux — написан на PHP, работает на удаленном Web‐сервере как PHP‐скрипт, позволяя не держать свой компьютер включенным постоянно, но при этом качать и раздавать торренты.

Для UNIX-подобных систем:

  • BTPD — консольный клиент для Unix/GNU+Linux, написанный на C++; работает в режиме демона;
  • CTorrent — консольный клиент для Unix/GNU+Linux, прекративший развитие в 2004 году;
  • Deluge — клиент для GNU/Linux, написанный на языке Python; использует GTK;
  • KTorrent — использует библиотеку Qt; работает в среде KDE;
  • rTorrent — консольный клиент для UNIX/GNU+Linux, написанный на C++; использует библиотеки ncurses и libTorrent;
  • Transmission — клиент для Mac OS X, FreeBSD, OpenBSD, NetBSD, GNU/Linux и BeOS, использующий GTK.

Для Microsoft Windows и Windows NT:

  • µTorrent;
  • BitComet;
  • FlashGet;
  • GetRight.
  • Shareaza — поддерживает работу с несколькими файлообменными сетями, в том числе и BitTorrent

Для Mac OS:

  • XTorrent;
  • BitRocket.

См. также Терминология BitTorrent
См. также Интернет-сленг

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *