Протоколы, ориентированные на использование командных кодов
Большая часть управления потоком данных осуществляется за счет применения протоколов, ориентированных на использование управляющих кодов. Наиболее широко встречающимися протоколами этого класса являются:
- XON/XOFF
- ACK/NAK
- ETX/ACK
В этих протоколах управляющие коды передаются по линиям данных, а не по отдельным линиям управления.
Протокол XON/XOFF, в названии которого X представляет два специальных символа управления, — сравнительно простой протокол, используемый для регулировки потока данных. Это управление необходимо для предотвращения переполнения буферной памяти. Когда данные переполняют буфер, обычно генерируется код ошибки. В протоколе XON/XOFF для запуска и остановки передачи потока данных используются специальные управляющие символы.
Протоколы ACK/NAK и ETX/ACK считаются протоколами высокого уровня, поскольку они требуют установки специальных интерфейсных программ, называемых драйверами устройств (device drivers). В обоих протоколах для выполнения таких функций, как обеспечение целостности передаваемых данных, управление потоком, запросы передачи и т.п. применяются специальные управляющие символы и последовательности управляющих кодов.
Протокол ACK/NAK получил свое название по названию управляющих символов стандарта ASCII — AC Knowledge (уведомление об успешном приеме данных) и Not ACKnowledge (отсутствие уведомления об успешном приеме данных). Эти символы используются в качестве средства исправления ошибок переданных данных. В основном, протокол ACK/NAK предполагает, что блоку данных предшествует символ Start-Of-Text (начало текста, STX), а за блоком следуют символ End-Of-Text (конец текста, ЕТХ) и код проверки наличия ошибок. На приемном конце выполняется контроль символа проверки блока (Block Check Character, ВСС) на предмет ошибок. В зависимости от результата проверки возвращается либо сигнал АСК, свидетельствующий об успешности передачи, либо сигнал NAK, свидетельствующий о возникновении ошибки. В случае возврата сигнала NAK передающее устройство отвечает повтором передачи всего блока.
Протокол ETX/ACK несколько проще протокола ACK/NAK, поскольку какие-либо проверки символов не выполняются. Если принимающее устройство не возвращает сигнал АСК в течение заранее определенного интервала времени, передающее устройство делает вывод о наличии ошибки или неисправности и повторно передает блок данных.
Протоколы с исправлением ошибок
Для пакетов, передаваемых через модемы, было разработано несколько протоколов исправления ошибок передачи файлов. В число наиболее часто используемых протоколов входят следующие:
- Xmodem
- Ymodem
- Zmodem
- Kermit
Для поддержания достоверности данных во время передачи в этих протоколах применяются схемы интенсивной проверки на наличие ошибок. Для выявления, локализации и возможного исправления ошибок в протоколах с обнаружением и исправлением ошибок используются такие более сложные алгоритмы обнаружения ошибок, как проверка контрольной суммы и контроль с помощью циклического избыточного кода (cyclic redundancy check, CRC).
Протоколы сжатия
В более совершенных коммуникационных протоколах для уменьшения объема передаваемых данных используются технологии сжатия данных. В каждом протоколе применяется определенный математический алгоритм, считывающий данные и преобразующий их в закодированные слова. Для декодирования слов и восстановления их первоначальной формы в модеме на приемном конце должен быть реализован тот же алгоритм.
Некоторые стандарты сжатия, используемые в модемах, позволяют получать коэффициенты сжатия до 4:1. Большинство стандартов сжатия данных в модемах разрабатываются компанией Microcom и международной организацией по разработке стандартов CCITT (Международный консультативный комитет по телеграфии и телефонии, CCITT). Стандарт Microcom Networking Protocol level7 (Протокол сетевого обмена уровня 7 компании Microcom, MNP7) обеспечивает коэффициенты сжатия до 3:1, а стандарт CCITT v.42bis — до 4:1.
Стандарты CCITT определяют также протоколы исправления ошибок и сжатия данных. Стандарт v.42 — это протокол с исправлением ошибок, а протокол v.42bis — эквивалент CCITT-протоколов MNP5 и MNP7. Оба протокола используются совместно с протоколами v.32 и v.32bis как дополнительные модули, обеспечивая увеличение скорости передачи.
Первыми стандартами, разработанными компанией Microcom, были протоколы с MNP2 по MNP4. Эти стандарты определяли протоколы с исправлением ошибок. Разработанные вслед за ними стандарты MNP5 и MNP7 стали первыми протоколами со сжатием данных. В стандарте MNP10 был определен первый протокол усовершенствования пассивного канала. Этот тип протоколов предназначен для обеспечения максимальной производительности модемов, используемых в таких приложениях с низким качеством соединения, как сотовая телефонная связь. Его отличительными чертами являются выполнение нескольких попыток соединения и автоматически подбираемые скорости передачи данных. Подобно более совершенным протоколам CCITT, модуль протокола MNP10 используется совместно с протоколом v.42 для максимизации скорости передачи данных. Во время специального периода настройки, когда передача выполняется с более низкими скоростями, модем проверяет исправность линии передачи. Затем он согласует с удаленным модемом максимальную скорость передачи в соответствии с существующим состоянием линии.
Кадрирование символа
Прежде чем можно будет осуществить эффективный обмен информацией, в рамках конкретного протокола необходимо согласовать ряд параметров. Среди них основными являются тип символов и кадрирование символа. В основном, тип символов относится к набору символов, или алфавиту, понятному устройствам. В зависимости от системы, в качестве набора символов может использоваться 8-разрядный код ASCII, 7-разрядный код ASCII (с разрядом контроля ошибок) или код EBCDIC.
Термин «кадрирование символа» (character framing) относится к общему количеству разрядов, используемых для передачи символа. Кадрирование определяет длину закодированного символа, а также количество и тип избыточных разрядов, требуемых для передачи. Обычная схема кадрирования символа предполагает наличие стартового разряда, 7 разрядов данных, разряда проверки на нечетность и стопового разряда. Часто в кадр добавляют дополнительный разряд для реализации проверки на наличие ошибок.
Хотя эта технология кадрирования является типовой, она — не единственная используемая в промышленности. Проблема заключается в сжатии, выполняемом устройством. Локальное устройство может использовать 10-разрядный кадр символа, состоящий из стартового разряда, 7 разрядов данных, разряда проверки на нечетность и стопового разряда. Однако, если в удаленной системе используется какой-либо другой код, кроме 7-разрядного кода ASCII с контролем нечетности и одним стоповым разрядом, его ответ будет столь же непонятным, как и что-либо, написанное на языке племени Мумбо-Юмбо. Структура кадра символа должна быть одинаковой на передающем и на приемном конце линии передачи.