что такое nak и ack

Что такое nak и ack

Протокол XMODEM был разработан довольно давно, в 1977 году (автор Ward Christensen), для предоставления возможности обмениваться данными двум компьютерам через модем (обмен типа точка-точка). В протоколе применен полудуплексный принцип обмена данными, блоками по 128 байт, с кодами квитирования ACK/NACK и проверкой данных с помощью CRC. Благодаря простоте и открытой документации протокол XMODEM нашел широкое применение во многих приложениях. Фактически большинство коммуникационных пакетов, доступных для PC, имеют встроенную поддержку передачи данных через XMODEM.

Из-за своей простоты XMODEM удобно использовать на встраиваемых системах [3], где всегда имеется дефицит по вычислительным ресурсам и памяти. Хорошо получаются загрузчики кода [4], позволяющие перепрошивать программу системы по последовательному каналу связи с помощью готовых утилит терминала. Полудуплексный принцип работы позволяет использовать простейшие физические каналы связи. Например, передатчик и приемник может соединять единственный сигнальный провод (либо это может быть радиоканал на общей частоте для передатчика и приемника), который переключается с приема на передачу, потому что протокол XMODEM не подразумевает одновременной передачи на обоих концах канала связи.

[Немного теории]

XMODEM является полудуплексным (half-duplex) протоколом обмена данными. Протокол не подходит для канала связи, где элементарная посылка состоит менее чем из 8 бит. Приемник после приема пакета будет либо подтвердит (acknowledge, ACK), либо не подтвердит его (not acknowledge, NAK). Улучшенный по сравнению с оригинальной реализацией XMODEM (которая использовала 1 байт CRC) подсчет контрольной суммы CRC использует более надежную 16-разрядную CRC для проверки целостности принятого блока данных. Протокол XMODEM можно считать протоколом, управляемым со стороны приемника, потому что передатчик не обязан автоматически запускать повторные передачи без участия приемника. Однако все-таки во многих реализациях протокола передатчик самостоятельно запускает передачу пакетов при отсутствии активности приемника.

Кратко обмен данными можно описать следующим образом. Приемник начинает обмен предварительными приглашающими посылками символа NAK или «C» в сторону передатчика, чтобы показать свою готовность к приему данных. После этого передатчик посылает 132-байтный (если посылалось приглашение NAK) или 133-байтный пакет (если посылалось приглашение в виде символа ‘C’). Затем приемник проверяет пакет и отвечает кодом ACK или NAK, и в зависимости от этого передатчик либо посылает следующий пакет (если от приемника было подтверждение ACK), либо повторно посылает последний пакет (если от приемника пришел код NAK). Этот процесс продолжается до тех пор, пока приемник не получит код EOT, после чего приемник должен подтвердить завершение приема файла посылкой кода ACK в сторону передатчика. После начальной установки связи (initial handshake) приемник управляет потоком данных с помощью отправки передатчику кодов ACK и NAK.

В таблице представлены управляющие коды (символы) протокола XMODEM.

Таблица 1.1. Специальные символы протокола XMODEM.

СимволЗначениеОписание
SOH0x01Start of Header, начало заголовка.
EOT0x04End of Transmission, конец передачи.
ACK0x06Acknowledge, положительное подтверждение.
NAK0x15Not Acknowledge, отрицательное подтверждение.
ETB0x17End of Transmission Block, конец передачи блока.
CAN0x18Cancel, отмена обмена. Этот символ, посылаемый передатчиком, принуждает приемник отправлять символы ‘C’ или NAK.
C0x43Код ASCII ‘C’.
ctrl/z0x1AМаркер конца файла. Этим кодом заполняется пустое пространство последнего передаваемого блока, дополняя его по размеру до 128 байт.

Передаваемые полезные данные (например файл) могут быть любой длины, однако они передаются блоками жесткого размера, по 128 байт, и протокол не поддерживает передачу точного размера пересылаемого блока данных (файла). Если содержимое данных не укладываются точно в 128-байтную границу по размеру, то необязательно, но желательно, чтобы остальная часть данных была заполнена так называемыми символами ctl/z (код ASCII 0x1A) конца файла (EOF, End of File). Последний передаваемый блок не отличается от всех остальных, таким образом нет «коротких блоков». Некоторые утилиты или программы пользователя не обрабатывают поддержку окончания файла без наличия символов ctrl/z.

Формат пакета XMODEM с поддержкой CRC8 (оригинальный XMODEM):

Байт 1Байт 2Байт 3Байты 4..131Байт 132
Start of Header
(SOH, начало заголовка)
Номер пакетаНомер пакета
(дополнение)
Данные пакета8-bit CRC

