Анализ потери пакетов в Tshark

WiresharkWiresharkBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь анализировать потерю пакетов TCP с помощью командной строки Tshark, которая входит в состав Wireshark. Вы научитесь захватывать сетевой трафик, определять повторные передачи и интерпретировать статистику потерь с помощью практических команд терминала.

В рамках упражнений вы научитесь выявлять шаблоны потери пакетов и понимать метрики сетевого качества. Вы получите практический опыт как при нормальной передаче, так и при моделировании сценариев потери пакетов для устранения проблем с реальными TCP-соединениями.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") wireshark/WiresharkGroup -.-> wireshark/display_filters("Display Filters") wireshark/WiresharkGroup -.-> wireshark/capture_filters("Capture Filters") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/packet_capture -.-> lab-548912{{"Анализ потери пакетов в Tshark"}} wireshark/display_filters -.-> lab-548912{{"Анализ потери пакетов в Tshark"}} wireshark/capture_filters -.-> lab-548912{{"Анализ потери пакетов в Tshark"}} wireshark/packet_analysis -.-> lab-548912{{"Анализ потери пакетов в Tshark"}} wireshark/commandline_usage -.-> lab-548912{{"Анализ потери пакетов в Tshark"}} end

Захват TCP-трафика с помощью фильтра -f "tcp"

На этом этапе вы научитесь захватывать TCP-трафик, используя опцию фильтра захвата -f "tcp" в Wireshark. TCP (Transmission Control Protocol, Протокол управления передачей) является одним из основных протоколов Интернета, ответственным за надежный обмен данными. Этот фильтр позволяет захватывать только TCP-пакеты, что особенно полезно, когда вы хотите сосредоточиться на специфических для TCP поведениях, таких как установка соединения (трёхпроходный рукопожатие), повторные передачи и управление потоком, не отвлекаясь на другой сетевой трафик.

  1. Сначала откройте терминал в виртуальной машине LabEx, нажав на иконку терминала на рабочем столе Xfce или используя сочетание клавиш Ctrl+Alt+T. В терминале вы будете выполнять все команды для сетевого анализа.

  2. Перейдите в каталог по умолчанию, где мы будем хранить файлы с захваченным трафиком:

    cd ~/project

    Этот каталог специально создан для вашей лабораторной работы, чтобы ваши файлы были организованы и отделены от системных файлов.

  3. Начните захват TCP-пакетов, выполнив следующую команду:

    sudo tshark -f "tcp" -w tcp_capture.pcap

    Разберём, что делает каждая часть команды:

    • sudo предоставляет вам права администратора, необходимые для захвата пакетов.
    • tshark - это командная версия Wireshark.
    • -f "tcp" сообщает tshark захватывать только TCP-пакеты.
    • -w tcp_capture.pcap сохраняет захваченные пакеты в файл с именем tcp_capture.pcap.
  4. Во время работы tshark откройте новую вкладку или окно терминала (Ctrl+Shift+T) и сгенерируйте некоторый TCP-трафик. Мы будем использовать curl для выполнения простого веб-запроса:

    curl -I https://www.labex.io

    Флаг -I сообщает curl извлекать только HTTP-заголовки, что генерирует достаточно трафика для нашего анализа без загрузки ненужных данных.

  5. После ожидания около 5 - 10 секунд, чтобы захватить достаточное количество пакетов, остановите захват, нажав Ctrl+C в терминале, где запущен tshark. Вы должны увидеть вывод, похожий на следующий:

    Capturing on 'eth1'
    10 packets captured

    Это подтверждает, сколько TCP-пакетов было захвачено в течение сессии.

  6. Убедитесь, что файл с захваченным трафиком был успешно создан, выполнив команду вывода списка файлов в каталоге:

    ls -lh tcp_capture.pcap

    Опции -lh показывают размер файла в человекочитаемом формате (например, в КБ или МБ) вместе с другими деталями. Это помогает убедиться, что ваш захват был сохранен правильно, прежде чем перейти к следующему шагу.

Проверка повторных передач с помощью фильтра -Y "tcp.analysis.retransmission"

На этом этапе мы рассмотрим повторные передачи TCP, которые происходят, когда отправитель не получает подтверждения (ACK) о получении отправленных пакетов и вынужден их повторно отправить. Это важный метод устранения неполадок в сети, так как частые повторные передачи часто указывают на сеть congestion (затруднения), потерю пакетов или другие проблемы с подключением.

