Статьи » Битторрент » DHT
DHT
DHT в БитТорренте используется для нахождения новых участников файлообмена.
При подключении к DHT сети БТ клиент устанавливает соединения с несколькими другими клиентами (узлами сети) и сам становится очередным узлом этой сети.
Для поиска пиров клиент посылает своим соседям по сети infohash нужного ему торрент файла. Они спрашивают у своих соседей, а те у своих, и таким образом через некоторое время по возможности находят ему других участников раздачи этого торрента.
DHT есть в клиентах BitTorrent (официальный), µTorrent, BitSpirit, BitComet, а также (несовместимо со всеми остальными) в Azureus.
В более общем смысле DHT
означает децентрализованную распределенную систему
для объединения большого количества постоянно исчезающих и появляющихся узлов
и эффективной передачи сообщений между ними.
На основе DHT структур можно строить более сложные системы,
такие как P2P файлообмен, кооперативное веб кеширование, DNS сервисы и т.п.
Реализация DHT в БТ основана на варианте DHT, называемом Kademlia, и использует UDP протокол.
PEX
PEX (Peer exchange) - это обмен списками пиров между участниками одной и той же БТ раздачи.
В то время как DHT фактически образует независимую от БТ протокола сеть, PEX гораздо проще - это дополнительные сообщения между уже соединенными по БТ протоколу клиентами.
PEX может быть только вспомогательным средством получения пиров, хотя бы потому, что не может помочь подключиться к раздаче новым участникам.
PEX есть в клиентах Azureus, BitComet, µTorrent и BitTornado, причем в каждом клиенте по-своему, поэтому PEX между собой пользуются только одинаковые клиенты.
Функции
-
И DHT и PEX фактически выполняют основную функцию трекера -
помогают участникам файлообмена узнать друг о друге. Они:
- снижают нагрузку на трекер: некоторые клиенты, получая пиров через DHT или PEX, реже обращаются за списком пиров на трекер
- поддерживают участников вместе в периоды, когда трекер временно недоступен
Кроме того, DHT может использоваться и как единственный источник информации о других участниках - если торрент файл сразу создавался без трекера (trackerless)
DHT/PEX и закрытые трекеры
На открытых трекерах, где каждый может скачать торрент и участвовать в раздаче, функции DHT и PEX служат на благо всего участников.
Закрытым трекерам в первую очередь важно, чтобы в раздачах могли участвовать только зарегистрированные пользователи, и чтобы они соблюдали определенные правила.
При первом обращении клиента закрытый трекер имеет возможность не допустить его к раздаче, просто не сообщая ему адреса других клиентов-участников. Поэтому для закрытого трекера важно, чтобы клиенты не получали эти адреса через DHT/PEX.
Private key
DHT и PEX появились в клиентах Azureus и BitComet примерно летом 2005 года. Администраторы многие закрытых трекеров были недовольны такой новой функциональностью, и поэтому стали запрещать на трекере эти новые версии клиентов.
Тогда разработчики клиентов предложили новый ключ внутри торрент файла: private. Если он равен 1, то клиент обязан для этого торрента автоматически отключать DHT/PEX независимо от желания пользователя.
Правильно настроенные закрытые трекеры сами принудительно вставляют private:1
во все торренты, выкладываемые на трекере, а также запрещают несколько устаревших версий клиентов
(имеющих DHT или PEX, но еще не знающих про private key).
Пользователи трекера просто не могут на раздачах использовать DHT/PEX, и проблемы нет.
Заблуждение про статистику
Иногда встречается мнение, что включенный в клиенте DHT как-то влияет на учет статистики клиента, например "раздавал через DHT, значит статистика шла мимо трекера". Это неверно:
- клиент рапортует статистику только на трекер, через DHT/PEX вообще никакого подсчета статистики не ведется
- клиент рапортует трекеру суммарные данные об объемах им скачанного и отданного всем пирам, с которыми общался, независимо от того, узнал клиент об отдельных пирах через трекер, DHT или PEX, или тот пир вообще начал соединение сам. То есть даже если из-за DHT/PEX на раздаче появятся левые пользователи, клиент все равно сообщит на трекер все, что у них скачал и отдал.
Правильный учет статистики зависит только от состояния трекера: работает трекер - статистика учитывается, не работает - не учитывается. Только в случае длительно неработающего трекера DHT/PEX может играть косвенную роль, не давая постепенно затухнуть файлообмену на такой "раздаче без учета статистики".
- Кроме того, часто пользователи просто забывают, что на их закрытом трекере все торренты private, и следовательно DHT/PEX в раздачах в принципе не используется.
Отключать ли DHT
Безусловно отключать DHT стоит в следующих двух случаях:
1) Вы качаете с закрытого трекера с системой passkey, на котором администраторы не хотят или не умеют делать все торренты private. Дело в том, что через DHT пользователи могут узнать passkey других пользователей, и нечестные пользователи могут использовать чужие passkey для скачивания под чужой учетной записью.
2) Вы качаете только с правильных закрытых трекеров. Если при этом в клиенте разрешить DHT, то получится, что клиент подключается к DHT сети, тратит на это трафик, но ни на одной раздаче DHT не использует.