Кратко

  • History Number выбирает согласованный буфер; последовательность, проверка и обмен сбросом ведутся отдельно для каждой истории, а разные истории не требуют общего порядка.
  • C/U=0 описывает несжатую форму Data. При Process-Uncompressed те же байты обновляют историю компрессора и декомпрессора.
  • Номер последовательности, LCB и Reset-Ack имеют разную область доказательства: они не возвращают отброшенные дейтаграммы и не подтверждают передачу выше PPP.

Память, скрытая за исходными байтами

Stac LZS допускает расширение до 12,5%. Если сжатый результат с заголовком не помещается в MRU соседа, RFC 1967 требует передать несжатый пакет LZS-DCP. Но исходная форма данных не отвечает на вопрос о состоянии.

В режиме None получатель не обновляет историю из несжатого пакета. Если отправитель успел изменить свой буфер в неудачной попытке сжатия, он обязан очистить его до следующей дейтаграммы. Process-Uncompressed, напротив, заставляет обе стороны учесть исходные байты и сохранить контекст. C/U показывает представление, а Process Mode — судьбу памяти.

RFC Editor и Datatracker датируют документ августом 1996 года и относят его к Informational, а не к Internet Standard. Базой послужил вариант Stac LZS без DCP, опубликованный как RFC 1974.

Независимый порядок для независимых историй

History Count 0 очищает единственный буфер перед каждой дейтаграммой и требует R-A на каждом исходящем пакете. Порядок между пакетами больше не влияет на распаковку, но потоковая выгода уменьшается.

Значение 1 сохраняет одну историю. При двух и более каждая History Number получает собственный буфер, состояние обнаружения ошибок и сигналы. Порядок обязателен только внутри одного номера. Поле занимает один октет для 2–255 историй и два для 256 и более; при множественных историях оно присутствует и в сжатых, и в несжатых пакетах обоих направлений.

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

Сброс приходит вместе с дальнейшей работой

Заголовок DCP несёт C/U, R-R и R-A. В отличие от общей схемы CCP в RFC 1962, эти биты относятся к History Number пакета и обрабатываются до его данных.

Обнаружив сбой, получатель посылает R-R для повреждённой истории. В том же пакете могут быть обычные данные встречного направления. Сосед очищает указанный компрессор и отвечает R-A только пакетом с Data; если данных нет, он ждёт.

R-A удостоверяет узкий момент: история была чистой непосредственно перед преобразованием данных этого пакета. Передающий счётчик последовательности не сбрасывается; получатель настраивает ожидаемое значение по R-A. До ответа данные этой истории отбрасываются, а запрос при необходимости повторяется. Другие истории продолжаются.

Общий начальный контекст восстановлен, но потерянные, ошибочные и переставленные дейтаграммы не восстановлены.

Почему две проверки нельзя объединить

Однооктетная последовательность начинается с 1 и идёт по модулю 256 в пределах истории для пакетов с Data. Она замечает неожиданный шаг, но не сравнивает содержимое. LCB — XOR 0xFF и всех байтов исходной дейтаграммы, пересчитанный после распаковки. Он разрешён только для сжатых данных, имеет один октет, допускает коллизии и не является криптографической целостностью.

FCS канала и надёжный нумерованный режим RFC 1663 имеют свои границы. Реестр PPP IANA доказывает назначение кодов, не правильность конкретной сессии.

После успешной распаковки PPP ещё должна принять и передать исходный Protocol ID и Information field по RFC 1661; затем требуется квитанция приложения. RFC 1990 нумерует фрагменты Multilink и использует B/E для сборки — это не History Number. RFC 1977 с BSD Compress, LZW и CLEAR принадлежит другой активной теме.

Страница errata при сборе не вернула пригодного содержимого, поэтому отсутствие исправлений не утверждается. RFC 1967 также прямо не обсуждает безопасность.

Тексты Heng Lu о Running-Code Primacy, Minimum Initial Specification, Reality Layers и Reality, Not Advocacy задают редакционную дисциплину: не выдавать символ за выполненный результат. Они не являются историческими источниками по протоколу.