На этом занятии мы углубим работу с Wireshark: разберём различие фильтров захвата и отображения, синтаксис по полям (ip.src, tcp.port, http, dns). Затем - прикладной уровень стека TCP/IP: протоколы HTTP, DNS, SMTP, роль приложений и транспортные сервисы (TCP и UDP), типичные порты. В конце - анализ пакета «снизу вверх», поиск по захвату и экспорт объектов, интерактивы, тест и пошаговая практика в Wireshark.
Компьютерные сети, с которыми мы работаем (в том числе интернет), относятся к сетям с коммутацией пакетов. Данные для передачи делятся на небольшие части - пакеты; каждый пакет передаётся по сети независимо от других и может идти своим маршрутом. В Wireshark мы видим именно эти пакеты: в верхней части окна - список пакетов, в средней - дерево протоколов выбранного пакета, в нижней - данные в шестнадцатеричном виде.
Понимание того, что трафик - это поток отдельных пакетов, помогает правильно настраивать захват и фильтры: мы отбираем пакеты по протоколу, адресу или порту, чтобы найти нужный диалог (например один HTTP-запрос и ответ).
Фильтр захвата (capture filter) задаётся до начала захвата и определяет, какие пакеты вообще
попадут в буфер Wireshark. Синтаксис - язык BPF (Berkeley Packet Filter): например tcp port 80 -
только TCP-трафик с портом 80 (HTTP). Так мы уменьшаем объём сохраняемых данных и не сохраняем лишний трафик.
Фильтр отображения (display filter) применяется к уже захваченным пакетам: он не удаляет
пакеты из файла, а лишь скрывает часть из списка. Синтаксис свой - например tcp.port == 80,
http, dns, ip.addr == 192.168.1.1. Различие важно: capture filter -
«что записывать», display filter - «что показывать» из записанного.
В display filter можно указывать поля протоколов: ip.src - IP-адрес
отправителя, ip.dst - получателя; tcp.port == 80 - порт 80 (в любой стороне);
tcp.port == 443 - HTTPS. По прикладным протоколам: http - показывать только пакеты,
в которых Wireshark распознал HTTP; dns - только DNS. Комбинации:
ip.addr == 192.168.1.1 (адрес в src или dst), http.request - только HTTP-запросы.
Для capture filter синтаксис другой: host 192.168.1.1, port 80,
tcp port 80. Wireshark при вводе display filter подсказывает доступные поля и подсвечивает ошибки
- пользуйтесь строкой фильтра над списком пакетов.
Чтобы видеть только веб-трафик по HTTP, введите в строку display filter (над списком
пакетов): http. Для HTTPS по порту: tcp.port == 443 (содержимое будет зашифровано,
но пакеты видны). Если нужно записывать только HTTP уже при захвате - в настройках захвата укажите
capture filter: tcp port 80.
На прикладном уровне работают сетевые приложения и прикладные протоколы: HTTP (веб), DNS (разрешение имён в IP), SMTP (почта), FTP, и многие другие. Каждый протокол задаёт формат сообщений и правила обмена - например HTTP: «запрос GET с URL» и «ответ с кодом 200 и телом страницы».
Приложения не вникают в то, как пакеты передаются по кабелю или по Wi‑Fi - они опираются на транспортный уровень. Прикладной уровень отвечает за семантику: что означают данные (запрос страницы, разрешение имени, письмо), а не за доставку байтов по сети.
Роль прикладного уровня - определять смысл данных (запрос страницы, разрешение доменного имени в адрес, отправка письма) и изолировать приложения от деталей сети. Разработчик пишет код, который отправляет HTTP-запрос или DNS-запрос; ему не нужно программировать маршрутизацию или передачу по Wi‑Fi - за это отвечают нижние уровни.
Такая изоляция позволяет менять канальные технологии (Ethernet, Wi‑Fi, мобильная сеть) без изменения прикладных протоколов: браузер и веб-сервер по-прежнему общаются по HTTP поверх TCP и IP.
Прикладные протоколы используют один из двух основных протоколов транспортного уровня. TCP (Transmission Control Protocol) обеспечивает надёжную передачу потока байтов с установкой соединения: все данные дойдут в правильном порядке, повторная передача при потере. Подходит для веб-страниц, загрузки файлов, почты.
UDP (User Datagram Protocol) передаёт дейтаграммы - короткие сообщения без установки соединения, без гарантий доставки и порядка. Используется там, где важна скорость и допустимы потери (стриминг, DNS-запросы, голосовая связь). В Wireshark по полю «протокол» видно, какой транспортный протокол несёт прикладные данные.
Порт - это номер, по которому ОС доставляет данные нужному процессу. Типичные порты: 80 -
HTTP (веб), 443 - HTTPS (веб по TLS), 53 - DNS (запросы имён), 25 - SMTP (отправка почты), 22 - SSH, 21 - FTP.
В Wireshark в колонках можно видеть порты источника и назначения; фильтр tcp.port == 80 покажет
весь трафик, связанный с портом 80.
По порту часто можно понять прикладной протокол: если в пакете TCP порт назначения 80 - скорее всего это HTTP-запрос к веб-серверу; порт 53 - DNS. Один хост может одновременно обслуживать много соединений на одном порту (например много клиентов к веб-серверу на 80).
При разборе одного пакета в Wireshark удобно идти снизу вверх: сначала кадр уровня сетевых интерфейсов (Ethernet или Wi‑Fi) - заголовок с MAC-адресами и типом; затем заголовок IP - адреса отправителя и получателя; затем заголовок TCP или UDP - порты и служебные поля; в конце - payload прикладного уровня (например текст HTTP или данные DNS).
В дереве пакета (средняя панель) каждый уровень раскрывается отдельно; выделение строки подсвечивает соответствующие байты в шестнадцатеричном дампе. Так наглядно видна инкапсуляция: данные приложения упакованы в TCP, TCP - в IP, IP - в кадр канального уровня.
Поиск по захвату: в меню Edit → Find Packet можно искать пакет по строке в данных (например «GET » или «HTTP/1.1»), по hex или по фильтру. Удобно, когда пакетов много и нужно быстро найти нужный диалог.
Экспорт объектов: для HTTP в меню File → Export Objects → HTTP можно извлечь перехваченные объекты (HTML-страницы, изображения, скрипты), сохранённые в захвате. Так можно посмотреть содержимое страницы «как получил браузер» и проверить ответ сервера.
Типичный пример: вы открыли в браузере страницу по HTTP; Wireshark захватил трафик. Найдите пакет с ответом
сервера (фильтр http.response или по коду 200 в данных). Откройте пакет - в дереве будет цепочка:
Ethernet (тип 0x0800 - IPv4), Internet Protocol (Source, Destination),
Transmission Control Protocol (порты, например 80 - сервер, ephemeral - клиент),
Hypertext Transfer Protocol - здесь заголовки ответа (HTTP/1.1 200 OK, Content-Type,
Content-Length) и тело (HTML).
По полям пакета видно, что это прикладной протокол: в данных есть текст «HTTP», «GET» или «200 OK» - семантика прикладного уровня. Нижележащие уровни только доставляют байты.
Да. По клику правой кнопкой по пакету → Follow → TCP Stream Wireshark собирает все пакеты одного TCP-соединения и показывает данные потока в одном окне - запросы и ответы подряд. Для HTTP там будет виден текст запроса (GET, заголовки) и ответа (код, заголовки, тело). Аналогично Follow → HTTP Stream - только HTTP-часть диалога.
Это удобно для разбора одного сеанса с сервером без переключения между десятками пакетов.
Wireshark: фильтр захвата (BPF) - что записывать; фильтр отображения - что показывать (http, dns, ip.src, tcp.port и др.). Прикладной уровень: приложения и протоколы (HTTP, DNS, SMTP); семантика данных и изоляция от нижних уровней; транспорт - TCP (надёжный поток) и UDP (дейтаграммы); типичные порты 80, 443, 53, 25. Анализ пакета снизу вверх (Ethernet → IP → TCP/UDP → приложение); поиск по захвату и экспорт HTTP-объектов; Follow TCP/HTTP Stream для просмотра диалога. Дальше - задания, тест и практика.
Сопоставьте утверждение с типом фильтра.
Сопоставьте порт с типичным прикладным протоколом.
Расставьте уровни в порядке от нижнего к верхнему (как они идут в пакете при разборе в Wireshark: первый - самый внешний, последний - прикладные данные).
1. Какой транспортный протокол использует HTTP?
2. Какой транспортный протокол обычно использует DNS (запрос имени)?
3. Display filter для показа только HTTP-пакетов:
Для доступа к практике нужно набрать не менее 80% (минимум 8 из 10 правильных ответов).
1. Фильтр захвата (capture filter) задаётся:
2. Синтаксис tcp.port == 80 относится к:
3. Порт 53 по умолчанию использует протокол:
4. TCP обеспечивает:
5. Прикладной уровень в модели TCP/IP отвечает за:
6. Анализ пакета в Wireshark «снизу вверх» - это:
7. Follow → TCP Stream в Wireshark показывает:
8. Порт 443 обычно используется для:
9. Экспорт объектов HTTP в Wireshark (File → Export Objects → HTTP) позволяет:
10. UDP используется для:
Выполните пошаговые действия на своём компьютере. Вам понадобится установленный Wireshark и доступ в интернет. Захват только своего трафика. Файл для сдачи не требуется - только выполнение шагов и самопроверка по результату на экране.
tcp port 80 - тогда будут записываться только пакеты TCP с портом 80 (HTTP). Для этого шага можно
остановить текущий захват (красный квадрат), снова открыть Capture → Options, задать фильтр и запустить захват
заново. Если не хотите ограничивать трафик - пропустите этот шаг и продолжайте с текущим захватом.
http и нажмите Enter или кнопку
применения. Убедитесь, что в списке остались только пакеты, в которых Wireshark распознал протокол HTTP.
http.request - отобразятся только HTTP-запросы. Выберите один пакет с запросом
GET. В средней панели раскройте дерево пакета и найдите блок «Hypertext Transfer Protocol» - там будет метод
(GET), URI, версия и заголовки.
port 53 or tcp port 80). В браузере откройте
любой новый сайт по имени (например https://www.wikipedia.org). Остановите захват через 10–15 секунд.
dns. Найдите пакет с DNS-запросом (тип Query). Откройте дерево пакета →
Domain Name System (query) и укажите запрошенное имя (например www.wikipedia.org).
tcp.port == 443. Оцените
долю пакетов с портом 443 (HTTPS) в сессии - современный трафик часто идёт по 443.
http.response. Найдите пакет с ответом 200 OK. В дереве пакета
в блоке HTTP найдите заголовки (Content-Type, Content-Length) и при наличии - начало тела ответа (HTML).
Если список пуст (например захват был только HTTPS или без веб-страниц) - пропустите сохранение и перейдите к следующему шагу.
Ответьте себе (без отправки):
Практика завершена. На следующем занятии - прикладной уровень и протокол HTTP подробнее, разбор в Wireshark.