Наука
Advertisement
Файл:NewBitTorrentLogo.png

Логотип BitTorrent

Основные протоколы TCP/IP

Прикладной уровень
HTTP, SMTP, FTP, DHCP, SSH, IRC, SNMP, DNS,
IMAP, NNTP, SIP, SMTP, TELNET, BitTorrent, rlogin
Транспортный уровень
TCP, UDP, SCTP, DCCP, RUDP
Сетевой уровень
IPv4, IPv6, ARP, ICMP, IGMP
Канальный уровень
Ethernet, 802.11 WiFi, Token ring, FDDI, PPP,
SLIP, ATM, DTM, Frame Relay, SMDS
Физический уровень
RS-232, EIA-422, RS-449, EIA-485

BitTorrent — децентрализованный P2P-протокол, предназначенный для обмена файлами через интернет. BitTorrent был создан программистом Брэмом Коуэном (англ. Bram Cohen).[1]

Отличительные черты[]

Общие особенности[]

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

Терминология[]

Доступность англ. availability (также distributed copies) Количество полных копий файла, доступных клиенту. Каждый seed добавляет 1.0 к этому числу, поскольку они обаладают полной копией файла. ,те участники (peers) которые скачали только часть файла, увеличивают его доступность на столько, сколько ими уже скачанно. Однако, если несколько peer'ов скачали одинаковые части, то доступность от этого не увеличивается. К примеру, если у двух peer'ов скачано 50% и скачанные части равны между собой, и есть один seed, то доступность равна 1.50

Файл метаданных[]

Bittorrent не имеет системы поиска: для каждого распространяемого файла создаётся файл метаданных с расширением torrent, который содержит следующую информацию:

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

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

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

Трекер[]

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

Работа без трекера[]

В новых версиях протокола были разработанны безтрекерные системы (trackerless), которые решают некоторые из предыдущих проблем. Отказ трекера в таких системах не приводит к автоматическому отказу всей сети.

Начиная с версии 4.2.0 официального клиента в нем реализована функция безтрекерной работы, базирующаяся на протоколе Kademlia. В таких системах трекер доступен децентрально, на клиентах, в форме распределенной хеш-таблицы (Distributed Hash Table).

На данный момент еще не все клиенты используют совсемтимый друг с другом протокол. Совместимы BitComet, µTorrent, KTorrent и официальный клиент.

Используемые порты (ТСР и UDP)[]

  • Порты 6881—6889 — входящие порты клиентов.
  • Порт 6969 — входящий порт трекера.

Номера портов не фиксированы в спецификации протокола и могут изменятся при необходимости.

Super seeding[]

Super seeding является особенностью некоторых клиентов BitTorrent, которые пытаются минимизировать объем данных до первого завершения загрузки пира. Эта было задумано Джоном Хофманом и сначала было осуществлено на клиенте BitTornado в середине 2003г. Эта особенность должна использоваться только когда есть только один сидер. Super seeding является изменением в поведении сидеров и не может быть осуществлен без нарушения протокола BitTorrent. Тем не менее, это не утверждается ни разработчиком протокола, Брэмом Коэном, ни на официальном клиенте.

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

Файл:Torrentcomp small.gif

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

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

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

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

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

Структура трафика[]

Как и в других P2P-протоколах, трафик протокола BitTorrent можно разделить на

  1. служебный трафик.
  2. закачиваемые/отсылаемые данные.

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

Файл:Azureus screenshot.png

Использование протокола BitTorrent на примере Azureus

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

Некоторые популярные клиенты:

  • Azureus
  • BitComet
  • µTorrent
  • Shareaza

См также[]

Ссылки[]

Примечание[]

Advertisement