From ece4e52676d046576895316ec39342520ebb33b3 Mon Sep 17 00:00:00 2001 From: bol-van Date: Sun, 14 Dec 2025 15:01:43 +0300 Subject: [PATCH] update docs --- docs/manual.md | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/docs/manual.md b/docs/manual.md index 2cd1d7c..59884f6 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -1103,5 +1103,94 @@ desync: ### Структура диссекта +Диссект включает в себя поля ip, ip6, tcp, udp. +ip присутствует в случае ipv4, ip6 - в случае ipv6. +По наличиню ip или ip6 можно определяют версию ip протокола. Так же по наличию tcp или udp можно определять L4 протокол. + +Сами таблицы хедеров копируют названия полей C структур из `netinet/{ip,ip6,tcp,udp}.h`. +ip адреса и ipv4 options передаются как raw string. +Для преобразования raw ip в текстовую форму можно использовать C функцию ntop. Она определяет версию ip автоматически по размеру. +ipv6 extension headers и tcp options представляются в форме таблиц. + +Все числовые многобайтовые значения автоматически переведены из network byte order в machine byte order. + +**ip** +| Поле | Описание | +|:------|:-----| +| ip_v | версия ip - 4 | +| ip_hl | длина ip заголовка в блоках по 4 байта. 5 без ip options. | +| ip_tos | type of service. содержит DSCP | +| ip_len | полная длина ip пакета вместе со всеми заголовками и пейлоадом | +| ip_id | идентификация пакета для сборки из фрагментов | +| ip_off | offset фрагмента, флаги MF (more fragments) и DF (dont fragment) | +| ip_ttl | time to live - максимальное количество хопов | +| ip_p | номер ip протокола. как правило IPPROTO_TCP или IPPROTO_UDP | +| ip_sum | чексумма ip хедера | +| ip_src | ip источника | +| ip_src | ip назначения | +| options | бинарный блок ip options (практически не используется, режется всеми) | + +**ip6** +| Поле | Описание | +|:------|:-----| +| ip6_flow | первые 4 байта ipv6 header : version (6), traffic class, flow label | +| ip6_plen | длина пакета за вычетом базового хедера ipv6 - IP6_BASE_LEN (40) байт | +| ip6_nxt | следующий протокол. если нет exthdr - IPPROTO_TCP (6) или IPPROTO_UDP (17) | +| ip6_hlim | hop limit. имеет тот же смысл, что и TTL в ipv4 | +| ip6_src | ipv6 адрес источника | +| ip6_dst | ipv6 адрес приемника | +| exthdr | массив таблиц расширенных хедеров (индекс от 1) | + +**ip6 exthdr** +| Поле | Описание | +|:------|:-----| +| type | тип хедера : IPPROTO_HOPOPTS, IPPROTO_ROUTING, IPPROTO_DSTOPTS, IPPROTO_MH, IPPROTO_HIP, IPPROTO_SHIM6, IPPROTO_FRAGMENT, IPPROTO_AH | +| next | тип следующего хедера. аналогично type. для последнего хедера может быть IPPROTO_TCP или IPPROTO_UDP | +| data | данные без первых двух байтов - типа и длины | + +**ip** +| Поле | Описание | +|:------|:-----| +| ip_v | версия ip - 4 | +| ip_hl | длина ip заголовка в блоках по 4 байта. 5 без ip options. | +| ip_tos | type of service. содержит DSCP | +| ip_len | полная длина ip пакета вместе со всеми заголовками и пейлоадом | +| ip_id | идентификация пакета для сборки из фрагментов | +| ip_off | offset фрагмента, флаги MF (more fragments) и DF (dont fragment) | +| ip_ttl | time to live - максимальное количество хопов | +| ip_p | номер ip протокола. как правило IPPROTO_TCP или IPPROTO_UDP | +| ip_sum | чексумма ip хедера | +| ip_src | ip источника | +| ip_src | ip назначения | +| options | бинарный блок ip options (практически не используется, режется всеми) | + +**udp** +| Поле | Описание | +|:------|:-----| +| uh_sport | порт источника | +| uh_dport | порт приемника | +| uh_ulen | длина udp - header UDP_BASE_LEN (8) + длина пейлоада | +| uh_sum | чексумма udp | + +**tcp** +| Поле | Описание | +|:------|:-----| +| th_sport | порт источника | +| th_dport | порт приемника | +| th_x2 | зарезервированное поле. используется для расширенных tcp flags | +| th_off | размер tcp хедера в блоках по 4 байта | +| th_flags | tcp флаги : TH_FIN,TH_SYN,TH_RST,TH_PUSH,TH_ACK,TH_FIN,TH_URG,THE_ECE,TH_CWR | +| th_win | размер tcp окна | +| th_sum | чексумма tcp | +| th_urp | urgent pointer | +| options | массив таблиц tcp опций (индекс от 1) | + +**tcp options** +| Поле | Описание | +|:------|:-----| +| kind | тип опции : 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