|
Протоколы с гибким форматом кадра
Для большей части протоколов характерны кадры, состоящие из служебных полей фиксированной длины. Исключение
делается только для поля данных, с целью экономной пересылки как небольших квитанций, так и больших файлов. Способ определения
окончания кадра путем задания длины поля данных, рассмотренный выше, как раз рассчитан на такие кадры с фиксированной структурой
и фиксированными размерами служебных полей.
Однако существует ряд протоколов, в которых кадры имеют гибкую структуру. Например, к таким протоколам
относятся очень популярный прикладной протокол управления сетями SNMP, а также протокол канального уровня РРР, используемый для
соединений типа «точка-точка». Кадры таких протоколов состоят из неопределенного количества полей, каждое из которых может иметь
переменную длину. Начало такого кадра отмечается некоторым стандартным образом, например с помощью флага, а затем протокол
последовательно просматривает поля кадра и определяет их количество и размеры. Каждое поле обычно описывается двумя
дополнительными полями фиксированного размера. Например, если в кадре встречается поле, содержащее некоторую символьную строку,
то в кадр вставляются три поля:
Дополнительные поля «Тип» и «Длина» имеют фиксированный размер в один байт, поэтому протокол легко находит
границы поля «Значение». Так как количество таких полей также неизвестно, для определения общей длины кадра используется либо
общее поле «Длина», которое помещается в начале кадра и относится ко всем полям данных, либо закрывающий флаг.
|