Настало время рассказать вам про
DHT.
Для любителей получать инфо из первых рук -
ссылка.
А мой рассказ будет простыми словами.
Вы знаете, что для того что бы скачать что-либо "с торрентов", необходимо найти .torrent файл, закачать его к себе на конкпунктер и открыть в программе-качалке. Я, например, ипользую qBittorrent.
В данном случае, у нас в наличии сервер, так называемый - торрент-трекер, который выдает нам .torrent, который содержит информацию о раздачах - peers, которые раздают и инфо о файле/файлах в этой "раздачи".
Дальше, ваша "качалка" делает запросы к пирам из торрент-файла и как бы говорит им: - я знаю, у тебя есть файлы вот с такой то раздачи (ID раздачи в виде хэша), так что отдай мне вот такой то кусок. Все файлы на раздаче делятся на равные кусочки, а на разных пирах содержатся точные копии файлов на раздаче (а точнее кусочков), так что с этим нет никаких проблем.
То есть, существует некое центральное звено(торрент трекер), которое может быть подвергнуто цензуре.
Если совсем просто, то "торренты" работают, примерно так.
Теперь переходим к части DHT.
DHT по сути, это табличка с "ближайшими" участниками DHT сети. Ближайшие участники - вычисляются по специальному алгоритму. Иными словами - это таблица маршрутизации.
Для начала поиска нужен хотя бы один адрес, у которого можно запросить его "сосдей". Так что, с децентрализацией тут не все просто. Теоритически, вы можете свой поисковый движок настроить таким образом, что он будет опрашивать все подряд хосты в Сети и ждать ответа - как только такой пир (участник DHT сети) будет найден, то дальше дело пойдет гораздо быстрее. Но в обще, на старте, всегда используют ивестный пир, который поделится информацией. Такой пир нужен только при первичном запуске, далее будет формироваться и "поддерживаться" локальная табличка с "соседями". Этот протокол поддерживает некоторые типа запросов и определенную логику "поддержки" своей таблицы (он ее обновляет, опрашивая время от времени соседей и так далее).
Что касается запросов, то это анонсы "раздач", "пинг" соседий, поисковые запросы.
Еще надо сказать, что каждый пир в DHT сети имеет свой идентификатор в виде хэша, как и каждая "раздача", как и каждый кусок раздачи. И по-сути, для начала поиска раздачи в такой сети, нужен, хотя бы один, стартовый "сосед" (если с полного нуля) и хэш (id) раздачи - это та самая "магнет" ссылка, которые вы могли видеть в Сети.
Как это связано с радужными таблицами - ну, никак, кроме того, что используются вычисления для нахождения хэш-сумм, которые в дальнейшем используются для идентификации чего-либо. То есть, две эти "технологии" связывает третья, более базового уровня. В вычислительных системах, в обще, любая сложная система состоит из набора более простых, которые друг на друге, как кирпичи в кирпичной системе, работают.
К слову, ныне популярный "блокчейн" так же завязан на вычисления хэш-сумм.