Одноранговый обмен или PEX - это протокол связи, дополняющий BitTorrent протокол обмена файлами. Это позволяет группе пользователей (или пиров ), которые сотрудничают, совместно использовать данный файл, чтобы сделать это более быстро и эффективно.
В первоначальной конструкции протокола обмена файлами BitTorrent одноранговые узлы (пользователи) в группе совместного использования файлов (известной как "рой") полагались на центральный компьютерный сервер, называемый трекером, для находить друг друга и поддерживать рой. PEX значительно снижает зависимость одноранговых узлов от трекера, позволяя каждому одноранговому узлу напрямую обновлять другим в рое, какие одноранговые узлы в настоящее время находятся в рое. Уменьшая зависимость от централизованного трекера, PEX увеличивает скорость, эффективность и надежность протокола BitTorrent.
Пользователи, желающие получить копию файла, обычно сначала загружают торрент файл, который описывает файл (ы) для совместного использования, а также URL-адреса одного или более центральных компьютеров, называемых трекерами, которые поддерживают список одноранговых узлов, в настоящее время совместно использующих файл (ы), описанный в файле.torrent. В первоначальном дизайне BitTorrent одноранговые узлы затем зависели от этого центрального трекера, чтобы находить друг друга и поддерживать рой. Более поздняя разработка распределенных хэш-таблиц (DHT) означала, что частичные списки одноранговых узлов могут храниться другими компьютерами в рое, и нагрузка на центральный компьютер отслеживания может быть уменьшена. PEX позволяет одноранговым узлам обмениваться информацией о рое напрямую, не запрашивая (опрос ) компьютер отслеживания или DHT. Поступая так, PEX использует знания одноранговых узлов, к которым подключен пользователь, запрашивая их адреса одноранговых узлов, к которым они подключены. Это быстрее и эффективнее, чем полагаться только на один трекер, и снижает нагрузку на трекер. Он также удерживает рои вместе, когда трекер не работает.
Одноранговый обмен не может использоваться сам по себе для введения нового однорангового узла в рой. Чтобы установить первоначальный контакт с роем, каждый одноранговый узел должен либо подключиться к трекеру с помощью файла ".torrent", либо использовать компьютер-маршрутизатор, называемый узел начальной загрузки, чтобы найти распределенную хеш-таблицу (DHT), которая описывает список пиров роя. Для большинства пользователей BitTorrent DHT и PEX начнут работать автоматически после того, как пользователь запустит клиент BitTorrent и откроет файл.torrent. Заметным исключением являются «частные торренты», которые не доступны в свободном доступе; они обычно отключают DHT.
Расширения BitTorrent, такие как PEX, обычно реализуются с использованием одного из двух общих протоколов расширения, AZMP или LTEP. Оба типа однорангового обмена отправляют сообщения, содержащие группу одноранговых узлов, которые должны быть добавлены в рой, и группу одноранговых узлов, которые должны быть удалены.
Между разработчиками Azureus и μTorrent было согласовано, что любые клиенты, реализующие любой из описанных выше механизмов, стараются соблюдать следующие ограничения при отправке сообщений PEX:
Некоторые клиенты могут установить эти ограничения и разорвать соединения от клиентов, которые их игнорируют.
Чтобы создать протокол PEX, обеспечивающий равномерно распределенный выбор одноранговых узлов, можно сформировать небольшую распределенную хеш-таблицу (DHT), локальную для торрента. Для каждого желаемого нового однорангового узла нужно искать (равномерно) случайный ключ и использовать узел, ответственный за ключ, в качестве нового однорангового узла. Это концептуально просто, но потребует значительных накладных расходов.
Для торрентов без трекера неясно, предоставляет ли PEX какое-либо значение, поскольку основной DHT может распределять нагрузку по мере необходимости. Каждый узел DHT, действующий как трекер, может хранить только подмножество одноранговых узлов, но это максимальные подмножества, ограниченные только нагрузкой узла DHT, а не представлением одного узла. Частные торренты обычно отключают DHT, и в этом случае может быть полезен PEX при условии, что одноранговый узел получает достаточно одноранговых узлов от трекера.
Существуют три несовместимых реализации PEX (создание отдельных «сетей» в рое)
Большинство клиентов BitTorrent используют PEX для сбора одноранговых узлов в дополнение к трекерам и DHT. С выпуском Vuze 3.0.5.0 все основные клиенты BitTorrent теперь имеют совместимый одноранговый обмен.
Каждый из этих клиентов реализует ту или иную версию однорангового обмена: