NetTraceдокументация

Протоколы

Какие протоколы разбирает 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 переходов;
  • длины из пакета проверяются перед чтением;
  • сбой разбора одного пакета не останавливает программу — пакет помечается как повреждённый.