Введение
В этом практическом занятии (лабораторной работе) вы научитесь анализировать потерю пакетов TCP с помощью командной строки Tshark, которая входит в состав Wireshark. Вы научитесь захватывать сетевой трафик, определять повторные передачи и интерпретировать статистику потерь с помощью практических команд терминала.
В рамках упражнений вы научитесь выявлять шаблоны потери пакетов и понимать метрики сетевого качества. Вы получите практический опыт как при нормальной передаче, так и при моделировании сценариев потери пакетов для устранения проблем с реальными TCP-соединениями.
Захват TCP с использованием -f "tcp"
На этом этапе вы научитесь захватывать TCP-трафик, используя опцию фильтра захвата -f "tcp" в Wireshark. TCP (Transmission Control Protocol, Протокол управления передачей) является одним из основных протоколов Интернета, ответственным за надежный обмен данными. Этот фильтр позволяет захватывать только TCP-пакеты, что особенно полезно, когда вы хотите сосредоточиться на специфических для TCP поведениях, таких как установка соединения (трёхпроходный рукопожатие), повторные передачи и управление потоком, не отвлекаясь на другой сетевой трафик.
Сначала откройте терминал в виртуальной машине LabEx, нажав на иконку терминала на рабочем столе Xfce или используя сочетание клавиш
Ctrl+Alt+T. В терминале вы будете выполнять все команды для сетевого анализа.Перейдите в каталог по умолчанию, где мы будем хранить файлы с захваченным трафиком:
cd ~/projectЭтот каталог специально создан для вашей лабораторной работы, чтобы ваши файлы были организованы и отделены от системных файлов.
Начните захват TCP-пакетов, выполнив следующую команду:
sudo tshark -f "tcp" -w tcp_capture.pcapРазберём, что делает каждая часть команды:
sudoпредоставляет вам права администратора, необходимые для захвата пакетов.tshark- это командная версия Wireshark.-f "tcp"сообщает tshark захватывать только TCP-пакеты.-w tcp_capture.pcapсохраняет захваченные пакеты в файл с именем tcp_capture.pcap.
Во время работы tshark откройте новую вкладку или окно терминала (Ctrl+Shift+T) и сгенерируйте некоторый TCP-трафик. Мы будем использовать
curlдля выполнения простого веб-запроса:curl -I https://www.labex.ioФлаг
-Iсообщаетcurlизвлекать только HTTP-заголовки, что генерирует достаточно трафика для нашего анализа без загрузки ненужных данных.После ожидания около 5 - 10 секунд, чтобы захватить достаточное количество пакетов, остановите захват, нажав
Ctrl+Cв терминале, где запущен tshark. Вы должны увидеть вывод, похожий на следующий:Capturing on 'eth1' 10 packets capturedЭто подтверждает, сколько TCP-пакетов было захвачено в течение сессии.
Убедитесь, что файл с захваченным трафиком был успешно создан, выполнив команду вывода списка файлов в каталоге:
ls -lh tcp_capture.pcapОпции
-lhпоказывают размер файла в человекочитаемом формате (например, в КБ или МБ) вместе с другими деталями. Это помогает убедиться, что ваш захват был сохранен правильно, прежде чем перейти к следующему шагу.
Проверка повторных передач с помощью -Y "tcp.analysis.retransmission"
На этом этапе мы рассмотрим повторные передачи TCP, которые происходят, когда отправитель не получает подтверждения (ACK) о получении отправленных пакетов и вынужден их повторно отправить. Это важный метод устранения неполадок в сети, так как частые повторные передачи часто указывают на сеть congestion (затруднения), потерю пакетов или другие проблемы с подключением.
Прежде чем приступить, разберем, что мы будем искать:
- Повторная передача происходит, когда TCP не получает ACK (подтверждение) в ожидаемое время.
- Wireshark/tshark могут определить такие случаи с использованием специального фильтра "tcp.analysis.retransmission".
- Сначала мы проверим существующий захват, а затем создадим новый с имитированными сетевыми проблемами.
Сначала убедитесь, что вы находитесь в каталоге проекта, где хранятся наши файлы с захваченным трафиком:
cd ~/projectПроанализируем файл с захваченным трафиком, который мы создали ранее, на наличие повторных передач. Команда разбивается на следующие части:
-rпозволяет прочитать сохраненный файл с захваченным трафиком.-Yприменяет фильтр отображения, чтобы показать только повторные передачи.
tshark -r tcp_capture.pcap -Y "tcp.analysis.retransmission"Если ваше сетевое соединение было стабильным во время первого захвата, вы, скорее всего, увидите:
0 packets capturedЭто нормально и означает, что ни один пакет не требовал повторной передачи в течение этого периода захвата.
Чтобы лучше понять повторные передачи, мы создадим новый захват, намеренно вызвав сеть congestion (затруднения). Откройте два окна терминала:
В первом терминале начните захватывать TCP-трафик:
sudo tshark -f "tcp" -w retransmission_capture.pcapВо втором терминале запустите медленную загрузку, которая может вызвать повторные передачи:
curl --limit-rate 10k https://www.labex.ioЧерез несколько секунд остановите оба процесса, нажав
Ctrl+C.Теперь проверим новый файл с захваченным трафиком на наличие повторных передач:
tshark -r retransmission_capture.pcap -Y "tcp.analysis.retransmission"На этот раз вы должны увидеть список повторно переданных пакетов, показывающих номера последовательности и детали времени, которые помогают диагностировать проблемы с сетевым качеством.
Сводка статистики потерь с использованием -z tcp,tree
На этом этапе вы научитесь использовать мощную функцию статистики Wireshark с опцией -z tcp,tree. Эта команда позволяет проанализировать TCP-разговоры и выявить шаблоны потери пакетов, предоставляя структурированное обзоры всех TCP-потоков в захваченных данных.
Перед началом разберем, что показывают статистики TCP-разговоров:
- Дерево отображения представляет собой общение между парами хостов.
- Он подсчитывает кадры (пакеты) и переданные байты в каждом направлении.
- Помогает выявить несбалансированный трафик, который может указывать на проблемы.
Сначала убедитесь, что вы находитесь в каталоге проекта, где хранятся ваши файлы с захваченным трафиком:
cd ~/projectТеперь проанализируем базовую статистику TCP из нашего начального захвата. Эта команда считывает файл с захваченным трафиком и генерирует дерево разговоров:
tshark -r tcp_capture.pcap -z tcp,treeВывод будет представлять собой структурированную таблицу всех TCP-разговоров. Обратите внимание на следующие столбцы:
<-показывает трафик, поступающий на вашу машину.->показывает трафик, исходящий с вашей машины.Totalпредставляет собой сводку по обоим направлениям.
====================================================== TCP Conversations Filter:<No Filter> | <- | | -> | | Total | | Frames Bytes | | Frames Bytes | | Frames Bytes | ======================================================Теперь рассмотрим конкретно захват с повторными передачами. Повторные передачи происходят, когда пакеты теряются и должны быть отправлены повторно:
tshark -r retransmission_capture.pcap -z tcp,treeИщите разговоры, в которых количество кадров значительно превышает количество в других - это часто указывает на проблемы с повторными передачами.
Для наиболее точного анализа мы можем объединить это с нашим предыдущим фильтром повторных передач. Это покажет только повторно переданные пакеты в дереве разговоров:
tshark -r retransmission_capture.pcap -Y "tcp.analysis.retransmission" -z tcp,treeЭто помогает точно определить, в каких разговорах происходит потеря пакетов.
Тихий вывод с помощью -q
На этом этапе мы узнаем, как использовать опцию -q в Wireshark для упрощения анализа пакетов. При работе с большими сетевыми захватами вам часто не нужно видеть каждый отдельный пакет — вы хотите получить только важную статистику. Опция -q (quiet, тихий режим) скрывает подробный перечень пакетов и показывает только сводные данные.
Сначала перейдем в рабочий каталог, где хранятся файлы с захваченными пакетами:
cd ~/projectТеперь проанализируем наш файл с захваченными TCP-пакетами в тихом режиме. Эта команда считывает файл, но показывает только статистику по TCP-разговорам:
tshark -r tcp_capture.pcap -q -z tcp,treeЧтобы понять, что делает опция
-q, запустим ту же команду без нее. Обратите внимание, как в этом случае перед статистикой выводятся все отдельные пакеты:tshark -r tcp_capture.pcap -z tcp,treeМы можем сочетать тихий режим с предыдущим фильтром для повторных передач. Это даст нам чистый вид только статистики по повторным передачам:
tshark -r retransmission_capture.pcap -Y "tcp.analysis.retransmission" -q -z tcp,treeФормат вывода будет выглядеть так, показывая только статистику по разговорам без деталей пакетов:
====================================================== TCP Conversations Filter:tcp.analysis.retransmission | <- | | -> | | Total | | Frames Bytes | | Frames Bytes | | Frames Bytes | ======================================================
Резюме
В этом практическом занятии вы научились анализировать потерю TCP-пакетов с использованием Tshark, применяя практические методы устранения неполадок в сети. Вы захватили TCP-трафик с использованием конкретных фильтров, обнаружили повторные передачи и сгенерировали статистику соединений для оценки производительности сети.
В упражнениях показано, как использовать расширенные функции Tshark, такие как -z tcp,tree для комплексного анализа TCP-потоков и -q для эффективного представления статистических данных. Эти навыки позволяют вам быстро диагностировать и устранять проблемы с потерей пакетов в реальных сетевых средах.


