Протоколы
Какие протоколы разбирает NetTrace, что именно показывает по каждому и чего пока не умеет.
Поддерживаемые протоколы
| Уровень | Протокол | Что разбирается |
|---|---|---|
| Канальный | Ethernet II | Адреса, тип, заполнение |
| 802.1Q (VLAN) | Номер VLAN, приоритет, вложенные метки | |
| Linux SLL и SLL2 | Заголовок «cooked capture» | |
| Loopback (BSD, OpenBSD) | Семейство протокола | |
| Raw IP | Пакеты без канального заголовка | |
| Сетевой | ARP | Запросы, ответы, самообъявления |
| IPv4 | Все поля заголовка, флаги, опции | |
| IPv6 | Заголовок и цепочка заголовков расширения | |
| ICMP | Тип, код, идентификатор и номер эхо, MTU, адрес перенаправления | |
| ICMPv6 | Тип, код, сообщения обнаружения соседей (ND) | |
| Транспортный | TCP | Заголовок, флаги, опции (MSS, масштаб окна, SACK, метки времени), анализ потока |
| UDP | Заголовок, длина, контрольная сумма | |
| Прикладной | DNS | Запросы и ответы, сжатие имён; записи A, AAAA, CNAME, NS, PTR, MX, TXT, SOA, SRV |
| DHCP | Сообщения и опции: тип, адреса, срок аренды, имя узла, маршрутизатор, DNS | |
| HTTP/1.x | Строка запроса или ответа, заголовки, начало тела | |
| TLS | Записи, рукопожатие, ClientHello с SNI и ALPN, ServerHello, сертификаты, оповещения | |
| X.509 | Из сертификатов TLS: субъект, издатель, срок действия, альтернативные имена | |
| NTP | Режим, слой, метки времени, задержка и разброс |
Полный перечень полей каждого протокола — в справочнике полей.
Как определяется прикладной протокол
Сначала по порту, затем — для HTTP и TLS — по содержимому.
| Протокол | Порты | По содержимому |
|---|---|---|
| DNS | UDP 53, 5353, 5355; TCP 53, 5353 | Нет |
| DHCP | UDP 67, 68 | Нет |
| NTP | UDP 123 | Нет |
| HTTP | TCP 80, 3128, 8000, 8008, 8080, 8888 | Да — на любом порту |
| TLS | TCP 443, 465, 563, 636, 853, 989, 990, 992, 993, 995, 5061, 8443 | Да — на любом порту |
Если TLS или HTTP найден на порту не из этого списка, появляется индикатор «Протокол на нестандартном порту».
Данные, для которых протокол не определён, показываются как Data — их можно найти фильтром data.
Что видно в TLS
TLS не расшифровывается. Доступно то, что передаётся открыто:
| Сообщение | Что показывается |
|---|---|
| ClientHello | Версии, наборы шифров, имя сервера (SNI), протоколы ALPN, поддерживаемые группы |
| ServerHello | Выбранные версия и набор шифров |
| Certificate | Субъект и издатель (CN), срок действия, альтернативные имена (SAN) |
| Alert | Уровень и код оповещения |
| Application Data | Только длина записи |
В TLS 1.3 сертификат сервера зашифрован, поэтому в захвате он не виден — это свойство протокола.
Чего пока нет
| Ограничение | Что это значит на практике |
|---|---|
| Нет сборки сообщений из нескольких TCP-сегментов | Длинный заголовок HTTP или запись TLS, разрезанные на сегменты, разбираются только в первом. Остальные сегменты помечены «продолжается в следующем сегменте». Сами данные целиком видны в содержимом потока |
| Нет сборки фрагментов IP | Фрагменты показываются по отдельности |
| Контрольные суммы не проверяются | Значение показано с пометкой «не проверено» |
| Нет расшифровки TLS | Даже при наличии ключей |
| Нет HTTP/2, HTTP/3, QUIC | Такой трафик виден как TLS или UDP |
| Нет DHCPv6, mDNS, LLMNR как отдельных протоколов | mDNS и LLMNR разбираются как обычный DNS |
| Нет Wi-Fi (802.11), SMB, SSH, RDP, SIP и других | Видны как TCP или UDP с данными |
Сборка сообщений из сегментов, QUIC, DHCPv6 и проверка контрольных сумм запланированы на следующие версии.
Повреждённые пакеты
Пакет считается повреждённым, если его байты не соответствуют формату протокола: длина в заголовке больше самого пакета, недопустимое значение поля, оборванная структура.
- Всё, что удалось разобрать до ошибки, показывается.
- В дереве появляется строка
[Повреждённый пакет: протокол]со смещением. - Строка в списке подсвечивается красным, протоколом значится
Malformed. - Фильтр —
_ws.malformed.
Пакет, обрезанный длиной захвата, повреждённым не считается: он помечается как неполный.
Устойчивость к вредоносным данным
Файлы захвата — недоверенные данные. Разбор ограничен со всех сторон:
- глубина вложенности и число записей в каждом протоколе ограничены;
- сжатие имён DNS не может зациклиться: не больше 16 переходов;
- длины из пакета проверяются перед чтением;
- сбой разбора одного пакета не останавливает программу — пакет помечается как повреждённый.