Перейти к основному содержимому

Протокол ADNL

warning

Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.

Реализация:

Общие сведения

Краеугольным камнем TON является абстрактный сетевой уровень датаграмм (ADNL - Abstract Datagram Network Layer).

Это оверлейный, одноранговый, недоверенный (небольшого размера) протокол датаграмм, работающий поверх UDP в IPv4 (в будущем IPv6), с дополнительным резервным протоколом TCP, если UDP недоступен.

Адрес ADNL

Каждый участник имеет 256-битный адрес ADNL.

Протокол ADNL позволяет отправлять (недоверенные) и получать датаграммы, используя только адреса ADNL. IP-адреса и порты скрыты протоколом ADNL.

Адрес ADNL по сути равен 256-битному открытому ключу ECC. Этот открытый ключ может быть сгенерирован произвольно, тем самым создавая столько различных сетевых идентификаторов, сколько нужно узлу. Однако необходимо знать соответствующий закрытый ключ, чтобы получать (и расшифровывать) сообщения, предназначенные для адреса получателя.

На самом деле, адрес ADNL не является самим открытым ключом; вместо этого это 256-битный хэш SHA256 сериализованного TL-объекта, который может описывать несколько типов открытых ключей и адресов в зависимости от его конструктора.

Шифрование и безопасность

Обычно каждая отправленная датаграмма подписывается отправителем и шифруется, так что только получатель может расшифровать сообщение и проверить его целостность с помощью подписи.

Таблицы соседей

Обычно узел TON ADNL будет имеет некоторую "таблицу соседей", которая содержит информацию о других известных узлах, такую ​​как их абстрактные адреса, открытые ключи, IP-адреса и порты UDP. Со временем он постепенно расширит эту таблицу, используя информацию, собранную с этих известных узлов. Эта новая информация может быть в форме ответов на специальные запросы или иногда удаления устаревших записей.

ADNL позволяет вам настраивать каналы и туннели точка-точка (цепочку прокси).

Поверх ADNL можно построить потоковый протокол, подобный TCP.

Что дальше?