Введение
Протокол обмена файлами BitTorrent
Peer exchange (обмен одноранговыми подключениями) или PEX – это протокол связи, расширяющий функциональность протокола обмена файлами BitTorrent. Он позволяет группе пользователей (или пиров), совместно использующих файл, делать это быстрее и эффективнее. В первоначальной реализации протокола BitTorrent участники группы обмена файлами (известной как "рой") полагались на центральный сервер, называемый трекером, для поиска друг друга и поддержания роя. PEX значительно снижает зависимость пиров от трекера, позволяя каждому пиру напрямую сообщать другим участникам роя о текущих участниках роя. Уменьшая зависимость от централизованного трекера, PEX повышает скорость, эффективность и устойчивость протокола BitTorrent.
Peer exchange or PEX is a communications protocol that augments the BitTorrent file sharing protocol. It allows a group of users (or peers) that are collaborating to share a given file to do so more swiftly and efficiently. In the original design of the BitTorrent file sharing protocol, peers (users) in a file sharing group (known as a "swarm") relied upon a central computer server called a tracker to find each other and to maintain the swarm. PEX greatly reduces the reliance of peers on a tracker by allowing each peer to directly update others in the swarm as to which peers are currently in the swarm. By reducing dependency on a centralized tracker, PEX increases the speed, efficiency, and robustness of the BitTorrent protocol.
Описание
Пользователи, желающие получить копию файла, обычно сначала загружают торрент-файл, в котором описываются файлы для обмена, а также URL-адреса одного или нескольких центральных компьютеров, называемых трекерами, которые поддерживают список участников, в настоящее время обменивающихся файлами, описанными в торрент-файле. В оригинальной реализации BitTorrent участники зависели от центрального трекера для поиска друг друга и поддержания роя. Последующая разработка распределённых хеш-таблиц (DHT) позволила другим компьютерам в рое хранить частичные списки участников, что снизило нагрузку на центральный трекер. PEX позволяет участникам роя обмениваться информацией о рое напрямую, без запроса (опроса) трекера или DHT. Таким образом, PEX использует знания об участниках, к которым подключен пользователь, запрашивая у них адреса участников, к которым они подключены. Это быстрее и эффективнее, чем полагаться исключительно на один трекер, и снижает вычислительную нагрузку на трекер. Это также позволяет рою оставаться связанным, когда трекер недоступен. Обмен участниками нельзя использовать самостоятельно для добавления нового участника в рой. Для первоначального подключения к рою каждый участник должен либо подключиться к трекеру, используя ".torrent" файл, либо использовать компьютер-маршрутизатор, называемый bootstrap-узлом, для поиска распределённой хеш-таблицы (DHT), описывающей список участников роя. Для большинства пользователей BitTorrent DHT и PEX начнут работать автоматически после запуска BitTorrent-клиента и открытия торрент-файла. Примечательным исключением являются "приватные торренты", которые не находятся в свободном доступе; они обычно отключают DHT.
ДХТ
Для создания протокола PEX, обеспечивающего равномерно распределенный выбор пиров, можно сформировать небольшую распределенную хэш-таблицу (DHT) локально для торрента. Для каждого нового желаемого пира следует искать (равномерно) случайный ключ и использовать узел, ответственный за этот ключ, в качестве нового пира. Это концептуально просто, но потребует значительных накладных расходов. Для "безтрекерных" торрентов неясно, предоставляет ли PEX какую-либо пользу, поскольку основная DHT может распределять нагрузку по мере необходимости. Каждый узел DHT, функционирующий как трекер, может хранить лишь часть пиров, но это будут максимальные подмножества, ограниченные только нагрузкой на узел DHT, а не информацией, доступной отдельному пиру. В случае частных торрентов DHT обычно отключается, и в этом случае PEX может быть полезен, если пир получает достаточное количество пиров от трекера.