Формат пакета XMODEM с поддержкой CRC16 (XmodemCRC):

Байт 1Байт 2Байт 3Байты 4..131Байты 132, 133
Start of Header
(SOH, начало заголовка)
Номер пакетаНомер пакета
(дополнение)
Данные пакета16-bit CRC

Передатчик определит тип используемого протокола (с CRC8 или с CRC16) по байту приглашения, который отправляет приемник. Если приемник передает байт приглашения NAK, то используется пакет с CRC8, если же приемник передает байт приглашения в виде символа ‘C’, то это означает использование пакета с CRC16.

Синхронизация между приемником и передатчиком. Как уже упоминалось, приемник начинает сессию обмена с периодических (с интервалом примерно 3 сек) посылок передатчику символа ASCII “C” (код 0x43), чем показывая передатчику, что ожидается отправка блока с поддержкой проверки алгоритмом CRC. После отправки символа “C” ждет либо истечения таймаута 3 секунды, либо появления в приемном буфере символа от передатчика. При появлении символа он записывается во внутренний буфер, и таймаут сбрасывается. Если символ от передатчика не поступил и таймаут истек, то приемник снова посылает другой символ “C” передатчику, и снова ждет 3 секунды. Этот процесс продолжается, пока приемник не примет полный пакет из 133 байт.

Как только приемник вошел в прием блока, для каждого принимаемого символа и контрольной суммы используется таймаут в 1 секунду. Если приемник хотел бы послать NAK по какой-то любой причине (неправильный заголовок, ошибка фрейма, истек таймаут в процессе приема данных), он должен ожидать чистой линии на входе (когда передатчик ничего не передает в течение 1 секунды). Подробнее см. ниже «Советы по программированию».

Обычно (когда передатчик, приемник и канал связи исправны) в протоколе XMODEM коды NAK используются для следующих ситуаций:

1. Ошибка фрейма (Frame error) при приеме любого байта.
2. Переполнение буфера приема (Overrun error) для любого принятого байта.
3. Повторная отправка пакета.
4. Ошибка CRC.
5. Таймаут приемника (не было приема пакета в течение 1 секунды).

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

Если был принят допустимый номер блока, то это может означать следующее:

1. Этот блок ожидался, в этом случае все в порядке.
2. Это копия ранее принятого блока (номер блока совпал с предыдущим). В этом случае можно считать, что тоже все в порядке, просто показывает, что передатчик по каким-то причинам передатчик принял поврежденный символ ACK, и передал блок заново.
3. Какой-то другой номер блока. Эта ситуация показывает фатальную потерю синхронизации, как например если бы у передатчика были сильные помехи на входе, которые были ошибочно восприняты как символы ACK. В этом случае следует прервать передачу отправкой CAN, после чего запустить сеанс связи повторно.

Алгоритм работы передатчика. Когда передатчик ждет начала передачи, у него есть только один очень большой таймаут, скажем в 1 минуту. Однако во многих текущих реализациях протокола после начала сеанса связи у передатчика есть 10-секундный таймаут, после которого передатчик предпримет повторную передачу блока. Однако разработчик протокола Ward Christensen не рекомендует так делать, оставляя протокол на управление только со стороны приемника. Это сохранит совместимость с уже существующими программами.

Когда у передатчика больше нет данных для отправки, он посылает EOT, ждет ACK, и снова посылает EOT, если ACK не получен. Опять-таки, протокол и в этом случае можно оставить на управление со стороны приемника, и сделать для передатчика единственный таймаут в 1 минуту, после которого передатчик может разорвать сеанс связи.

[Пример сеанса связи]

В таблице для иллюстрации принципа работы протокола XMODEM показан примерный сеанс связи с восстановлением из ситуации с ошибками. Вся передача файла в этом примере состоит из 5 блоков, некоторые из которых передаются повторно.

Некоторые версии протокола используют специальный символ CAN, код ASCII ctrl/x (см. таблицу 1.1), для отмены передачи. Эта опция не вошла в стандартную версию протокола, потому что наличие в протоколе одиночного символа обрыва передачи повышает вероятность ошибочного обрыва передачи из-за случайного превращения символов ACK, NAK или SOH в символ CAN.

[Советы по программированию]

Когда приемник хочет передать NAK, он должен вызвать «очищающую» подпрограмму (PURGE), в которой будет реализован прием с 1-секундным таймаутом, и зацикливание, пока таймаут не истечет. Эта процедура в сущности заключается в ожидании «чистой» линии связи на входе, когда передатчик не передает, что будет гарантировать, что передатчик правильно примет и обработает символ NAK. Вспомните, что протокол рассчитан на обмен в полудуплексе, т. е. передатчик на время своей передачи блокирует работу своего входного канала, что гарантирует отсутствие ошибочной интерпретации помех, которые могли бы возникнуть во входном канале передатчика в процессе передачи.

