Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Сжатие данных по стандарту V.42bis



В настоящее время методы сжатия данных, включенные в протоколы MNP5 и MNP7, целенаправленно заменяются на метод, основанный на алгоритме словарного типа Лемпеля-Зива-Уэлча (LZW-алгоритме). LZW-алгоритм имеет два главных преимущества:

> обеспечивает достижение коэффициента сжатия 4:1 файлов с оптимальной структурой;

> LZW-метод утвержден ITU-T как составная часть стандарта V.42bis. .

Метод сжатия данных LZW основан на создании древовидного словаря последовательностей символов, в котором каждой последовательности соответствует единственное кодовое слово. Входящий поток данных последовательно, символ за символом, сравнивается с имеющимися в словаре последовательностями. После того, как в словаре будет найдена кодируемая последовательность, идентичная входной, модем передает соответствующее ей кодовое слово. Алгоритм динамически создает и обновляет словарь символьных последовательностей.

Рассмотрим, например, последовательности А, АУ, БАР, БАС, БИС, ШАГ, ШАР и ШУМ. На рис. 8.4 показано, как эти последовательности будут выглядеть в виде деревьев в словаре стандарта V.42bis. Каждый путь от корневого узла к вершине дерева представляет собой последовательность, которая может быть закодирована с помощью одного кодового слова. Имеющиеся последовательности могут расширяться до тех пор, пока не будет достигнута их максимальная длина. Можно добавлять новые последовательности, причем единственным ограничением является объем используемого словаря.


Рис. 8.4. Пример структуры древовидного словаря последовательностей стандарта V.42bis

Алгоритм сжатия, определяемый стандартом V.42bis, весьма гибок. К параметрам, значения которых могут быть согласованы между модемами, относятся: максимальный размер кодового слова, общее число кодовых слов, размер символа, число символов в алфавите и максимальная длина последовательности. Кроме того, алгоритм осуществляет мониторинг входного и выходного потока данных для определения эффективности сжатия. Если сжатия не происходит или оно невозможно (в силу природы передаваемых данных) алгоритм прекращает свою работу. Это свойство обеспечивает лучшие рабочие характеристики при передаче файлов, которые уже были сжаты (заархивированы) или которые не поддаются сжатию.

9) Протоколы передачи данных /Х-modem, Y-modem, Z-modem

Наиболее часто используемой функцией коммуникационного программного обеспечения является функция передачи файлов. Она осуществляется с помощью специальных протоколов передачи файлов. Выбор и использование протокола передачи файлов может производится пользователем в явном виде, как это делается в терминальных программах, так и в неявном, например в игровых программах, поддерживающих модемную связь.

Основными задачами протоколов передачи файлов являются:

> обеспечение безошибочной передачи данных;

> управление потоком передаваемых данных;

> передача вспомогательной информации;

> защита соединения.

Первые протоколы передачи файлов появились задолго до модемов, поддерживающих аппаратное исправление ошибок. По этой причине задача обеспечения безошибочной передачи по сегодняшний день остается одной из их основных. Для ее реализации применяются в основном те же методы, что и в современных протоколах исправления ошибок. Передаваемые данные разбиваются на блоки (кадры) определенной длины, и в каждый из них включается проверочная комбинация (CRC) для обнаружения ошибок. Эта комбинация формируется по определенному правилу на основе передаваемых информационных битов блока. На приемной стороне производится повторное вычисление проверочной комбинации по тому же правилу и сравнение ее с принятой. При совпадении проверочных комбинаций принимающая сторона посылает подтверждение правильного приема блока (АСК), а при несовпадении — запрос на повторную передачу данного блока (NACK). Таким образом реализуется механизм автоматического запроса повторения (ARQ), аналогичный механизму ARQ в протоколах исправления ошибок типа MNP классов 1—4 и V.42. При этом ARQ также может быть стартстопного типа (SAW), с возвратом на N шагов (GBN) или селективного повторения (SR).

При использовании ARQ типов GBN и SR непрерывная передача неподтвержденных блоков данных может привести к перегрузке буферов как приемника, так и передатчика. Что бы этого не происходило используется управление потоком передаваемых данных.

Перед непосредственной передачей файла необходимо установить соединение на уровне канала данных (уровень 2 модели OSI), передать информацию о имени файла, его размере, дате последней его модификации и т.п., а после передачи — произвести разъединение канала данных. Все это осуществляется при помощи вспомогательной служебной информации, передаваемой по каналу связи.

В последние годы в функции протоколов передачи файлов включают защиту соединения, например проверку пароля.

