Bit Torrent


BitTorrent — пиринговый сетевой протокол Коэна для кооперативного обмена файлами через Интернет.

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

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

На сегодняшний день существует множество других программ-клиентов для обмена файлами по протоколу BitTorrent.


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


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

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

Обмен сегментами ведётся по принципу «ты — мне, я — тебе» симметрично в двух направлениях и в случайном порядке. Клиенты периодически сообщают друг другу об имеющихся у них сегментах. Целостность закачанной информации проверяется по контрольным суммам (некоторое значение, рассчитанное по набору данных путём применения определённого алгоритма и используемое для проверки целостности данных при их передаче или хранении).


Основные качества протокола:

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


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

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

  • µTorrent — клиент BitTorrent для Windows и Mac OS X, отличающийся малым размером и высокой скоростью работы.
  • Vuze — написан на языке Java, поэтому является кроссплатформенным. Поддерживает Tor и I2P. Нужно учесть, используемая им библиотека Eclipse Standard Widget Toolkit использует системнозависимые модули и должна компилироваться для каждой платформы отдельно.
  • Deluge — кроссплатформенный клиент, написанный на языке Python; использует GTK
  • Opera полностью поддерживает закачку торрентов, начиная с версии 9.0
  • TorrentFlux (en) — написан на PHP, работает на удалённом Web-сервере как PHP-скрипт, позволяя не держать свой компьютер включённым постоянно, но при этом качать и раздавать торренты

GNU/Linux, UNIX

  • KTorrent — использует библиотеку Qt; работает в среде KDE
  • rTorrent — консольный клиент для UNIX/GNU+Linux, написанный на C++; использует библиотеки ncurses и libTorrent
  • Transmission — клиент для Mac OS X, FreeBSD, OpenBSD, NetBSD, GNU/Linux и BeOS, использующий GTK,Qt, так же может работать через Web-интерфейс или вообще без GUI. Также может работать в консольном режиме и в режиме демона.

Windows

  • uTorrent
  • BitTorrent
  • BitSpirit
  • FlashGet
  • Shareaza — поддерживает работу с несколькими файлообменными сетями, в том числе и BitTorrent
  • Free Download Manager

Mac OS

  • µTorrent
  • Transmission