Желательно добавить код для обработки специальных ошибок приема, таких как ошибка фрейма UART, или переполнение входного буфера. Двухбайтная контрольная сумма (CRC16) лучше защищает данные, чем однобайтная (CRC8), потому что, к примеру, CRC8 дает для байт 0x80 и 0x80 тот же результат, что и для байт 0x00 и 0x00.

[Пример кода, вычисляющего CRC8]

Это простейший алгоритм, который просто считает сумму всех байт (нужно вычислять сумму от 128 байт данных пакета, байты 4..131) с отбрасыванием переполнения. Получится байт суммы, который должен совпадать с байтом 132 пакета.

[Пример кода, вычисляющего CRC16]

[Пример кода, вычисляющего CRC16]

Подпрограмма вернет 16-битное значение контрольной суммы, где старший байт числа должен быть помещен в 132 байт буфера XMODEM (если считать по индексу от 0, то в 131 байт буфера), а младший байт должен быть помещен в 133 байт буфера XMODEM (если считать по индексу от 0, то в 132 байт буфера). Пример использования программы для подсчета CRC16:

[Linux]

Qodem Terminal Emulator

Источник

Пакеты квитирования

Для подтверждения приема, управления потоком и сигнализации об ошибках используются пакеты квитирования, так же как и в других протоколах обмена. Для режима FS (full speed) имеется три пакета квитирования: NAK, ACK и STALL. Все пакеты квитирования не содержат ни контрольной суммы, ни каких либо частей, кроме PID. Как упоминалось выше пакет PID, делится на два полубайта, с одинаковым значением, это и служит защитой от искажения самого пакета квитирования. Пакет ACK подтверждает, успешный прием переданного маркерного пакета или пакета данных. Пакет NAK сообщает о невозможности принять маркер пакет или пакет данных, прямо сейчас. Например, USB устройство занято другой работой, или не успевает обрабатывать поступающие данные, занято обработкой предыдущего пакета. Протоколом допустимо, что USB устройство может квитировать любой принятый пакет данных или пакет маркера, пакетом NAK, кроме пакета SETUP. На принятый пакет SETUP, устройство не должно отвечать пакетом NAK, пакет SETUP обязателен к рассмотрению. Образно можно сказать, что пакетом NAK USB устройство сообщает о необходимости подождать и не торопиться.

Пакет STALL передается USB устройством в случае серьезных ошибок, чтобы сообщить хосту о невозможности дальнейшей работы. Например, в принтере кончилась бумага и попытки передавать данные лишены смысла. Для таких ситуаций USB устройство отправит пакет STALL, сообщая этим, что адресат заблокирован, и бессмысленно загружать шину попытками передачи данных.

Остается невыясненным, а как обрабатывается ситуация, когда пакет поврежден? Если проверка целостности пакета покажет, что он искажен? На принятые, искаж.нные пакеты, ни USB устройство, ни хост, не должны никак отвечать. Точнее говоря, они должны выдержать некоторый временной промежуток молчания, тайм-аут. По отсутствию пакета квитирования передатчик догадается, что пакет искажен и повторит передачу. Если несколько повторов передача будет неудачной, хост перейдет в аварийный режим.

Источник

How to prepare TCP

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

Когда кому-то или чему-то становится плохо, то требуется нечто большее, чем просто констатация данного факта.

Первое — это диагностика проблемы, определение причин сбоя.
Взять и измерить давление, сделать пальпацию, проверить уровень масла в двигателе и так далее, и тому подобное.

А что если проблемы возникли при передаче данных в интернет/интранет-сети?
Тут, по-видимому, потребуются особые средства диагностики.
В особенности будут полезны средства, которые позволяют проводить статистический анализ большого количества данных.
Существует множество разных инструментов.
Часть из них можно найти в такой замечательной программе, как Wireshark.
В меню Statistics (Статистика) Wireshark представлен богатый набор функциональности.
При этом результаты могут представляться не только в общем, но и графическом виде.

Как раз о графическом виде и хочется поговорить.
Рассказать о наборе из пяти графиков статистики TCP StreamGraph.
Позволяют легко и эффективно проводить анализ и диагностику TCP-соединений.

Но прежде чем начинать говорить о графиках, для их лучшего понимания рассмотрим основы теории TCP.

Минимум, необходимый для общего понимания TCP StreamGraph