Среди протоколов, рассчитанных на отсутствие аппаратной защиты от ошибок можно выделить широко распространенные протоколы XModem, XModem-CRC, XModem-1 К, YModem, Kermit, ZModem и ряд других.

Если же применяются модемы с аппаратной коррекцией ошибок (поддерживающие протоколы типа MNP или V.42), то предпочтительнее использовать протоколы передачи файлов типа YModem-g и ZModem. В этом случае исключается потеря времени на повторный запрос данных, переданных с ошибками. Протокол Zmodem допускает оба варианта применения.

Известны специализированные протоколы, предназначенные для определенных служб и сетей, — такие как SEALink, Telnet, CompuServe Quick В. Практически все они являются модификациями протокола XModem.

Рассмотрим подробнее наиболее распространенные протоколы передачи файлов.

Протокол XModem

Протокол XModem, разработанный Бардом Христенсеном, благодаря широкому использованию в справочных службах и введению в недорогие связные программы для PC стал фактическим стандартом для связи между персональными компьютерами.

Последовательность операций, выполняемых приемником и передатчиком при передаче файла с помощью протокола XModem, показана в табл. 9.1.

Передающий компьютер начинает передачу файла только после приема от принимающего компьютера знака NAK (Negative AcKnowledge),представляющего собой последовательность <0010101> в кодировке ACSII. Принимающий компьютер передает эту последовательность до тех пор, пока не начнется передача собственно файла. Если передано девять знаков NAK, а передача файла не началась, процесс должен быть возобновлен вручную.

Таблица 9.1. Передача файла с помощью протокола XModem

ПЕРЕДАТЧИК Направление передачи ПРИЕМНИК
    <NAK>
<SOH> 01 FE <данныехС8> ^ ,
  < <АСК>
<SOH> 02 FD <данныехС8> -* (помеха в канале связи)
    <NAK>
<SOH> 02 FD <данныехС8> -*  
  <-  
<SOH> 03 FC <данные> <CS> (знак АСК искажен) -*  
  *- <АСК>
<SOH> 03 FC <данныехС8>    
    <АСК>
<ЕОТ> -*  
    <любой знак кроме АСК>
<ЕОТ> , -t...........  
  4— <АСК>
Передача файла завершена


После приема знака NAK передающий компьютер посылает знак начала блока SOH (Start Of Header) (Olh), два номера блока (сам номер и его двоичное дополнение по "единицам"), блок данных из 128 байт и контрольную сумму блока CS (Check Sum). Блоки нумеруются по модулю 256. Контрольная сумма размером в 1 байт представляет собой остаток от деления на 255 суммы значений кодов ASCII знаков, входящих в блок данных.

Принимающий компьютер тоже вычисляет контрольную сумму и сравнивает ее с принятой. Если сравниваемые значения различны либо прошло 10 с, а прием блока не завершен, принимающий компьютер посылает передатчику знак NAK, означающий запрос на повторную передачу последнего блока. Если блок принят правильно, приемник передает подтверждение его приема знаком АСК (06h). В случае, если следующий блок не поступил в течение 10с, то передача знака АСК повторяется до тех пор, пока блок не будет принят правильно. После девяти неудачных попыток передачи блока связь прерывается.

В протоколе используется двукратная передача номера. Это исключает повторную передачу одного и того же блока из-за потери подтверждающего сообщения. Принимающий компьютер контролирует уникальность номеров принимаемых блоков. Если блок ошибочно передан повторно, то он сбрасывается. После успешной передачи всех данных передающий компьютер посылает знак завершения передачи EOT (End Of Transmission) (04h), сообщающий об окончании передачи файла.

Перерыв в передаче блока свыше 1 с считается перерывом связи.

