BitTorrent-трекер
BitTorrent-трекер — сервер, осуществляющий координацию клиентов BitTorrent.
Координация клиентов
Основная функция BitTorrent-трекера — обработка запросов клиентов.
Каждый клиент периодически обращается к трекеру с запросом, в котором указаны:
- SHA-1 словаря info (инфохеш);
- Порт, на котором клиент ждёт соединений от других клиентов;
- количество данных, которыми клиент успел обменяться с другими клиентами;
- и некоторая другая информация.
Клиентский узел отправляет трекеру HTTP-запрос типа GET. Ответом служит Bencode-словарь с информацией о ранее обратившихся к трекеру узлах, также участвующих в раздаче. Данная информация используется узлами для установления прямых связей друг с другом.
Если в BitTorrent-клиенте открыто несколько активных торрент-файлов, то для каждого используется отдельный запрос, никак не связанный с другими. Интервалы между запросами по каждому отдельно взятому торренту зависят от настроек клиента и обычно составляют от 30 до 60 минут.
Роль трекера
Трекер «связывает» клиентов друг с другом, но напрямую не участвует в обмене раздаваемых файлов. Более того, трекер не имеет никакой информации об этих файлах, поскольку клиенты только сообщают ему инфохеш.
Трекер считается «слабым» местом системы BitTorrent, поскольку при его отключении новые клиенты просто не могут друг друга «найти». При этом уже участвующие в раздаче клиенты могут некоторое время продолжать файлообмен, постепенно теряя тех, кто отключился или у кого поменялся IP-адрес.
Для решения этой проблемы могут использоваться резервные трекеры или специальные бестрекерные протоколы, например DHT.
Дополнительные функции
Многие трекеры сохраняют в базе данных статистику раздач, то есть количество узлов на каждой раздаче, общие объёмы переданных данных и другую доступную им информацию. Позднее полезная часть информации посредством каталога предоставляется конечным пользователям.
Частные (закрытые) трекеры
Частный (англ. private) трекер — это трекер, ограничивающий доступ пользователям, обычно требованием регистрации учётной записи и требованием поддержания «рейтинга» на определённом уровне.
Одной из причин появления частных трекеров является асимметричность пользовательских каналов доступа к Интернету. Средний пользователь за время скачивания торрента успевает отдать другим пользователям незначительную по объёму часть данных, при этом многие пользователи после получения нужного файла сразу закрывают торрент-клиент. В результате доступность торрента снижается, и на первоначальных распространителей файла ложится неоправданно большая нагрузка.
Как правило, частные трекеры записывают статистику (рейтинг) каждого пользователя по количеству «скачанного» и «отданного» другим пользователям, и требуют поддержания некоторого минимального соотношения этих двух величин. Как результат, доступность и скорость скачивания торрентов на частном трекере обычно выше, чем на открытом.
Для идентификации конкретного клиента трекер использует либо IP-адрес пользователя, либо уникальный для каждого пользователя ключ (так называемый user key или pass key), добавляемый трекером в торрент-файл при скачивании его пользователем.
У рейтинговой системы есть и негативная сторона: дискриминация пользователей, имеющих узкий канал отдачи (например, у пользователей CDMA-модемов). Часто у такого пользователя отдача совсем не идёт; причина тому — другие пользователи, имеющие более широкий upload-канал и отдающие значительно больше и быстрее. Такому пользователю очень сложно восстанавливать свой рейтинг, особенно если он имеет дело с маловостребованными файлами. В итоге пребывание на частном трекере оборачивается для него постоянной головной болью о способах поддержания рейтинга.
Для поддержки закрытых раздач в торрент-файлах есть флаг private, установка которого приводит к тому, что клиенты, правильно поддерживающие этот флаг, не раздают этот торрент в обход трекера (например, через DHT). Так как большинство торрент-файлов создаётся без этого флага, то раздающий после загрузки свежесозданного файла на трекер должен заново скачать его, так как трекер выставляет этот флаг, изменяя торрент.
Реализации трекеров
Существуют разные реализации трекеров: в виде отдельного сервера, в виде модуля для стороннего HTTP-сервера (например, Apache) или в виде дополнения к движку сайта, написанного, к примеру, на PHP или JSP.