Ниже приведена картинка с частным случаем TCP обмена данных.
Следует рассматривать как упрощенный вариант.

В примере, нумерация сегментов начинается с единицы.
Хотя в действительности это не совсем так.
Однако то же самое показывает и Wireshark при дефолтных настройках.

Отправитель шлет два сегмента (Seq=1 и Seq=6), содержащих по пять байт данных каждый.
Получатель отвечает, что все байты до 10 получены успешно и ожидается следующий 11-й сегмент (Ack=11).
Отправитель передает еще два (Seq=11 и Seq=16), один из которых теряется в сети (Seq=11).
Получатель констатирует, что в потоке принятых данных возник разрыв.
Сообщает, что начиная с первого байта непрерывно приняты только 10 байт и он по-прежнему ждет 11-й сегмент (Ack=11).
Однако одновременно с этим в подтверждающем сегменте указывает SACK (Selective acknowledgment, выборочное подтверждение) блок, с диапазоном байт, полученных после разрыва. Благодаря SACK отправитель повторно передаст только пропавший сегмент (Seq=11). Без SACK потребовалось бы повторять Seq=16 тоже. Использование SACK должно поддерживаться обеими сторонами обмена.

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

А теперь рассмотрим процесс передачи данных в TCP-соединении через TCP StreamGraph в Wireshark.

Однако, чтобы не описывать графики просто так, сделаю это на простом и понятном примере.
Загружу файл с тестового сервера на свой компьютер, используя протокол HTTP.
Для этого воспользуюсь утилитой curl, а не веб-браузером.
curl поможет создать некоторые проблемы, которые увидим на графиках.
Проблемы возникнут вследствие того, что загрузка будет вестись напрямую в консоль, а не в файл.

Итак, запускаю Wireshark, включаю захват трафика.
Загружаю утилитой curl тестовый файл размером 10Мб с сервера v4.speedtest.reliableservers.com (10MBtest.bin).

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

Останавливаю захват трафика.
В полученном сетевом дампе Wireshark ищу HTTP пакет с GET запросом файла 10MBtest.bin и определяю номер TCP–соединения, в котором он загружался. Или ищем по фильтру tcp contains «10MBtest.bin».

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

Фильтрую весь трафик по номеру TCP-соединения в котором загружался тестовый файл tcp.stream==5.

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

А вот теперь смотрим TCP StreamGraph.

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

Time-Sequence Graph (Stevens)

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

Time-Sequence Graph (Stevens) выглядит как наклонная кривая, состоящая из точек.
Координаты каждой точки графика — это значение Sequence number TCP сегмента (ось Y — Байты) и время его захвата (ось X — секунды).

Соответственно, как говорилось ранее, учитываются только сегменты с данными одного TCP-соединения, перемещавшиеся в определенном направлении, от серверу к клиенту (загрузка, download) или наоборот (выгрузка, upload).
Согласно теории Sequence number, это номер первого байта данных сегмента в общем потоке данных.
Поэтому можно сказать, что график показывает динамику загрузки/выгрузки байт данных в TCP соединении по времени.

На любом участке легко рассчитывается скорость передачи данных, (Sequence number деленная на Time, получаем Байт/сек).
Как следствие, по изменениям наклона участков кривой можно судить об изменениях скорости передачи данных.

В идеальных условиях график выглядит как диагональная линия с большим углом наклона.
Однако на практике это не всегда так.
По аномалиям на кривой графика можно выявить задержки в передаче данных, потери сегментов и их повторные отправки (Retransmission).
На приведенном ниже примере графика во время загрузки файла возникли две схожие проблемы с остановкой передачи данных и потерей сегментов.

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

Горячие клавиши в Windows (краткая справка):
Пошаговое увеличение или уменьшение масштаба графика выполняется через клавиши i/o или прямым выделением участка мышью. Возврат к исходному масштабу, клавиша Home.
Пробел — превращает курсор в перекрестие с вертикальной и горизонтальной вспомогательными линиями.
Цифровые клавиши с 1 по 5 — выбор другого графика из набора.
Ctrl + правая кнопка мыши — появляется окно с увеличенным изображением участка графика из под курсора.

Щелчок мышки на любой точке графика приводит к переходу в интерфейсе Wireshark на соответствующий ей TCP пакет.

Time-Sequence Graph (tcptrace)

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

По внешнему виду Time-Sequence Graph (tcptrace) напоминает предыдущий график и предназначен для более полного анализа возможных проблем. В нем все так же выводятся значения Sequence number сегментов потока данных на временной шкале.
Однако добавился еще один атрибут сегмента — его размер (TCP Segment Len).
Поэтому сегменты отображаются уже не точками, а вертикальными отрезками с засечками на концах, как английская буква I — «ай». Основание отрезка это Sequence number, а длина — размер сегмента в байтах.

