Канальный уровень обеспечивает передачу пакетов данных, поступающих от протоколов верхних уровней, узлу назначения, адрес которого также указывает протокол верхнего уровня. Протоколы канального уровня оформляют переданные им пакеты в кадры собственного формата, помещая указанный адрес назначения в одно из полей такого кадра, а также сопровождая кадр контрольной суммой. Протокол канального уровня имеет локальный смысл, он предназначен для доставки кадров данных, как правило, в пределах сетей с простой топологией связей и однотипной или близкой технологией, например в односегментных или в многосег-ментных сетях Ethernet и Token Ring, разделенных только мостами и коммутато-рами. Во всех этих конфигурациях адрес назначения имеет локальный смысл для данной сети и не изменяется при прохождении кадра от узла-источника к узлу на-значения. Возможность передавать данные между локальными сетями разных тех-нологий связана с тем, что в этих технологиях используются адреса одинакового формата. Производители сетевых адаптеров обеспечивают уникальность адресов независимо от технологии.
Другой областью действия протоколов канального уровня являются связи типа «точка-точка» глобальных сетей, когда протокол канального уровня ответст-венен за доставку кадра непосредственному соседу. Адрес в этом случае не имеет принципиального значения, а на первый план выходит способность протокола восстанавливать искаженные и потерянные кадры, т.к. плохое качество террито-риальных каналов, особенно телефонных, требует выполнения подобных дейст-вий. Наиболее существенными характеристиками метода передачи и протокола, работающего на канальном уровне, являются следующие:
• асинхронный/синхронный;
• символьно-ориентированный/бит-ориентированный;
• с предварительным установлением соединения/дейтаграммный;
• с обнаружением искаженных данных/без обнаружения;
• с обнаружением потерянных данных/без обнаружения;
• с восстановлением искаженных и потерянных данных/без восстановления;
• с поддержкой динамической компрессии данных/без поддержки.
Многие из этих свойств характерны не только для протоколов канального уровня, но и для протоколов более высоких уровней.
Асинхронные протоколы оперируют не кадрами, а отдельными символами, которые представлены байтами со старт-стоповыми символами. Единицей переда-ваемых данных является не кадр данных, а отдельный символ. Некоторые симво-лы имеют управляющий характер, например символ <CR> предписывает дисплею выполнить возврат луча на начало строки. В этих протоколах существуют управ-ляющие последовательности, обычно начинающиеся с символа <ESC>, которые вызывали на управляемом устройстве, например, загрузку нового шрифта на принтер.
В асинхронных протоколах применяются стандартные наборы символов, чаще всего ASCII. Так как первые 32 или 27 кодов в этих наборах являются специ-альными кодами, которые не отображаются на дисплее или принтере, то они ис-пользовались асинхронными протоколами для управления режимом обмена дан-ными. В самих пользовательских данных, которые представляют собой буквы, цифры, а также такие, знаки, как @, %, $ и т.п., специальные символы не втреча-ются, так что проблемы их отделения от пользовательских данных не существует.
Постепенно асинхронные протоколы усложнялись и стали наряду с отдель-ными символами использовать целые блоки данных, то есть кадры. Например, протокол XMODEM передает файлы между двумя компьютерами по асинхронно-му модему. Начало приема очередного блока файла инициируется символьной ко-мандой, т.е. принимающая сторона постоянно передает символ ASCII КАК. Пере-дающая сторона, приняв КАК, отправляет очередной блок файла, состоящий из 128 байт данных, заголовка и концевика. Заголовок состоит из специального сим-вола SOH (Start Of Header) и номера блока. Концевик содержит контрольную сум-му блока данных. Приемная сторона, получив новый блок, проверяла его номер и контрольную сумму. В случае совпадения этих параметров с ожидаемыми прием-ник отправлял символ АСК, а в противном случае ? символ NAK, после чего пе-редатчик должен был повторить передачу данного блока. В конце передачи файла передавался символ ЕОХ.
Как видно из описания протокола XMODEM, часть управляющих операций выполнялась в асинхронных протоколах посылкой в асинхронном режиме отдельных символов, в то же время часть данных пересылалась блоками, что более ха-рактерно для синхронных протоколов.
В синхронных протоколах между пересылаемыми символами (байтами) нет стартовых и стоповых сигналов, поэтому отдельные символы в этих протоколах пересылать нельзя. Все обмены данными осуществляются кадрами, которые име-ют в общем случае заголовок, поле данных и концевик (рис.14). Все биты кадра передаются непрерывным синхронным потоком, что значительно ускоряет пере-дачу данных.
Так как байты в этих протоколах не отделяются друг от друга служебными сигналами, то одной из первых задач приемника является распознавание границы байт. Затем приемник должен найти начало и конец кадра, а также определить границы каждого поля кадра — адреса назначения, адреса источника, других служебных полей заголовка, поля данных и контрольной суммы, если она имеется.
Большинство протоколов допускает использование в кадре поля данных пе-ременной длины. Иногда и заголовок может иметь переменную длину. Обычно протоколы определяют максимальное значение, которое может иметь длина поля данных. Эта величина называется максимальной единицей передачи данных (Maximum Transfer Unit, MTU). Например, протокол Ethernet требует, чтобы поле данных содержало 46 байт данных (если приложение хочет отправить меньше байт, то оно обязано дополнить их до 46 байт). Другие протоколы разрешают ис-пользовать поле данных нулевой длины, например FDDI. В протоколе ATM кадры фиксированного размера 53 байт, включая служебную информацию. Для таких протоколов необходимо решить только распознать начало кадра.
Синхронные протоколы канального уровня бывают двух типов: символьно-ориентированные (байт-ориентированные) и бит-ориентированные. Главное раз-личие между ними заключается в методе синхронизации символов и кадров.
Символьно-ориентированные протоколы используются в основном для пе-редачи блоков отображаемых символов, например текстовых файлов. Так как при синхронной передаче нет стоповых и стартовых битов, для синхронизации симво-лов необходим другой метод. Синхронизация достигается за счет того, что пере-датчик добавляет два или более управляющих символа, называемых символами SYN, перед каждым блоком символов. В коде ASCII символ SYN имеет двоичное значение 0010110, это несимметричное относительно начала символа значение по-зволяет легко разграничивать отдельные символы SYN при их последовательном приеме. Символы SYN выполняют две функции: во-первых, они обеспечивают приемнику побитную синхронизацию, во-вторых, как только битовая синхрониза-ция достигается, они позволяют приемнику начать распознавание границ симво-лов SYN. После того как приемник начал отделять один символ от другого, можно задавать границы начала кадра с помощью другого специального символа. Обыч-но в символьных протоколах для этих целей используется символ STX (Start of TeXt, ASCII 0000010). Другой символ отмечает окончание кадра — ЕТХ (End of TeXt, ASCII 0000011).
В бит-ориентированном протоколе потребность в паре символов в начале и конце каждого кадра вместе с дополнительными символами DLE означает, что символьно-ориентированная передача не эффективна для передачи двоичных дан-ных, так как приходится в поле данных кадра добавлять достаточно много избы-точных данных. Кроме того, формат управляющих символов для разных кодиро-вок различен, например, в коде ASCII символ SYN равен 0010110. Так что этот метод допустим только с определенным типом кодировки, даже если кадр содер-жит чисто двоичные данные. Чтобы преодолеть эти проблемы, используется более универсальный метод, называемый бит-ориентированной передачей. Этот метод применяется при передаче двоичных и символьных данных.
Имеются три различные схемы бит-ориентированной передачи. Они отли-чаются способом обозначения начала и конца каждого кадра.
Первая схема похожа на схему с символами STX и ЕТХ в символьно-ориентированных протоколах. Начало и конец каждого кадра отмечается одной и той же 8-битовой последовательностью — 01111110, называемой флагом. Термин «бит-ориентированный» используется потому, что принимаемый поток бит скани-руется приемником на побитовой основе для обнаружения стартового флага, а за-тем во время приема для обнаружения стопового флага. Поэтому длина кадра в этом случае не обязательно должна быть кратна 8 бит.
Чтобы обеспечить синхронизацию приемника, передатчик посылает после-довательность байтов простоя (каждый состоит из 11111111), предшествующую стартовому флагу.
Для достижения прозрачности данных в этой схеме необходимо, чтобы флаг не присутствовал в поле данных кадра. Это достигается с помощью приема, из-вестного как вставка 0 бита, — бит-стаффинга. Схема вставки бита работает только во время передачи поля данных кадра. Если эта схема обнаруживает, что подряд передано пять 1, то она автоматически вставляет дополнительный 0. По-этому последовательность 01111110 никогда не появится в поле данных кадра. Аналогичная схема работает в приемнике и выполняет обратную функцию. Когда после пяти 1 обнаруживается 0, он автоматически удаляется из поля данных кадра. Бит-стаффинг гораздо более экономичен, чем байт-стаффинг, так как вместо лиш-него байта вставляется один бит, следовательно, скорость передачи пользователь-ских данных в этом случае замедляется в меньшей степени.
Во второй схеме для обозначения начала кадра имеется только стартовый флаг, а для определения конца кадра используется поле длины кадра, которое при фиксированных размерах заголовка и концевика чаще всего имеет смысл длины поля данных кадра. Эта схема применяется в локальных сетях, в которых для обо-значения факта незанятости среды в исходном состоянии по среде вообще не пе-редается никаких символов. Чтобы все остальные станции вошли в битовую син-хронизацию, посылающая станция предваряет содержимое кадра последователь-ностью бит, известной как преамбула, которая состоит из чередования единиц и нулей 101010… Войдя в битовую синхронизацию, приемник исследует входной поток на побитовой основе, пока не обнаружит байт начала кадра 10101011, кото-рый выполняет роль символа STX. За этим байтом следует заголовок кадра, в ко-тором в определенном месте находится поле длины поля данных. Таким образом, в этой схеме приемник просто отсчитывает заданное количество байт, чтобы оп-ределить окончание кадра.
Третья схема использует для обозначения начала и конца кадра флага, кото-рые включают запрещенные для данного кода сигналы. Например, при манчестер-ском кодировании вместо обязательного изменения полярности сигнала в середи-не тактового интервала уровень сигнала остается неизменным и низким (запре-щенный сигнал J) или неизменным и высоким (запрещенный сигнал К). Начало кадра отмечается последовательностью JK0JK000, а конец ? последовательностью JK1JK100. Этот способ очень экономичен, так как не требует ни бит-стаффинга, ни поля длины, но его недостаток заключается в зависимости от принятого метода физического кодирования. При использовании избыточных кодов роль сигналов J и К играют запрещенные символы, например, в коде 4В/5В этими символами яв-ляются коды 11000 и 10001.
Каждая из трех схем имеет свои преимущества и недостатки. Флаги позво-ляют отказаться от специального дополнительного поля, но требуют специальных мёр: либо по разрешению размещения флага в поле данных за счет бит-стаффинга, либо по использованию в качестве флага запрещенных сигналов, что делает эту схему зависимой от способа кодирования.
Для большей части протоколов характерны кадры, состоящие из служебных полей фиксированной длины. Исключение делается только для поля данных, с це-лью экономной пересылки как небольших квитанций, так и больших файлов. Спо-соб определения окончания кадра путем задания длины поля данных, рассмотрен-ный выше, как раз рассчитан на такие кадры с фиксированной структурой и фик-сированными размерами служебных полей.
Однако существует ряд протоколов, в которых кадры имеют гибкую струк-туру. Например, к таким протоколам относятся прикладной протокол управления сетями SNMP, а также протокол канального уровня РРР, используемый для соеди-нений типа «точка-точка». Кадры таких протоколов состоят из неопределенного количества полей, каждое из которых может иметь переменную длину. Начало та-кого кадра отмечается некоторым стандартным образом, например, с помощью флага, а затем протокол последовательно просматривает поля кадра и определяет их количество и размеры. Каждое поле обычно описывается двумя дополнитель-ными полями фиксированного размера. Например, если в кадре встречается поле, содержащее некоторую символьную строку, то в кадр вставляются три поля: Тип Длина Значение
Дополнительные поля «Тип» и «Длина» имеют фиксированный размер в один байт, поэтому протокол легко находит границы поля «Значение». Так как ко-личество таких полей также неизвестно, для определения общей длины кадра ис-пользуется либо общее поле «Длина», которое помещается в начале кадра и отно-сится ко всем полям данных, либо закрывающий флаг.
При передаче кадров данных на канальном уровне используются как дейта-граммные процедуры, работающие без установления соединения, так и процедуры с предварительным установлением логического соединения.
При дейтаграммной передаче кадр посылается в сеть «без предупреждения», и никакой ответственности за его утерю протокол не несет. Предполагается, что сеть всегда готова принять кадр от конечного узла. Дейтаграммный метод работа-ет быстро, так как никаких предварительных действий перед отправкой данных не выполняется. Однако при таком методе трудно организовать в рамках протокола отслеживание факта доставки кадра узлу назначения. Этот метод не гарантирует доставку пакета. Передача с установлением соединения более надежна, но требует больше времени для передачи данных и вычислительных затрат .
В этом случае узлу-получателю отправляется служебный кадр специального формата с предложением установить соединение. Если узел-получатель согласен с этим, то он посылает в ответ другой служебный кадр, подтверждающий установ-ление соединения и предлагающий для данного логического соединения некото-рые параметры, например идентификатор соединения, максимальное значение по-ля данных кадров, которые будут использоваться в рамках данного соединения, и т.п. Узел-инициатор соединения может завершить процесс установления соедине-ния отправкой третьего служебного кадра, в котором сообщит, что предложенные параметры ему подходят. На этом логическое соединение считается установлен-ным, и в его рамках можно передавать информационные кадры с пользователь-скими данными. После передачи некоторого законченного набора данных, напри-мер определенного файла, узел инициирует разрыв данного логического соедине-ния, посылая соответствующий служебный кадр.
В отличие от протоколов дейтаграммного типа, которые поддерживают только один тип кадра — информационный, протоколы, работающие по процеду-ре с установлением соединения, должны поддерживать несколько типов кадров ? служебные, для установления (и разрыва) соединения, и информационные, пере-носящие собственно пользовательские данные.
Логическое соединение обеспечивает передачу, данных как в одном направ-лении ? от инициатора соединения, так и в обоих направлениях.
Процедура установления соединения может использоваться для достижения различных целей.
• Для взаимной аутентификации либо пользователей, либо оборудования (маршрутизаторы имеют имена и пароли).
• Для согласования изменяемых параметров протокола: MTU, различных тайм-аутов и т. п.
• Для обнаружения и коррекции ошибок.
• При динамической настройке коммутаторов сети для маршрутизации всех последующих кадров, которые будут проходить через сеть в рамках данного логи-ческого соединения. Так работают сети технологий Х.25, frame relay и ATM.
