Протокол DHT

Andrew Loewenstern <drue at bittorrent.com>, “ Protocol DHT”, public translation into Russian from English More about this translation.

See also 9 similar translations

Translate into another language.

Participants

Firemanser1598 points
Ruzzz1177 points
KOHb416 points
And others...
Join Translated.by to translate! If you already have a Translated.by account, please sign in.
If you do not want to register an account, you can sign in with OpenID.
Pages: ← previous Ctrl next
1 2 3 4 5 6 7

Protocol DHT

Протокол DHT

History of edits (Latest: KOHb 2 years, 7 months ago) §

Overview

Введение

History of edits (Latest: KOHb 2 years, 7 months ago) §

Each node has a globally unique identifier known as the "node ID." Node IDs are chosen at random from the same 160-bit space as BitTorrent infohashes [2]. A "distance metric" is used to compare two node IDs or a node ID and an infohash for "closeness." Nodes must maintain a routing table containing the contact information for a small number of other nodes. The routing table becomes more detailed as IDs get closer to the node's own ID. Nodes know about many other nodes in the DHT that have IDs that are "close" to their own but have only a handful of contacts with IDs that are very far away from their own.

Каждый узел имеет уникальный идентификатор, называемый «node ID». Этот идентификатор случайным образом выбирается из того же 160-битного диапазона значений, что и infohash используемый в BitTorrent протоколе. «Distance metric» (расстояние) используется для сравнения «node ID» двух узлов или «node ID» узла с «infohash» для определения их «близости». Узлам необходимо хранить таблицу маршрутизации, содержащую контактную информацию о небольшом количестве других узлов. Таблица маршрутизации постепенно наполняется идентификаторами, близкими к идентификатору данного узла. Узлам известно о множестве других узлов в DHT, идентификаторы которых «близки» к данному узлу, и лишь о нескольких «далёких».

History of edits (Latest: Ruzzz 2 years, 3 months ago) §

— мне кажется, можно вставить куски перевода с Википедии http://ru.wikipedia.org/wiki/DHT#.D0.... dr15x86

— там перевод для чайникок, почему собственноя и начал перевод технического текста тут KOHb

— Зря вы не добавили «Содержание» и оформили часть текста как аннотацию. Кстати как сделать перевод этой аннотации? Ruzzz

In Kademlia, the distance metric is XOR and the result is interpreted as an unsigned integer. distance(A,B) = |A xor B| Smaller values are closer.

В Kademlia, дистанция рассчитывается при помощи XOR и результат интерпретируется как беззнаковое целое (unsigned integer). distance(A, B) = |A xor B| . Меньшие значения считаются более близкими.

History of edits (Latest: Ruzzz 2 years, 5 months ago) §

— В тексте везде встречается понятие distance metric. Надо решить как его переводить dr15x86

— предлагаю "мера удаленности" KOHb

— «Расстояние» Ruzzz

When a node wants to find peers for a torrent, it uses the distance metric to compare the infohash of the torrent with the IDs of the nodes in its own routing table. It then contacts the nodes it knows about with IDs closest to the infohash and asks them for the contact information of peers currently downloading the torrent. If a contacted node knows about peers for the torrent, the peer contact information is returned with the response. Otherwise, the contacted node must respond with the contact information of the nodes in its routing table that are closest to the infohash of the torrent. The original node iteratively queries nodes that are closer to the target infohash until it cannot find any closer nodes. After the search is exhausted, the client then inserts the peer contact information for itself onto the responding nodes with IDs closest to the infohash of the torrent.

Когда узлу необходимо найти пиров для торрента, он использует «расстояния», сравнивая хеш торрента (infohash) с идентификаторами узлов («node ID») из своей таблицы маршрутизации. Затем он соединяется с известными ему узлами, идентификаторы которых более близки к хешу торрента, и запрашивает у них контактную информацию о пирах, участвующих в данный момент в файлообмене этого торрента. Если узлу, с которым установлена связь, известно о пирах для этого торрента, то в его ответе будет возвращена контактная информация о них. В противном случае, в своем ответе, узел должен вернуть контактную информацию о наиболее «близких» к хешу торрента узлах, из своей таблицы маршрутизации. Далее наш узел циклично опрашивает все более «близкие» к хешу торрента узлы, до тех пор пока не будут найдены все самые «близкие» узлы. После того, как ресурсы поиска исчерпаны, клиент рассылает свою контактную информацию всем ответившим пирам, идентификаторы которых наиболее «близки» к хешу торрента.

History of edits (Latest: Ruzzz 2 years, 3 months ago) §

— не ясно скольким именно узлам отправляется запрос, одному? двум или еще большему количеству? раз речь идет о наиболее близких ID, то наверное запрос уходит одному узлу, с самым близким ID? если на вопрос будет ответ дальше, то надо сделать на это ссылку KOHb

Comment was deleted

— Попробую объяснить работу своими словами. Пусть имеется клиенты А, B, C, которые хотят скачать некий файл с хешем H, но ничего не знают друг о друге. Пусть имеется клиент Z. Он ничего не знает о файле с хешем H, но, так уж выпало судьбой, что Z имеет ID наиболее близкий к хешу H. Клиент A начинает искать пиров качающих файл с хешем H и доходит до клиента Z. Z обламывает A, т.к. ничего не знает о файле H, но при этом Z запоминает ip и порт клиента A. Через некоторое время просыпается клиент B. Он тоже добирается до Z. И вот тут Z сообщает клиенту B о клиенте A. Z так же запоминает координаты клиента B. Когда до Z добирается клиент C, Z сообщает ему об A и B... dr15x86

Comment was deleted

The return value for a query for peers includes an opaque value known as the "token." For a node to announce that its controlling peer is downloading a torrent, it must present the token received from the same queried node in a recent query for peers. When a node attempts to "announce" a torrent, the queried node checks the token against the querying node's IP address. This is to prevent malicious hosts from signing up other hosts for torrents. Since the token is merely returned by the querying node to the same node it received the token from, the implementation is not defined. Tokens must be accepted for a reasonable amount of time after they have been distributed. The BitTorrent implementation uses the SHA1 hash of the IP address concatenated onto a secret that changes every five minutes and tokens up to ten minutes old are accepted.

Когда узел запрашивает информацию о пирах для торрента, в ответ ему также приходит секретное значение «token». Если наш узел впоследствии решит проинформировать узел, к которому обращался ранее, о том что «мы» участвуем в файлообмене по запрашиваемому торренту, наш узел должен будет вернуть обратно этот «token». В свою очередь узел который предоставил «token», проверяет его используя IP нашего узла. Это позволяет предотвратит регистрацию торрентов «на имя» других узлов. Время, в течении которого возвращенный «token» всё ещё будет считаться «валидным», настоящим руководством точно не регламентируется. Token'ы должны приниматься обратно лишь в течении некоторого приемлемого количества времени. Реализация в BitTorrent использует хеш SHA1 от IP адреса и некоторого секретного значения, которое изменяется каждые 5 минут; принимаются token’ы, которым не более 10 минут.

History of edits (Latest: Ruzzz 2 years, 3 months ago) §

Comment was deleted

Pages: ← previous Ctrl next
1 2 3 4 5 6 7