mirror of
https://github.com/bol-van/zapret2.git
synced 2026-03-14 06:13:09 +00:00
update docs
This commit is contained in:
@@ -105,3 +105,4 @@ v0.7.2
|
||||
* zapret-lib: fix broken is_retransmission()
|
||||
* zapret-auto: add success detector logic
|
||||
* nfqws2: clean lua cutoff on profile change
|
||||
* zapret-auto: separate hostkey function
|
||||
|
||||
@@ -1091,12 +1091,12 @@ desync:
|
||||
| replay_piece | number | номер проигрываемой части | нумерация с 1 |
|
||||
| replay_piece_count | number | количество проигрываемых частей| |
|
||||
| replay_piece_last | bool | последняя проигрываемая часть | |
|
||||
| l7payload | string | тип пейлоада текущего пакета или группы пакетов | если неизвестно - unknown |
|
||||
| l7payload | string | тип пейлоада текущего пакета или группы пакетов. список возможных в help тексте nfqws2 | если неизвестно - unknown |
|
||||
| l7proto | string | тип протокола потока | если неизвестно - unknown |
|
||||
| reasm_data | string | результат сборки многопакетного сообщения, либо сам пейлоад, если сборки не было | пока применяется только для tcp |
|
||||
| reasm_offset | string | смещение текущего переигрываемого пакета в сборке | пока применяется только для tcp |
|
||||
| decrypt_data | string | результат сборки и дешифровки пейлоада или пейлоадов нескольких пакетов | применяется для quic |
|
||||
| tcp_mss | number | MSS противоположного конца tcp соединения | только для tcp |
|
||||
| tcp_mss | number | MSS противоположного конца tcp соединения | присутствует всегда, только для tcp |
|
||||
| track | table | данные, привязанные к записи conntrack | только если есть conntrack, может не быть |
|
||||
| arg | table | все аргументы инстанса и их значения | подстановки % и # уже замещены |
|
||||
| dis | table | диссект текущего пакета | |
|
||||
@@ -1117,7 +1117,7 @@ ipv6 extension headers и tcp options представляются в форме
|
||||
|
||||
**ip**
|
||||
| Поле | Описание |
|
||||
|:------|:-----|
|
||||
|:------|:---------|
|
||||
| ip_v | версия ip - 4 |
|
||||
| ip_hl | длина ip заголовка в блоках по 4 байта. 5 без ip options. |
|
||||
| ip_tos | type of service. содержит DSCP |
|
||||
@@ -1133,7 +1133,7 @@ ipv6 extension headers и tcp options представляются в форме
|
||||
|
||||
**ip6**
|
||||
| Поле | Описание |
|
||||
|:------|:-----|
|
||||
|:------|:---------|
|
||||
| ip6_flow | первые 4 байта ipv6 header : version (6), traffic class, flow label |
|
||||
| ip6_plen | длина пакета за вычетом базового хедера ipv6 - IP6_BASE_LEN (40) байт |
|
||||
| ip6_nxt | [следующий протокол](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). если нет exthdr - IPPROTO_TCP (6) или IPPROTO_UDP (17) |
|
||||
@@ -1144,14 +1144,14 @@ ipv6 extension headers и tcp options представляются в форме
|
||||
|
||||
**ip6 exthdr**
|
||||
| Поле | Описание |
|
||||
|:------|:-----|
|
||||
|:------|:---------|
|
||||
| type | [тип хедера](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml) : IPPROTO_HOPOPTS, IPPROTO_ROUTING, IPPROTO_DSTOPTS, IPPROTO_MH, IPPROTO_HIP, IPPROTO_SHIM6, IPPROTO_FRAGMENT, IPPROTO_AH |
|
||||
| next | тип следующего хедера. аналогично type. для последнего хедера может быть IPPROTO_TCP или IPPROTO_UDP |
|
||||
| data | данные без первых двух байтов - типа и длины |
|
||||
|
||||
**udp**
|
||||
| Поле | Описание |
|
||||
|:------|:-----|
|
||||
|:------|:---------|
|
||||
| uh_sport | порт источника |
|
||||
| uh_dport | порт приемника |
|
||||
| uh_ulen | длина udp - header UDP_BASE_LEN (8) + длина пейлоада |
|
||||
@@ -1159,7 +1159,7 @@ ipv6 extension headers и tcp options представляются в форме
|
||||
|
||||
**tcp**
|
||||
| Поле | Описание |
|
||||
|:------|:-----|
|
||||
|:------|:---------|
|
||||
| th_sport | порт источника |
|
||||
| th_dport | порт приемника |
|
||||
| th_x2 | зарезервированное поле. используется для расширенных tcp flags |
|
||||
@@ -1174,10 +1174,62 @@ ipv6 extension headers и tcp options представляются в форме
|
||||
|
||||
**tcp options**
|
||||
| Поле | Описание |
|
||||
|:------|:-----|
|
||||
|:------|:---------|
|
||||
| kind | [тип опции](https://www.iana.org/assignments/tcp-parameters/tcp-parameters.xhtml) : TCP_KIND_END, TCP_KIND_NOOP, TCP_KIND_MSS, TCP_KIND_SCALE, TCP_KIND_SACK_PERM, TCP_KIND_SACK, TCP_KIND_TS, TCP_KIND_MD5, TCP_KIND_AO, TCP_KIND_FASTOPEN |
|
||||
| data | блок данных опции без kind и length. отсутствует для TCP_KIND_END и TCP_KIND_NOOP |
|
||||
|
||||
|
||||
### Структура track
|
||||
|
||||
Таблица track присутствует в desync только, если для текущего пакета была найдена запись в conntrack.
|
||||
Она может быть не найдена, если процесс nfqws2 не получил SYN или SYN,ACK пакет.
|
||||
Например, соединение было установлено ранее, чем был запущен nfqws2. Или если вы принудительно выключили conntrack через `--ctrack-disable`.
|
||||
Весь ваш код должен проверять наличие track прежде, чем обращаться к нему, иначе код будет падать с ошибками.
|
||||
То же самое верно для опциональных полей track. Проверяйте ваш код с `--ctrack-disable`.
|
||||
|
||||
**track**
|
||||
| Поле | Тип | Описание | Примечание |
|
||||
|:------|:-----|:---------|:-----------|
|
||||
| incoming_ttl | number | ttl/hl первого входящего пакета по потоку | может не быть, если не определено |
|
||||
| l7proto | string | протокол потока. список возможных доступен в help тексте nfqws2 | есть всегда. если неизвестно - unknown |
|
||||
| hostname | string | имя хоста. определяется на основе анализа L6/L7 протоколов | появляется только после определения |
|
||||
| hostname_is_ip | bool | является ли hostname ip адресом | только если есть hostname |
|
||||
| lua_state | table | таблица для хранения состояния, привязанного к потоку | есть всегда, передается с каждым пакетом потока |
|
||||
| lua_in_cutoff | bool | отсечение LUA от входящего направления | только для чтения |
|
||||
| lua_out_cutoff | bool | отсечение LUA от исходящего направления | только для чтения |
|
||||
| t_start | number | unix time первого пакета потока | включает дробную часть с высокой точностью |
|
||||
| pos | table | счетчики по различным направлениям | содержит таблиц client, server, direct, reverse |
|
||||
|
||||
Таблица track.pos содержит подтаблицы с набором счетчиков по двум направлениям - client и server.
|
||||
client означает пакеты от клиента, server - пакеты от сервера.
|
||||
direct and reverse являются просто ссылкам на client и server. Куда указывает direct и reverse зависит
|
||||
от текущего направления - `desync.outgoing` и серверного режима - `b_server`.
|
||||
direct всегда указывает на текущее направление, reverse - на противоположное.
|
||||
|
||||
track.pos содержит еще одно поле - `dt`. Время получения пакета в секундах с момента t_start.
|
||||
Включает дробную часть с высокой точностью.
|
||||
|
||||
Список полей таблицы счетчиков приведен ниже. Подтаблица tcp присутствует только для tcp протокола.
|
||||
|
||||
| Поле | Описание | Примечание |
|
||||
|:------|:---------|:-----------|
|
||||
| pcounter | счетчик пакетов | |
|
||||
| pdcounter | счетчик пакетов с данными | пакеты, у которых размер L4 пейлоада не равен 0 |
|
||||
| pbcounter | счетчик переданных байт | считаются только размеры пейлоада L4, заголовки - нет |
|
||||
| tcp.seq0 | начальный sequence соединения | |
|
||||
| tcp.seq | sequence текущего пакета | |
|
||||
| tcp.rseq | relative sequence текущего пакета | вычисляется как seq-seq0 |
|
||||
| tcp.pos | relative sequence верхней границы текущего пакета | вычисляется как rseq+payload_size |
|
||||
| tcp.uppos | максимальный pos в соединении | |
|
||||
| tcp.uppos_prev | uppos в предыдущем пакете с данными | полезно для определения ретрансмиссий |
|
||||
| tcp.winsize | последнее поле th_win | без коррекции по scale |
|
||||
| tcp.scale | последнее значение tcp опции scale | |
|
||||
| tcp.winsize_calc | коррекция winsize с учетом scale | эффективное значение tcp window size |
|
||||
| tcp.mss | последнее значение tcp опции mss | |
|
||||
|
||||
mss, winsize, scale передаются от одной стороны соединения другой стороне, чтобы она знала о допустимых параметрах партнера.
|
||||
При использовани этих полей важно не перепутать сторону.
|
||||
Если вам нужно узнать какие по размеру пакеты можно отсылать , вам нужно смотреть противоположную сторону - что она может принять.
|
||||
mss дублируется в поле `desync.tcp_mss` независимо от наличия conntrack. Значение там уже рассчитано на то, что оно будет использовано
|
||||
для вычисления размера пакета для отсылки.
|
||||
Если вдруг conntrack нет или mss не был согласован сторонами, выставляется значение по умолчанию - DEFAULT_MSS (1220).
|
||||
|
||||
Reference in New Issue
Block a user