docs: introduce NAT detector results and basic usage
This commit is contained in:
1 parent
6a2164717e
commit
b96ae1a718
1 file changed
+11
-11
@@ -1,14 +1,14 @@
|
||||
/* Определяет NAT и доступность незнакомых входящих для рабочего UDP-сокета.
|
||||
* Два узла сообщают, какой внешний IP:порт видят: стабильное равенство означает EIM
|
||||
* (совпадение с локальным — отсутствие трансляции), различие — strict.
|
||||
* Помощник отправляет пакеты до и после исходящего контакта:
|
||||
* вход до контакта означает open, только после — оценку filtered.
|
||||
* Получатель проверяет настоящий IP отправителя; непубличный адрес не подходит.
|
||||
* Команды и результаты идут по работающей сети uTun, тестовые пакеты — напрямую.
|
||||
* Недостаток данных оставляет соответствующую часть результата UNKNOWN.
|
||||
* TCP-вход проверяется отдельно подключением к listener, без переноса UDP-профиля.
|
||||
* Все функции вызываются в uasync-потоке ядра; detector ниже — контекст этого ядра.
|
||||
* Общее описание алгоритма: doc/nat_detection.txt. */
|
||||
/* Модуль определяет тип NAT и доступность входящих для каждого рабочего сокета.
|
||||
* Результат — address_profile с двумя независимыми свойствами:
|
||||
* mapping: UNCHANGED — адрес не меняется; EIM — внешний IP:порт одинаков для разных IP назначения;
|
||||
* DEPENDENT (strict) — внешний IP:порт зависит от IP назначения.
|
||||
* inbound: OPEN — пакеты от незнакомого IP проходят; CONTACT — проходят после исходящего контакта (оценка filtered).
|
||||
* UNKNOWN в любом свойстве означает, что данных для его определения пока недостаточно.
|
||||
* Для UDP сочетания EIM+OPEN и EIM+CONTACT означают eim open и eim filtered. TCP-вход проверяется отдельно.
|
||||
* create(instance) запускает автоматические асинхронные проверки через доступные узлы сети.
|
||||
* get_status(detector, socket, &status) возвращает результат в status.effective_profile и ход проверки в остальных полях.
|
||||
* request_check_*() запрашивает повторную проверку; destroy(detector) останавливает модуль и освобождает его ресурсы.
|
||||
* Все вызовы — в uasync-потоке ядра; detector — его контекст NAT. Алгоритм: doc/nat_detection.txt. */
|
||||
#ifndef NAT_DETECTION_H
|
||||
#define NAT_DETECTION_H
|
||||
|
||||
|
||||
Reference in new issue
Block a user