Кратко
- В RFC 1144 компрессор и декомпрессор хранили предыдущий заголовок IPv4/TCP; идентификатор соединения и дельты заменяли на линии большую часть сорока октетов.
- Обычный пакет не исчезал: перед выходом с ограниченного участка полный заголовок восстанавливался, поэтому конечным узлам TCP не требовалось знать о сжатии.
- Потеря одной дельты разводила память сторон; ошибка checksum, состояние toss и несжатое обновление возвращали общий контекст.
Сорок октетов вокруг одной клавиши
RFC 1144 был опубликован в феврале 1990 года для последовательных линий от 300 до 19 200 bit/s. Минимальные IPv4 и TCP давали сорок октетов заголовка. Один символ создавал пакет в 41 октет, ответное эхо — ещё один. По расчёту документа, для передачи 82 октетов за 200 миллисекунд уже требовалось около 4 000 bit/s.
Большой файл распределяет постоянные расходы по крупной полезной нагрузке. Диалог этого сделать не может. Более того, большой пакет, занявший линию, задерживает короткое эхо. На кону стояла не только эффективность, но и ощущение живого удалённого терминала.
Смысл переместился в состояние
Van Jacobson не объявлял поля ненужными. Повторялись их значения. Адреса и порты сохранялись в пределах соединения; sequence, ACK, окно и IP Identification часто менялись по понятным правилам.
На обоих концах хранилась последняя шапка активного потока. Малый CID выбирал слот. UNCOMPRESSED_TCP устанавливал или обновлял полный контекст. Затем COMPRESSED_TCP приносил маску изменений, короткие разности и значения, которые нельзя безопасно вывести. Декомпрессор собирал стандартный IPv4/TCP перед дальнейшей передачей.
Компактное представление оставалось делом одного участка. Конечные TCP-узлы не участвовали в локальной машине состояний. С линии удалялось повторение, а не обязательный формат интернета.
Кодеком служила закономерность
Sequence обычно увеличивается на объём отправленных данных, ACK следует за принятыми байтами, IP Identification нередко делает небольшой шаг. Маска отмечала изменившиеся поля, а переменная длина дешёво кодировала малые дельты. Частые шаблоны интерактивного эха и одностороннего потока получали специальные сокращения.
Необычные формы не угадывались. Фрагменты IP, SYN, FIN, RST, пакет без ACK, новая длина заголовка, неожиданные options и нерегулярные переходы уходили полным путём. Надёжность зависела от умения отказаться от сжатия за границей модели.
На трассах RFC средний сжатый заголовок был близок к трём октетам. Это измерение конкретного материала, не универсальная характеристика. Пространство экономила временная связность пакетов, а не вычёркивание протокольных функций.
Одна потеря создавала две версии прошлого
Дельта верна только при общей базе. Если сжатый кадр потерян, компрессор уже обновил сохранённый заголовок, а декомпрессор остался на прежнем. Следующая разность, приложенная к разным основаниям, создаст разные пакеты.
RFC 1144 использовал существующие свойства TCP. Ошибочные sequence или ACK обычно приводили к провалу TCP checksum. Декомпрессор переходил в toss, отбрасывал новые сжатые кадры и ждал полного обновления. Retransmission и duplicate ACK помогали вызвать его без отдельного диалога исправления.
Checksum не аутентифицирует источник и не исключает любой ущерб. Он ограничивает неверную память. Если байты не передаются потому, что обе стороны якобы их знают, спецификация обязана определить конец этой уверенности и возврат к полной декларации.
Поздние схемы вывели контекст наружу
RFC 2507 в 1999 году обобщил принцип: полный заголовок создаёт контекст, последующие пакеты ссылаются на него и передают приращения. Для не-TCP появились поколения и периодические обновления; для TCP — запросы, ремонт без дельт и правила перестановки.
Память конечна. Когда множество потоков борется за CID, возникает CID thrashing: запись вытесняют до получения выгоды и полный заголовок приходится отправлять снова. Политика сохранения контекста распределяет экономию между потоками.
RFC 4413 позже разделил поля по фактическому поведению: статические, выводимые, предсказуемые и нерегулярные. ROHC framework и профиль TCP подробнее задали инициализацию, состояния, feedback, refresh и CRC для линий с потерями и перестановкой. Это не wire-совместимое продолжение RFC 1144, а более строгий ответ на тот же вопрос об авторитетной памяти.
Источники и пределы
Закрытый набор включает RFC 1144, RFC 2507, RFC 4413, RFC 4995 и RFC 6846. Он устанавливает механизмы и опубликованные примеры, но не нынешнее внедрение, настройки поставщиков, всеобщий выигрыш или постоянную длину в три октета.
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
