Формирование блоков данных
Адаптационные процедуры уровневых протоколов
Наиболее общими требованиями, выполнение которых необходимо для корректной работы сетевых приложений и сети в целом, являются:
· отсутствие ограничений объема передаваемой информации,
· безошибочность передачи и отсутствие нарушений последовательности отдельных составляющих информационного потока,
· надежная и эффективная адресация сетевых устройств и приложений,
· возможность управления интенсивностью потоков данных.
Для удовлетворения перечисленных требований протоколы практически всех уровней сети выполняют определенные адаптационные процедуры. Основными среди них являются:
· сегментирование информационного потока (формирование блоков данных протокола),
· обнаружение ошибок в принимаемых блоках данных,
· предупреждение передачи на вышестоящий уровень принятых с ошибками блоков данных,
· назначение оригинальных адресов сетевым устройствам и приложениям,
· управление интенсивностью потоков данных (управление источником).
Формирование блоков данных
Формирование блоков данных (кадров, пакетов, сегментов) является уровнезависимой операцией, поскольку форматы заголовков, содержание их полей, предельные размеры блоков данных и т.п., существенно зависят от уровневого протокола. Однако, при всем многообразии форм этой процедуры, обязательными элементами ее являются:
· задание границ блока данных,
· формирование протокольного заголовка блока, содержащего адресную, управляющую и контрольную информацию.
Границы протокольного блока данных указываются посредством вставки специальных последовательностей бит. Существуют несколько методов их формирования.
Метод старт-стопных последовательностей с символьным заполнением был создан для передачи текстовой информации. Он предусматривает обрамление протокольного блока двумя парами специальных символов кодовой таблицы ASCII (American Standard Code for Information Interchange): DLE (Dana Link Escape, h020) + STX (Start of TeXt, h002) - для обозначения начала блока и DLE + ETX (End of TeXt, h003) - в качестве признака окончания блока. Заметим, что символ DLE указывает на то, что следующий за ним символ не является текстом, а имеет специальный управляющий смысл. При таком обозначении границ потеря одного из кадров (здесь кадр – синоним блока данных) не вызывает нарушения кадровой синхронизации пары «передатчик-приемник», поскольку достаточно обнаружить в битовом потоке следующую пару разделительных символов и синхронизация будет восстановлена. При передаче текстовой информации такой принцип формирования ограничителей вполне надежен (символы начала и окончания блока оригинальны, в тексте они встретиться не могут). Однако, использование его при формировании кадров информации произвольной природы (двоичных файлов, например) может привести к ошибкам в определении границ блоков данных, поскольку вероятность появления в произвольном информационном битовом потоке последовательности, соответствующей символу DLE, отлична от нуля. Для предотвращения неверной интерпретации такой комбинации бит, перед нею передатчиком осуществляется вставка еще одного символа DLE (отсюда и название метода – «…с символьным заполнением»). Очевидно, что вероятность появления в информационной последовательности комбинации бит, соответствующей двум подряд идущим символам DLE исчезающе мала. Приемное устройство устраняет один символ DLE из каждой их пары, обнаруженной в потоке (рис. 3.1), а последующие символы интерпретирует как последовательность данных.
Основным недостатком этого метода разметки блоков данных является тесная связь метода кодирования битового содержания блока данных с таблицей ASCII (нередко использование другого способа кодирования данных могло бы быть более целесообразным). Кроме этого, поскольку входной поток обрабатывается побайтно (для простоты будем считать, что каждый символ – это байт), то при передаче несимвольной информации требуется выравнивание блока данных на границу байта, т.е. вставка передатчиком и исключение приемником дополнительных бит. Это увеличивает накладные расходы протокола, усложняет процедуру приема и ограничивает возможности передачи трафика произвольной природы.
Метод старт-стопных последовательностей с битовым заполнением в качестве указателя начала и конца блока использует восьмибитную последовательность (флаг) - {0,1,1,1,1,1,1,0}. Если в информационном битовом потоке встречается последовательность пяти единиц подряд, то после пятой «1» вставляется «0». Тем самым достигается уникальность флаговой последовательности. Соответственно, приемник исключает каждый нуль, следующий после пяти единиц. Очевидно, что при таком способе формирования блока данных, его размер не обязательно должен быть кратен байту и число «дополнительных» бит оказывается меньшим в сравнении с символьным заполнением (меньше «накладные расходы» процедуры).
Для определения конца протокольного блока иногда используется информация о его размере, передаваемая в одном из полей заголовка, и приемник просто отсчитывает заданное количество бит.
Метод индикации границ блока недопустимыми в массиве данных комбинациями битов может быть использован в сетях, пропускная способность физических каналов которых не является «дефицитным» ресурсом (например, в ЛВС). В этом случае, могут быть использованы кодирующие схемы, число возможных состояний в которых больше, чем необходимо для создания алфавита передачи. Например, пусть используется помехоустойчивое кодирование по схеме 4B/5B, при котором каждые четыре информационных бита представляются 5-ти битовым словом. При этом, для передачи любой из шестнадцати возможных 4-битовых комбинаций, требуется использовать шестнадцать из тридцати двух возможных 5-битовых комбинаций, а из оставшихся шестнадцати 5-битовых комбинаций можно выбрать две, которые будут служить индикаторами начала и конца кадра. По-существу, это вариант старт-стопной последовательности, но без вставок битов в информационный поток, что несколько упрощает процедуру приема.