ACK TCP: число в поле не является общим количеством переданных байтов
Увеличить схему
Фотография конкретного исполнения не приложена.
В TCP-трассе acknowledgment number относится к пространству последовательности соединения. Это не счётчик приложения от нуля и не размер последнего сообщения. Для расчёта объёма сначала нужно понять, показывает ли анализатор абсолютные или относительные номера.
RFC 9293 определяет ACK как следующий ожидаемый sequence number. Подтверждение является накопительным для принятой непрерывной части. Условный ACK 5000 в соответствующем контексте не означает, что клиент выполнил операцию на 5000 байт или подтвердил отдельный блок такого размера. Начальное значение последовательности также не обязано быть нулём.
Пропуск внутри потока мешает продвижению cumulative ACK даже при получении более поздних данных. Для дополнительной информации могут использоваться SACK blocks, если расширение согласовано. Поэтому повтор одного ACK number не доказывает отсутствие любых новых пакетов у получателя.
В приёмке сопоставляют оба направления и непрерывные диапазоны последовательности. Отдельно проверяют приём приложением и необходимую фиксацию результата. TCP ACK относится к transport-границе, а чтение, разбор и сохранение полезной операции требуют собственных наблюдений. Такой разбор позволяет не приписывать сетевому подтверждению смысл прикладного ответа.
Основание — Numbered IETF TCP references with RFC7413 explicitly Experimental; selected mechanisms and algorithms only, разделы RFC9293 3.1 TCP header; sequence and acknowledgment numbers. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Основание — указанные номерные RFC TCP. Дополнения и алгоритмы не считаются включёнными автоматически; RFC 7413 о Fast Open имеет статус Experimental. Реальный TCP stack, socket options, трасса и настройки системы не проверялись; соединения и сетевые испытания не выполнялись.
Запросы отправляются на наш e-mail из вашей почтовой программы.