Протокол коррекции ошибок V.42 является подмножеством, называемым LAPM (Link Access Procedure for Modems), битриентированных протоколов типа HDLC (High-level Data Link Control). Формат кадра LAPM отличается от кадрового формата MNP2. Если последний можно было условно назвать асинхронным кадровым форматом, то LAPM можно смело называть синхронным.
Кадр LAPM состоит из нескольких полей, каждое из которых включает целое число байт. Все байты в кадре передаются последовательно друг за другом без каких бы то ни было служебных битов: вслед за старшим битом предыдущего байта передается младший бит следующего.
Все кадры начинаются и заканчиваются уникальной битовой последовательностью, называемой флагом: шестью единицами подряд, окаймленными нулями (01111110, 7Eh). Кодовая прозрачность тела кадра обеспечивается вставкой нулевого бита вслед за пятью подряд единицами, независимо от значения следующего бита (битстаффинг). Межкадровым заполнителем служит флаговая последовательность. Завершающий флаг одного кадра может одновременно служить начальным флагом следующего. Таким образом, битстаффинг гарантирует приемник от появления флага в середине кадра; обнаружение флага в потоке данных говорит приемнику об окончании принимаемого кадра; появление в потоке флаговых комбинаций последовательности битов, отличных от флага, говорит о начале следующего кадра.
Формат кадра LAPM следующий:
· начальный флаг (7Eh);
· поле адреса;
· управляющее поле;
· информационное поле;
· двухбайтовая или четырехбайтовая контрольная последовательность кадра;
· конечный флаг (7Eh).
Здесь поле адреса позволяет по одному физическому каналу организовать несколько логических (виртуальных) каналов. Формат поля адреса следующий:
где DLCI (Data Link Connection Identifier) — идентификатор соединения по звену данных, или адрес. Разряд с/г определяет, содержит ли кадр команду или ответ на нее.
Для определения адреса допускается использовать один или два байта. В последнем случае последний разряд поля адреса должен быть равен единице. Протокол V.42 определяет следующие допустимые значения идентификатора соединения DLCI:
- 0 — данные пользователя;
- 1—31 —зарезервировано;
- 32—62 — не используется и не зарезервировано;
- 63 — служебные данные блока управления.
В протоколах MNP поле адреса не используется
Поле информации пользователя является необязательным, однако может присутствовать и в служебных кадрах. Поле информации V.42 соответствует блоку ПБД протоколов MNP.
Двухбайтовая контрольная последовательность кадра подсчитывается с помощью образующего полинома X16 + X12 + X5 + 1. Четырехбайтовая контрольная последовательность кадра подсчитывается с помощью образующего полинома X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1. Выбор CRC-16 или CRC-32 производится в процессе согласования параметров протокола с помощью кадров XID.
С помощью поля управления однозначно определяется тип кадра и его формат. Как и для протоколов MNP, каждый кадр можно рассматривать как определенную команду процедуры передачи данных.
Управляющее поле кадра идентифицирует один из трех форматов кадра. Информационные кадры (I-формат) предназначены для передачи информации с возможностью одновременного подтверждения принятой информации. Супервизорные кадры (S-формат) предназначены для подтверждения принятой информации, запроса на повторную передачу или сообщения оппоненту о неготовности к приему. И, наконец, ненумерованные кадры (U-формат) выполняют дополнительные управляющие сеансом процедуры, как то: установка/прекращение работы протокола, согласование параметров протокола, передача сигнала break, тестирование канала и пр. Всего в протоколе LAPM насчитывается 13 типов кадров:
· 1 кадр I-формата;
· 4 типа кадра S-формата: RR, RNR, REJ и SREJ;
· 8 типов кадров U-формата: SABME, DM, UI, DISC, UA, FRMR, XID и TEST.
Перечень кодов команд процедуры LAPM формата S:
RR — готовность к приему (тип S): код 00.
Используется в станции, чтобы указать, что с этого момента они готовы к приему с номера указанного. Обычно этот кадр вырабатывается после того, как прием был остановлен
RNR — неготовность к приему (тип S): код 01.
Начиная с этого номера прием останавливается (связь существует, но информация обрабатываться не будет). Играет роль положительной квитанции. Этот номер говорит о том, что предыдущая информация была правильной.
REJ — неприем кадра (тип S): код 10.
Это отрицательная квитанция. Указывает, что с номера, указанного в поле, необходимо начинать повтор передачи.
SREJ — селективный неприем отдельного кадра (тип S): код 11. (нет в MNP)
Конкретно указывает, какой номер кадра нужно повторить (все предыдущие подтвержденные).
Не все модемы такой режим поддерживают.
Формат U (Unnumbered) — ненумерованный:
где М — изменяемые функциональные биты, определяющие код и параметры кадра; два бита со значением (1,1) являются признаком ненумерованного кадра. Кадры этого типа используются для обмена служебной информацией. В них не допускается передача информации о подтверждении блоков.
Позволяет передавать служебные данные без сопровождающего циклического номера.
- выбор режима работы модема;
- команда разъединения на канальном уровне;
- ненумерованное подтверждение;
- неприем кадра.
SABME — установить асинхронный сбалансированный режим (тип U):
DM — режим "Завершение связи" (тип U):
UI — ненумерованная информация (тип U):
DISC — завершение связи (тип U):
UA — ненумерованное подтверждение (тип U):
FRMR — неприем кадра (тип U):
XID — идентификация обмена (тип U):
TEST — испытание (тип U):
Стандарт V.42 описывает функционирование модема с коррекцией ошибок как совокупность алгоритмов работы блока управления и процедур блока защиты от ошибок. Алгоритмы блока управления регламентирует последовательность выполнения различных процедур и команд.
Процедура соединения на основе V.42 (вообще по ходу левое)
Процедура соединения полностью определяется алгоритмом работы блока управления и может быть разделена на фазу обнаружения, фазу установления соединения с исправлением ошибок, фазу испытания канала связи, фазу передачи данных, фазу завершения связи и фазу разрыва соединения.
Фаза обнаружения
Работа протокола начинается с фазы обнаружения. На этом этапе каждый из соединяющихся модемов определяет? к какому классу аппаратуры относится его корреспондент. При этом производится распределение ролей: один из модемов становится инициатором соединения, а другой — ответчиком.
Затем происходит взаимное опознавание. Каждый модем должен определить возможности своего партнера. Для этого модем-инициатор начинает передавать последовательность единиц со специальными символами опознавания:
0 1000 1000 1 11...11 0 1000 1 11...11 и так далее.
Между символами может быть от 8 до 16 единиц. Такая последовательность передается до получения ответа от модема-ответчика, но не более 750 мс.
Подобный сигнал передает и удаленный модем. Он может передавать одну из двух возможных последовательностей:
0 1010 0010 1 11...11 0 1100 0010 1 11...11
или
0 1010 0010 1 11...11 0 0000 0000 1 11...11.
Первая последовательность означает, что протокол V.42 поддерживается, вторая — что протокол не поддерживается. Если оба модема поддерживают протокол V.42, то начинается фаза установления соединения с исправлением ошибок.
Кодонезависимость протоколов исправления ошибок (Полезно)
Информация должна передаваться не зависимо от содержания. Последовательность 01111110 не должна встречаться, т.к. она уникальна и является флагом. На передающей стороне при таком виде флага проверяется (перед выдачей информации) последовательность 011111 на сдвиговом регистре, и принудительно добавляется дополнительный 0 и эта последовательность не может уйти. Это называется битстаффинг. На приемной стороне этот 0 нужно уничтожить и определить флаг это или нет. Сигнал покоя -больше 15 или 15 единиц. Сигнал аварийного завершения – в линию передано больше 7 единиц.