Также на графике выводится информация из обратного потока подтверждающих сегментов, Window (Win), Acknowledgment number (Ack) и SACK. Значения Ack отображаются ступенчатой кривой, проходящей ниже сегментов данных.
Каждая ступень, ее вершина — это момент времени прихода подтверждения об общем количестве непрерывно принятых байт получателем.

Аналогично “ступенчато” отображается размер окна принимающей стороны Win.
Кривая проходит выше потока данных.
Вершина ступени — это сумма значений Ack и Win подтверждающего сегмента.

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

Синими вертикальными линиями визуализируются SACK блоки.
SACK может присутствовать в подтверждении, если в сплошном потоке полученных данных возникли разрывы.
Синяя линия — это диапазон байт полученных после разрыва.

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

В общем виде график представляет собой “коридор” из двух ступенчатых кривых, внутри которого перемещаются сегменты с данными. Сужение «коридора» говорит об уменьшении размера окна приема (Win), расширение — об обратном.

На предыдущем графике были обнаружены две проблемы с остановкой передачи данных.
Time-Sequence Graph (tcptrace) внес ясность в причины случившегося.
Уменьшился размер окна (Win) на принимающей стороне.
Отправитель передал максимально допустимое количество сегментов с данными, чтобы не переполнить окно, и остановился.
После того, как получатель сообщил об увеличении размера окна (Window Update), передача данных возобновилась.

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

Throughput Graph

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

Throughput Graph выглядит как множество точек, иногда расположенных весьма хаотично.
Координаты каждой точки — это расчетная скорость перемещения сегмента в потоке данных (ось Y — Байт/сек) и время его захвата (ось X — секунды).

Если быть точным, для сглаживания колебаний на графике фиксируются не реальные, а усредненные значения скорости.
Используется усредняющая функция скользящего среднего (Moving Average, MA) на 20 значений за предыдущий период.
По коду Wireshark, средняя скорость N-го сегмента равна сумме длин всех сегментов от N до N-20, деленная на дельту по времени между их захватом.

Как следствие, две задержки в передаче данных, вызванные уменьшением размера окна (Win), привели к падению Throughput в проблемные моменты времени. В остальное время скорость закачки варьировалась в пределах диапазона от 1.4 до 3.4 МБайт.

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

Round Trip Time Graph

Round Trip Time (RTT) — это время, прошедшее между отправкой сегмента с данными и получением подтверждения о его успешной доставке.

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

Round Trip Time Graph показывает RTT (ось Y — секунды) по каждому сегмента из потока данных.
Идентификатором сегмента выступает его Sequence number (ось X — Байты).

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

При нормальных условиях большая часть точек концентрируется в нижней части графика.

В примере RTT почти все время не превышает 0.1 сек., за исключением проблемных моментов, когда RTT подскакивала до 0.4 сек.

Все графики связаны между собой формулой Throughput = Window size / RTT

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

Window Scaling Graph

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

Координаты каждой точки Window Scaling Graph — это размер окна Windowsize (ось Y — Байты) сегмента на момент времени его захвата (ось X — секунды).

В Window Scaling Graph присутствует информация о двех проблемных случаях сокращения размера окна до критичных размеров.
Это полностью подтверждает показаниями на Time-Sequence Graph.

что такое nak и ack. Смотреть фото что такое nak и ack. Смотреть картинку что такое nak и ack. Картинка про что такое nak и ack. Фото что такое nak и ack

Заключение

Ну вот, кажется, и все. Что хотел — сказал.
Информации по теме гораздо больше. В статье были изложены только основы, помогающие лучше понять графики из TCP StreamGraph, Wireshark.
Эти графики очень полезны в своем практическом применении и позволяют делать всесторонний обзор любого TCP-соединения, выявлять сетевые проблемы.

Конечно, есть и другие инструменты, подобные TCP StreamGraph, например, tcptrace, captcp.
Не стоит забывать и о IO Graph того же Wireshark. Он обладает более обширной функциональностью выходящей далеко за пределы TCP StreamGraph.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Передатчик
Приемник
Пакет принят успешно
Повреждение на линии во время передачи
Пакет принят успешно
Пакет принят успешно
(ACK не принят из-за помех)(Ошибка фрейма на любом байте)
(Ошибка переполнения приема на любом байте)
Пакет принят успешно
Пакет принят успешно
Завершение сеанса приема
Завершение сеанса передачи