Преимущества данного протокола перед другими заключаются в его доступности для разработчиков программных средств, простоте реализации на языках высокого уровня, малом объеме приемного буфера (256 байт) и возможности передачи не только символьных (в кодах ACSII), но и исполняемых файлов (*.сот и *.ехе). Последнее возможно благодаря тому, что конец файла определяется подсчетом переданных байтов и использованием вместо знака файлового маркера (Ctrl-Z, "Z) специального сигнала завершения. Вероятность необнаруженной ошибки при передаче данных этим протоколом составляет PHO=0,0004 , что несколько ниже, чем при обычной асинхронной проверке паритета, где рно=0>05.

К основным недостаткам протокола Xmodem можно отнести низкую производительность, обусловленную в основном использованием'механизма ARQ типа SAW, большую вероятность необнаруженных ошибок, необходимость задания имени файла при приеме и относительно большой объем передаваемой служебной информации.

Последующие модификации протокола XModem были направлены на устранение этих и некоторых других его недостатков.

Протокол XModem-CRC

Протокол XModem-CRC представляет собой модификацию протокола XModem, в котором обнаружение ошибок производится с использованием циклического кода. Длина проверочной последовательности составляет 16 бит (CRC-16). Благодаря этому гарантируется обнаружение практически всех одиночных и двойных ошибок, всех нечетных ошибок, всех пакетов ошибок длиной до 16 знаков, а также всех 17-битовых ошибок с вероятностью 0,999969 и более длинных пакетов ошибок с вероятностью 0,999984.

В начале соединения вместо знака NAK приемник передает последовательность знаков "с" (63h). Если передатчик не поддерживает протокол XModem-CRC, он игнорирует эти знаки. Не получив ответа на передачу трех знаков "с", приемник переходит на работу по протоколу XModem и передает знаки NAK.

Протокол XModem-IK

Протокол XModem-IK представляет собой модификацию протокола XModem-CRC с блоками длиной 1024 байт. Использование блоков длиной 1 Кбайт позволяет снизить задержки при передачи файлов по системам связи с временным уплотнением, с использованием современных модемов и в сетях с коммутацией пакетов, где длина пакета, как правило, равна величине 1024 байт либо кратна ей. Кроме того, по сравнению с обычным протоколом Xmodem, уменьшена относительная доля заголовков в общем объеме передаваемой информации.

Таблица 9.2. Передача файла с помощью протокола XModem-lK

ПЕРЕДАТЧИК Направление передачи ПРИЕМНИК
  *- <s —kdoom.wad>
<doom wad open x.x minutes > (файл doom.wad открыт в x.x минут)    
    <с>
<STX>01 РЕ<данные[1024]хСНС-16> -*  
  *- <АСК>
<STX> 02 FD <данные[1024]хСРС-16>    
  «- <АСК>
<STX> 03 FC <данные[1000]> <CPMEOF [24]> <CRC-16>  
    <АСК>
<ЕОТ>  
  «— <АСК>
Передача файла завершена


Для передачи приемнику сообщения об увеличении длины передаваемого блока вместо знака SOH (Olh) в начале блока ставится знак STX (02h). Номер блока, передаваемый во втором и третьем бантах увеличивается на единицу независимо от его длины.

Передатчик не должен изменять длину блока в диапазоне от 128 до 1024 байтами до тех пор, пока не будет принят знак АСК для текущего блока. Игнорирование этого ограничения может привести к необнаружению ошибок.

При использовании блоков по 1024 байт возможно увеличение длины передаваемого файла до значения, кратного 1024. Блоки длиной 1024 байт могут

Таблица 9.3. Передача блоков по 1024 и 128 байтов с помощью протокола XModem-lK применяться при групповой или одиночной передаче файлов. Для сохранения целостности передаваемых данных с протоколом Х Modem-1 К необходимо использовать CRC-16.

ПЕРЕДАТЧИК Направление передачи ПРИЕМНИК
  ^ <s—kdoom.wad>
<doom,wad open x.x minutes > - -»  
    <с>
<STX> 01 FE <данные[1024]хСРС-16> -*  
  <- <АСК>
<STX> 02 FD <данные[1024]хСНС-16> -*  
    <АСК>
<STX> 03 FC <данные[128]хСПС-16>    
    <АСК>
<STX> 04 FB <данные[100]> <CPMEOF [24]> <CRC-16>  
    <АСК>
<EOT>  
    <АСК>
Передача файла завершена


Процесс передачи блоков и управляющих сигналов между передатчиком и приемником при использовании протокола XModem-lK иллюстрируется табл. 9.2 и 9.3.

Протокол YModem

Протокол YModem представляет собой протокол XModem-CRC, в котором реализована групповая передача кадров. Все программы, реализующие протокол YModem, должны выполнять следующие функции:

^ передавать информацию о имени и пути файла в-блоке 0 в виде строки знаков ASCII, завершающейся знаком NUL (Oh);

> использовать эту информацию на приемной стороне в качестве имени и пути принятого файла, если иная реализация не оговорена специально;

> применять проверку CRC-16 при приеме знаков "с", в противном случае использовать 8-битовую контрольную сумму;

> принимать любую комбинацию из 128- и 1024-байтных блоков внутри каждого принимаемого файла;

> обеспечивать возможность переключения длины блоков в конце передачи файла (файлов) и (или) в случае частых повторных передач;

> передающая программа не должна изменять длину неподтвержденного блока;

> передавать в конце каждого файла знаки EOF до десяти раз, пока не будет принят знак АСК;

>• обозначать конец сеанса связи нулевым (пустым) именем пути.

Коммуникационные программы, в которых не реализованы все перечисленные функции, не совместимы с протоколом YModem. Выполнение этих минимальных требований, однако, не гарантирует надежной передачи файлов в условиях сильных помех.

Протокол YModem устраняет некоторые недостатки протокола XModem, в основном сохраняя его простоту. Процесс передачи файлов с использование протокола YModem иллюстрируется табл. 9.4 и 9.5.

Как и в случае передачи одного файла, приемник инициирует групповую передачу путем посылки знака "с" (для режима CRC-16).

Передатчик открывает файл и передает номер 0.

Для групповой передачи требуются только имена файлов. Для обеспечения совместимости "снизу вверх" все неиспользуемые байты блока 0 должны иметь значение 0.

Таблица 9.4. Групповая передача файлов с помощью протокола YModem

ПЕРЕДАТЧИК Направление передачи ПРИЕМНИК
  <- <sbdoom."xCR>
"Передача в групповом режиме! -*  
  «- <с> (command:rb)
<SOH> <00 FF doom.exe NUL[123]> <CRC-16> ->  
  *- <с>
<SOH> 01 FE <данные[1281><СПС-16>  
  «- • <АСК>
<SOH> 03 PC <данные[1024]хСРС-16>  
    <АСК>
<SOH> 04 FB <данные[1001> <СРМЕОР [28]> <CRC-16> ^  
  <- <АСК>
<ЕОТ>    
  ^ <NAK>
<ЕОТ>  
  *- <АСК>
  <- <с>
<SOH> <00 FF NUL[128]> <CRC-16>  
  «- <АСК>
Передача файла завершена


Имя файла (возможно с указанием пути) передается как строка кодов ASCII, завершаемая знаком NUL. Этот формат имени файла используется в функциях, ориентированных на операционные системы типа MS-DOS, и в функции fopen библиотеки языка Си. В имя файла не включаются пробелы. Обычно передается только само имя без префикса справочника. Имя диска источника (например, А:, В: и т.д.) не передается. Если передатчик не поддерживает передачу знаков в обоих регистрах, имя передается в строчном регистре. Если в имя файла включен каталог, его название должно ограничиваться знаками "/".

Обозначения длины файла и каждого последующего поля произвольны. Длина файла представляется в блоке как десятичная строка, обозначающая количество байт в файле. В нее не должны входить знаки EOF ("Z) или другие знаки (garbage characters), используемые для заполнения последнего блока. Если передаваемый файл увеличивается во время передачи, то параметр "Длина файла" должен иметь значение, соответствующее максимально ожидаемому размеру или не передаваться вовсе.

Дата модификации файла является необязательным параметром, имя и длина файла могут передаваться без передачи даты модификации. Дата модификации представляется в виде восьмеричного числа, указывающего время

Таблица 9.5. Групповая передача файлов блоками по 1 Кбайт с помощью протокола YModem

ПЕРЕДАТЧИК Направление передачи ПРИЕМНИК
4 ^ <sb —k doom.«><CR>
"Передача в групповом режиме! -*  
  <- <с> (corrimand:rb)
<SOH> <00 FF doom.exe NUL[123]> <CRC-16>    
  «- <с>
<SOH> 01 FE <данные[12в]><СНС-16> -*  
  «- <АСК>
<SOH> 02 FC <данные[ 1024]><:CRC-16>  
  *- <АСК>
<SOH> 03 FB <данные[100]> <CPMEOF [28]> <CRC-16>    
  ^ <АСК>
<EOT>  
  *- <NAK>
<ЕОТ> -*  
  <- <АСК>
  «- <С>
<SOH> <00 FF NUL[128]> <CRC-16>    
  <- <АСК>
Передача файла завершена


последнего изменения файла, и измеряется в секундах по Гринвичу, начиная с 1 января 1970 г. Это время называется Универсальным Координационным Временем (Universal Coordinated Time). Дата 0 обозначает, что дата модификации неизвестна и должна быть оставлена дата приема файла. Этот формат используется для исключения неопределенности при передачах файлов между различными временными зонами. ,

Если передается параметр "Режим файла", то один пробел должен отделять этот параметр от даты модификации. Режим файла передается как восьмеричная строка. Во всех операционных системах, кроме UNIX, данный параметр устанавливается в "О".

Протокол YModem допускает возможность введения других полей заголовка без нарушения совместимости со своими прежними версиями. Оставшаяся часть блока устанавливается в "О". Это важно для сохранения совместимости "снизу вверх".

Если блок имени файла принят с ошибкой по проверочной последовательности, необходим запрос на повторную передачу. Прием блока с именем файла, успешно открытого для записи, подтверждается знаком АСК. Если файл не может быть открыт для записи, то приемник прерывает передачу с помощью знака CAN.

Далее приемник инициирует передачу содержимого файлов в соответствии с протоколом XModem-CRC. После того как содержимое файла передано, приемник запрашивает имя следующего файла.

Передача нулевого имени файла может означать, во-первых, что групповая передача завершена, и, во вторых, что запрошенные у передатчика файлы не могут быть открыты для чтения.

По умолчанию приемник запрашивает CRC-16.

Протокол YModem поддерживается большинством связных программ общего пользования, например YAM (в операционных системах СР/М, СР/М-86, СРРМ) или rz/sz (в операционных системах UNIX, Xenix, VMS). Из коммерческих приложений его содержат программы MTEZ, Telix и ряд других.

Протокол YModem-g

В настоящее время разработаны методы, обеспечивающие передачу данных с очень высокими скоростями и малой вероятностью ошибок. Эти методы реализованы в высокоскоростных модемах и некоторых коммуникационных программах. Применение этих методов позволяет достичь скорости передачи, близкой к теоретически возможной.

Вариант g протокола YModem обеспечивает высокую эффективность передачи данных. Он используется приемником, который инициирует групповую передачу путем посылки знака "g" вместо "с". Передатчик, распознавший этот знак, прекращает ожидание обычных подтверждений по каждому переданному блоку и передает последовательные блоки на полной скорости с использованием метода управления потоком, такого как XON/XOFF.

Прежде чем передавать файл, передатчик ожидает поступления последовательности знаков "g", а в конце передачи каждого файла — подтверждающего знака АСК. Такой способ синхронизации позволяет приемнику открывать и закрывать файлы в нужное время.

При обнаружении ошибки в случае использования протокола YModem-g приемник прерывает передачу, посылая последовательность, состоящую из последовательности знаков CAN. Пример сеанса передачи с использованием протокола YModem-g приведен на табл. 9.6. '

Расширение YModem-g протокола YModem позволяет значительно повысить скорость передачи данных в каналах, защищенных от ошибок. То есть при использовании модемов со встроенными протоколами защиты от ошибок. Это достигается за счет отказа от переспроса принятых с ошибками блоков — при обнаружении ошибки передача файла прерывается. Для повышения быстродействия в последующих модификациях протокола XModem (например, в протоколе ZModem) был применен так называемый "оконный" алгоритм (процедура GBN), при котором последующие блоки передаются подряд, без ожидания подтверждения правильного приема некоторого числа блоков.

Таблица 9.6. Групповая передача файлов с помощью протокола YModem-g

ПЕРЕДАТЧИК Направление передачи ПРИЕМНИК
  *- <sb doom.'><CR>
"Передача в групповом режиме"    
    <д> (command:rb — д)
<SOH> <00 FF foo.C NUL[123]> <CRC-16>  
  <= <д>
<SOH>01 РЕ<данные[128]хСНС-16>    
<STX> 02 FD <данные[1024]><СРС-16>  
<STX>.03 FC <данные[128]><СПС-16> -^  
<SOH> 04 FB <данные[100]> <CPMEOF[28]> <CRC-16> ... . -».,..  
<EOT>    
  ^ <АСК>
  ———<=——— <д>
<SOH> <00 FF NUL[128]> <CRC-16>  
Передача файла завершена


Протокол ZModem

Протокол ZModem введен в большинство связных программ и в настоящее время получил самое широкое распространение. Представляя собой развитие протоколов XModem и YModem, он устраняет их недостатки и при соблюдении совместимости имеет ряд преимуществ:

> высокое быстродействие благодаря использованию процедуры SBN;

> динамическая адаптация к качеству канала связи посредством изменения в широких пределах размера передаваемых блоков;

> возможность возобновления прерванной передачи файла с того места, на котором произошел сбой;

> повышенная достоверность передачи благодаря использованию 32-разрядной проверочной комбинации (CRC);

> возможность отключения функции контроля ошибок передаваемых блоков при использовании модемов с аппаратной коррекцией ошибок. Протокол ZModem явился результатом технического компромисса между следующими противоречивыми требованиями:

> простота использования;

> обеспечение высокой пропускной способности;

> сохранение целостности информации;

> достижение высокой надежности передачи;

> простота реализации.

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.