Прежде чем приступить, разберем, что мы будем искать:

  • Повторная передача происходит, когда TCP не получает ACK (подтверждение) в ожидаемое время.
  • Wireshark/tshark могут определить такие случаи с использованием специального фильтра "tcp.analysis.retransmission".
  • Сначала мы проверим существующий захват, а затем создадим новый с имитированными сетевыми проблемами.
  1. Сначала убедитесь, что вы находитесь в каталоге проекта, где хранятся наши файлы с захваченным трафиком:

    cd ~/project
  2. Проанализируем файл с захваченным трафиком, который мы создали ранее, на наличие повторных передач. Команда разбивается на следующие части:

    • -r позволяет прочитать сохраненный файл с захваченным трафиком.
    • -Y применяет фильтр отображения, чтобы показать только повторные передачи.
    tshark -r tcp_capture.pcap -Y "tcp.analysis.retransmission"
  3. Если ваше сетевое соединение было стабильным во время первого захвата, вы, скорее всего, увидите:

    0 packets captured

    Это нормально и означает, что ни один пакет не требовал повторной передачи в течение этого периода захвата.

  4. Чтобы лучше понять повторные передачи, мы создадим новый захват, намеренно вызвав сеть congestion (затруднения). Откройте два окна терминала:

    В первом терминале начните захватывать TCP-трафик:

    sudo tshark -f "tcp" -w retransmission_capture.pcap

    Во втором терминале запустите медленную загрузку, которая может вызвать повторные передачи:

    curl --limit-rate 10k https://www.labex.io

    Через несколько секунд остановите оба процесса, нажав Ctrl+C.

  5. Теперь проверим новый файл с захваченным трафиком на наличие повторных передач:

    tshark -r retransmission_capture.pcap -Y "tcp.analysis.retransmission"

    На этот раз вы должны увидеть список повторно переданных пакетов, показывающих номера последовательности и детали времени, которые помогают диагностировать проблемы с сетевым качеством.

Сводка статистики потерь пакетов с помощью -z tcp,tree

На этом этапе вы научитесь использовать мощную функцию статистики Wireshark с опцией -z tcp,tree. Эта команда позволяет проанализировать TCP-разговоры и выявить шаблоны потери пакетов, предоставляя структурированное обзоры всех TCP-потоков в захваченных данных.

Перед началом разберем, что показывают статистики TCP-разговоров:

  • Дерево отображения представляет собой общение между парами хостов.
  • Он подсчитывает кадры (пакеты) и переданные байты в каждом направлении.
  • Помогает выявить несбалансированный трафик, который может указывать на проблемы.
  1. Сначала убедитесь, что вы находитесь в каталоге проекта, где хранятся ваши файлы с захваченным трафиком:

    cd ~/project
  2. Теперь проанализируем базовую статистику TCP из нашего начального захвата. Эта команда считывает файл с захваченным трафиком и генерирует дерево разговоров:

    tshark -r tcp_capture.pcap -z tcp,tree
  3. Вывод будет представлять собой структурированную таблицу всех TCP-разговоров. Обратите внимание на следующие столбцы:

    • <- показывает трафик, поступающий на вашу машину.
    • -> показывает трафик, исходящий с вашей машины.
    • Total представляет собой сводку по обоим направлениям.
    ======================================================
    TCP Conversations
    Filter:<No Filter>
    |       <-      | |       ->      | |     Total     |
    | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |
    ======================================================
  4. Теперь рассмотрим конкретно захват с повторными передачами. Повторные передачи происходят, когда пакеты теряются и должны быть отправлены повторно:

    tshark -r retransmission_capture.pcap -z tcp,tree

    Ищите разговоры, в которых количество кадров значительно превышает количество в других - это часто указывает на проблемы с повторными передачами.

  5. Для наиболее точного анализа мы можем объединить это с нашим предыдущим фильтром повторных передач. Это покажет только повторно переданные пакеты в дереве разговоров:

    tshark -r retransmission_capture.pcap -Y "tcp.analysis.retransmission" -z tcp,tree

    Это помогает точно определить, в каких разговорах происходит потеря пакетов.

Тихий вывод с помощью опции -q

На этом этапе мы узнаем, как использовать опцию -q в Wireshark для упрощения анализа пакетов. При работе с большими сетевыми захватами вам часто не нужно видеть каждый отдельный пакет — вы хотите получить только важную статистику. Опция -q (quiet, тихий режим) скрывает подробный перечень пакетов и показывает только сводные данные.

  1. Сначала перейдем в рабочий каталог, где хранятся файлы с захваченными пакетами:

    cd ~/project
  2. Теперь проанализируем наш файл с захваченными TCP-пакетами в тихом режиме. Эта команда считывает файл, но показывает только статистику по TCP-разговорам:

    tshark -r tcp_capture.pcap -q -z tcp,tree
  3. Чтобы понять, что делает опция -q, запустим ту же команду без нее. Обратите внимание, как в этом случае перед статистикой выводятся все отдельные пакеты:

    tshark -r tcp_capture.pcap -z tcp,tree
  4. Мы можем сочетать тихий режим с предыдущим фильтром для повторных передач. Это даст нам чистый вид только статистики по повторным передачам:

    tshark -r retransmission_capture.pcap -Y "tcp.analysis.retransmission" -q -z tcp,tree
  5. Формат вывода будет выглядеть так, показывая только статистику по разговорам без деталей пакетов:

    ======================================================
    TCP Conversations
    Filter:tcp.analysis.retransmission
    |       <-      | |       ->      | |     Total     |
    | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |
    ======================================================

Резюме

В этом практическом занятии вы научились анализировать потерю TCP-пакетов с использованием Tshark, применяя практические методы устранения неполадок в сети. Вы захватили TCP-трафик с использованием конкретных фильтров, обнаружили повторные передачи и сгенерировали статистику соединений для оценки производительности сети.

В упражнениях показано, как использовать расширенные функции Tshark, такие как -z tcp,tree для комплексного анализа TCP-потоков и -q для эффективного представления статистических данных. Эти навыки позволяют вам быстро диагностировать и устранять проблемы с потерей пакетов в реальных сетевых средах.