Назад | Перейти на главную страницу

Отправка файла с помощью netcat по UDP: необычный вывод Wireshark

Чтобы продемонстрировать различия между TCP и UDP, я передаю содержимое файла через сетевое соединение и записываю взаимодействие с Wireshark. В TCP все выглядит нормально, но в UDP все становится немного странно.

Я настраиваю прослушивание на машине А с

netcat -ul 5000

Затем отправьте файл с машины B с помощью:

netcat -u <ip address> 5000 < file.txt

Когда я просматриваю журнал Wireshark, я получаю половину сообщения через UDP-пакеты, а половину, по-видимому, через IPv4 вообще без дейтаграммы (см. Снимок экрана ниже).

Это просто Wireshark странно отображает данные, или половина сообщения действительно проходит без чего-либо от UDP? И почему?

Вы получаете один UDP-пакет, размер которого равен размеру отправляемого вами файла. Затем пакет UDP фрагментируется стеком IP на несколько пакетов IP.

Wireshark показывает как исходные фрагментированные пакеты IPv4, так и фрагменты дефрагментированных пакетов UDP.

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

В протоколе TCP протокол определяет наибольший MTU нефрагментируемого пути между хостами и использует этот размер для отправки пакетов правильного размера, поэтому фрагментация на уровне IP не требуется. Это дает преимущества для работы протокола.

Обновить:

IPv4 - это протокол L3 (интернет-уровня), который обрабатывает часть маршрутизации сетевых операций. UDP - это протокол L4 (уровень передачи), который работает поверх IPv4.

И конкретный ответ на ваш вопрос:

Это обычный способ отображения фрагментированных данных в Wireshark, показывая оба уровня протокола. Если у вас есть HTTP-запросы, вы увидите в Wireshark декодированные запросы IPv4 + TCP + HTTP, что тоже нормально.

Половина сообщения не приходит ниоткуда, это одни и те же данные на разных уровнях стека протоколов.