MainPage/Computer NetworkLab 4 Report
Университет ИТМО
Факультет ФПИ и КТ
Отчёт по лабораторной работе 1
«Компьютерные сети»
Санкт-Петербург 2024
1. Цель и краткая характеристика работы
Цель работы – изучить структуру протокольных блоков данных, анализируя реальный трафик на компьютере студента с помощью бесплатно распространяемой утилиты Wireshark.
这项工作的目的是通过使用免费的 Wireshark 实用程序分析学生计算机上的真实流量来研究协议数据块的结构。
В процессе выполнения домашнего задания выполняются наблюдения за передаваемым трафиком с компьютера пользователя в Интернет и в обратном направлении. Применение специализированной утилиты Wireshark позволяет наблюдать структуру передаваемых кадров, пакетов и сегментов данных различных сетевых протоколов. При выполнении УИР рекомендуется выполнить анализ последовательности команд и определить назначение служебных данных, используемых для организации обмена данными в протоколах: ARP, DNS, FTP, HTTP, DHCP.
在做作业时,会观察从用户计算机到互联网以及相反方向的传输流量。使用专用的 Wireshark 实用程序可以观察各种网络协议传输的帧、数据包和数据段的结构。执行 URI 时,建议分析命令序列并确定用于组织协议中数据交换的服务数据的用途:ARP、DNS、FTP、HTTP、DHCP。
2. URL(Zhou Hongxiang)
https://zhousfive.de/
(217.160.0.33)
3. Выполнение работ
4.1. Анализ трафика утилиты ping
- Имеет ли место фрагментация исходного пакета, какое поле на это указывает?
Да, фрагментация исходного пакета имеет место. На втором скриншоте из Wireshark видно, что передаваемый ICMP-пакет разделён на несколько фрагментов. В Wireshark это отображено как “Fragmented IP protocol”. Поля, указывающие на фрагментацию, включают:- Поле “Flags” в заголовке IP-пакета: Бит “More Fragments” (MF) установлен (значение равно 1), что указывает, что пакет был фрагментирован.
- Поле “Fragment Offset”: Указывает смещение текущего фрагмента относительно начала исходного пакета.
- Какая информация указывает, является ли фрагмент пакета последним или промежуточным?
Информация, которая указывает, является ли фрагмент последним или промежуточным, находится в поле “Flags” в заголовке IP-пакета:- Если бит “More Fragments” (MF) установлен (равен 1), это означает, что это промежуточный фрагмент, и за ним последуют другие фрагменты.
- Если бит MF сброшен (равен 0), это означает, что это последний фрагмент пакета.
- Чему равно количество фрагментов при передаче ping-пакетов?
На скриншоте видно, что при передачеping -l 6000
пакет был разделён на 5 фрагментов. Wireshark показывает несколько IP-пакетов с одинаковым значением идентификатора (ID) и разным значением смещения фрагмента (“Fragment Offset”). -
Построить график, в котором на оси абсцисс находится размер_пакета, а по оси ординат – количество фрагментов, на которое был разделён каждый ping-пакет.
Размер пакета | количество фрагментов ————–|———————- 1000 | 1 2000 | 2 3000 | 3 4000 | 3 5000 | 4 6000 | 5 7000 | 5 8000 | 6 9000 | 7 10000 | 7 - Как изменить поле TTL с помощью утилиты ping?
Чтобы изменить значение TTL при использовании утилитыping
, используйте следующие команды:- В Windows:
ping -i [значение TTL] [адрес]
- В Linux/Unix:
ping -t [значение TTL] [адрес]
- В Windows:
- Что содержится в поле данных ping-пакета?
Поле данных ping-пакета содержит дополнительные данные, отправленные вместе с ICMP-запросом. По умолчанию это могут быть псевдослучайные байты или повторяющийся шаблон данных. На втором скриншоте видно содержимое поля данных в шестнадцатеричном и текстовом представлении.
4.2. Анализ трафика утилиты tracert (traceroute)
-
**Сколько байт содержится в заголовке IP? Сколько байт содержится в поле данных? **
IP Header Length: 20 bytes
Data Field: 64 bytes - Как и почему изменяется поле TTL в следующих друг за другом ICMP-пакетах tracert? Для ответа на этот вопрос нужно проследить изменение TTL при передаче по маршруту, состоящему из более чем двух хопов.
Как изменить:- Начальное значение TTL: При запуске tracert, первый ICMP-пакет (или UDP-пакет в случае с traceroute на Unix) отправляется с TTL равным 1.
- Увеличение TTL: В каждом последующем ICMP-пакете значение TTL увеличивается на 1. Таким образом, второй пакет будет иметь TTL равным 2, третий - 3, и так далее.
- Продолжение увеличения: Это продолжается до тех пор, пока пакет не достигнет целевого хоста или не будет превышен максимальный TTL (обычно 30 по умолчанию).
Цель поля TTL - предотвратить бесконечное зацикливание пакетов в сети. Каждый раз, когда он проходит через маршрутизатор, значение TTL уменьшается на 1. Когда значение TTL уменьшается до 0, маршрутизатор отбрасывает пакет и возвращает отправителю ICMP-сообщение «Время превышено».
-
Чем отличаются ICMP-пакеты, генерируемые утилитой tracert, от ICMP-пакетов, генерируемых утилитой ping (см. предыдущее задание).
- Утилита ping отправляет ICMP Echo Request пакеты на конкретный хост и ожидает ICMP Echo Reply.
- Утилита tracert отправляет серию ICMP Echo Request пакетов с увеличивающимся TTL для отслеживания маршрута к удаленному хосту и в поле данных содержат нули
-
Чем отличаются полученные пакеты «ICMP reply» от «ICMP error» и зачем нужны оба этих типа ответов?
ICMP Echo Reply: Это стандартный ответ на ICMP Echo-запрос. Когда хост получает Echo-запрос (например, от команды Ping), он отвечает Echo-ответом, указывая, что он доступен.ICMP Error (Time Exceeded): Этот пакет генерируется маршрутизатором, когда TTL пакета достигает 0. Он сообщает отправителю, что пакет был уничтожен из-за превышения времени жизни. Tracert использует эти пакеты для определения промежуточных маршрутизаторов.
Зачем нужны оба: Echo Reply используется для подтверждения доступности узла. Time Exceeded пакеты нужны для диагностики сети, они позволяют узнать о промежуточных маршрутизаторах на пути к целевому хосту.
-
Что изменится в работе tracert, если убрать ключ «-d»? Какой дополнительный трафик при этом будет генерироваться?
Если убрать ключ -d: Tracert попытается выполнить обратное разрешение IP-адресов в DNS-имена (то есть преобразовать IP-адреса маршрутизаторов на пути в имена хостов).Дополнительный трафик: При этом генерируются дополнительные DNS-запросы для каждого IP-адреса, который tracert обнаруживает на пути к конечной точке. Это приводит к небольшому увеличению времени выполнения команды и дополнительной нагрузке на DNS-сервер.
4.3. Анализ HTTP-трафика
Потому что сайт у варианта не пользует HTTP, поэтому мы здесь используем другой сайт: http://www.moe.gov.cn/
По результатам анализа трассы можно увидеть, как HTTP протокол передает содержимое страницы во время первичного и вторичного (обновленного) запроса.
- Первичное посещение страницы
- Отправка GET-запроса: Браузер отправляет HTTP GET-запрос к серверу, чтобы получить содержимое страницы. Запрос содержит информацию о запрашиваемом ресурсе
- Получение ответа от сервера: Сервер обрабатывает запрос и отправляет HTTP-ответ, который содержит код состояния, заголовки и тело ответа. Обычно при первом запросе сервер возвращает полный ответ со всем содержимым:
- Заголовки: Информация о типе контента, длине, поддержке кеширования и т. д.
- Тело: Само содержимое страницы, например HTML-код.
- Загрузка дополнительных ресурсов: Браузер анализирует HTML и отправляет дополнительные GET-запросы для загрузки встроенных ресурсов, таких как CSS, JavaScript, изображения и т. д.
- Кеширование: Браузер кэширует полученные ресурсы (если это разрешено заголовками ответа, такими как
Cache-Control
,Expires
,ETag
), чтобы ускорить дальнейшие загрузки этой страницы.
-
Вторичный запрос-обновление (Обновление страницы) При повторном посещении страницы или обновлении (нажатие F5) браузер сначала проверяет кэш и затем решает, как обрабатывать запросы:
- Использование кэша:
- Прямая загрузка из кэша (Strong Caching): Если ресурсы в кэше все еще действительны (например,
Cache-Control: max-age
еще не истек), браузер использует кэшированные версии этих ресурсов, не отправляя запросы на сервер. В этом случае браузер просто загружает ресурсы из локального кэша.
- Прямая загрузка из кэша (Strong Caching): Если ресурсы в кэше все еще действительны (например,
- Условный запрос к серверу (Conditional Request):
- Если ресурс истек в кэше, браузер отправляет условный GET-запрос с заголовками, такими как
If-Modified-Since
илиIf-None-Match
(используетETag
), чтобы проверить, изменился ли ресурс на сервере. - Ответ сервера:
304 Not Modified
: Если ресурс не изменился, сервер возвращает ответ304 Not Modified
без тела контента. Браузер использует кэшированную копию.200 OK
: Если ресурс изменился, сервер отправляет новый ресурс с кодом200 OK
и браузер обновляет кэш.
- Если ресурс истек в кэше, браузер отправляет условный GET-запрос с заголовками, такими как
- Использование кэша:
4.4. Анализ DNS-трафика
По результатам анализа собранной трассы, ответьте на следующие вопросы.
- Почему адрес, на который отправлен DNS-запрос, не совпадает с адресом посещаемого сайта?
DNS-запросы отправляются на специальные серверы, называемые DNS-серверами (или резолверами), а не непосредственно на адрес посещаемого сайта. - Какие бывают типы DNS-запросов?
-
A-запрос (Address Record): Используется для получения IPv4-адреса, соответствующего доменному имени. Например, запрос A-записи для
example.com
вернет его IP-адрес. -
AAAA-запрос (IPv6 Address Record): Похож на A-запрос, но используется для получения IPv6-адреса, соответствующего доменному имени.
-
CNAME-запрос (Canonical Name Record): Используется для получения канонического имени для домена. Он позволяет одному доменному имени быть псевдонимом для другого. Например,
www.example.com
может быть CNAME дляexample.com
. -
MX-запрос (Mail Exchange Record): Используется для определения почтового сервера, ответственного за прием электронной почты для домена.
-
NS-запрос (Name Server Record): Указывает на авторитетные DNS-серверы, обслуживающие конкретный домен.
-
TXT-запрос: Возвращает текстовые данные, связанные с доменом. Используется, например, для SPF-записей (борьба со спамом) или подтверждения владения доменом.
-
PTR-запрос (Pointer Record): Используется для обратного DNS-разрешения — получения доменного имени по IP-адресу.`
-
- В какой ситуации нужно выполнять независимые DNS-запросы для получения содержащихся на сайте изображений?
Независимые DNS-запросы для получения изображений с сайта необходимы в ситуациях, когда изображения находятся на других доменах, отличных от домена основного сайта.
4.5. Анализ ARP-трафика
По результатам анализа собранной трассы, ответьте на следующие вопросы.
- Какие МАС-адреса присутствуют в захваченных пакетах ARP-протокола? Что означают эти адреса? Какие устройства они идентифицируют?
- e0:36:76:ec:d9:c5 - адрес отправителя (маршрутизатор) (ip=192.168.0.1)
- 58:1c:f8:b2:d5:72 - адрес устройства получателя (компьютер, с которого производится запрос на сайт) (ip = 192.168.0.4)
- 00:00:00:00:00:00 - broadcast-адре
- Какие МАС-адреса присутствуют в захваченных HTTP-пакетах и что означают эти адреса? Что означают эти адреса? Какие устройства они идентифицируют?
В HTTP-пакетах присутствуют те же самые МАС-адреса, что и в ARP запросе. Они используются для идентификации отправителя и получателя HTTP-пакета. - Для чего ARP-запрос содержит IP-адрес источника?
-
Идентификация отправителя: IP-адрес источника позволяет устройствам в сети определить, кто инициировал ARP-запрос. Это необходимо, чтобы знать, куда отправить ответ.
-
Ответ на запрос: Устройства, получившие ARP-запрос, используют IP-адрес источника для формирования ответа. ARP-ответ содержит MAC-адрес устройства, отправившего запрос, и этот ответ отправляется на указанный IP-адрес.
-
Кеширование: IP-адрес источника помогает устройствам обновить свои ARP-таблицы, добавляя или обновляя записи о том, какой MAC-адрес соответствует определенному IP-адресу. Это необходимо для оптимизации сетевых операций и ускорения последующих взаимодействий.
-
4.6. Анализ трафика утилиты nslookup
Необходимо отследить и проанализировать трафик протокола DNS, сгенерированный в результате выполнения следующих действий:
- Настроить Wireshark-фильтр: «ip.addr == ваш_IP_адрес».
- Запустить в командной строке команду «nslookup адрес_сайта_по_варианту».
- Дождаться отправки трёх DNS-запросов и трёх DNS-ответов (в работе нужно использовать только последние из них, т.к. первые два набора запросов/ответов специфичны для nslookup и не генерируются другими сетевыми приложениями).
- Повторить предыдущие два шага, используя команду: «nslookup -type=NS имя_сайта_по_варианту».
По результатам анализа собранной трассы, ответьте на следующие вопросы.
- Чем различается трасса трафика в п.2 и п.4, указанных выше?
Type: A (1) (Host Address) Type: NS(2) (authoritive Name Server) -
Что содержится в поле «Answers» DNS-ответа?
- NAME — имя хоста.
- TYPE — тип ресурсной записи. Определяет формат и назначение данной ресурсной записи.
- CLASS — класс ресурсной записи. Обычно IN для Internet (Код 0x0001) TTL — (Time To Live) — допустимое время хранения данной ресурсной записи в кэше неответственного DNS-сервера.
- RDLENGTH — длина поля данных.
- RDATA — поле данных, формат и содержание которого зависит от типа записи.
- Каковы имена серверов, возвращающих авторитативный (authoritative) отклик?
Серверов, возвращающих авторитативный отклик, нет