Программное управление потоком
Программное или XON/XOFF управление потоком осуществляется использованием специальных символов, вставляемых в передаваемые потоки. XON - разрешение передачи (обычно это код 0218 Control Q). XOFF - запрет передачи (обычно это код 0238 Control S). Очевидно, что такое управление применимо только для передачи текстовых файлов, использующих ограниченное количество служебных символов и не включающих произвольные битовые комбинации. Когда принимающая сторона готова получать данные, она выдает символ XON. Если же принимающая сторона не готова получать данные, например из-за переполнения приемного буфера, то она выдает символ XOFF. Ясно, что сигнал XOFF должен выдаваться с некоторым опережением по сравнению с моментом фактического переполнения буфера. ПРОТОКОЛЫ ПЕРЕДАЧИ ФАЙЛОВ Простейший протокол передачи файлов ASCII - просто передача последовательности отдельных байт. Защита от ошибок выполняется тольо контролем четности байта. Эффективность обнаружения ошибок при таком протоколе невысокая и составляет 95 %. В этой связи разработаны и используются более сложные протоколы, передающие информацию блоками с контролем правильности передачи блока с помощью различного рода контрольных сумм. Для повышения скоростей обмена часто используется техника подтверждения передачи, основанная на механизме окон. В этом случае группа блоков передается за один прием (в одном окне). Подтверждение правильности передачи для всех блоков окна или запрос повторной передачи некоторого блока делаются после приема всех блоков окна. Широко распространенными протоколами передачи файлов являются Xmodem, Ymodem, Zmodem. Универсальные компьютеры также используют протокол Kermit. Протокол Xmodem Первая версия данного протокола была разработана Вардом Кристенсеном (Ward Christensen) в 1977. В настоящее время используются следующие три разновидности протокола Xmodem: Xmodem Checksum протокол делит данные на блоки. Каждый блок содержит порядковый номер блока, 128 байт собственно данных и контрольную сумму для байт данных. Протокол обеспечивает синхронизацию, проверяя порядковый номер текущего переданного блока, и затем вычисляет контрольную сумму и сравнивает это с переданной контрольной суммой. В случае ошибки запрашивается повторение передачи того же самого блока. Эффективность обнаружения ошибки данным протоколом составляет 99.6 % - при правильной контрольной сумме только один из 256 пакетов может содержать ошибки. Xmodem CRC - протокол с проверкой 16-ти разрядным циклическим избыточным кодом. Данный протокол подобен протоколу Xmodem Checksum, но 8-битовая контрольная сумма заменена на 16-битовый циклический избыточный код (Cyclic Redundancy Check). Это гарантирует обнаружение всех одиночных и двойных ошибок, всех ошибок четности и всех пакетов ошибок длиной до 16 знаков. Благодаря этому только один из 700 млн пакетов может содержать ошибки при правильном CRC. Xmodem 1K - подобен протоколу Xmodem CRC, но при передаче без ошибок длина пакета увеличивается до 1024 байт, при возрастании числа ошибок размер пакета опять уменьшается до 128 байт. Протокол Ymodem Протокол Ymodem (автор - Chuck Forsberg) подобен протоколу Xmodem 1K. Длина блока данных составляет 1024 байта. Отличия от Xmodem 1K состоят в том, что он может передать пакет файлов вместе с их путями и атрибуты для каждого из передаваемых файлов (имя, дату, размер). Это позволяет сохранить информацию о файле и помогает пользователю видеть время, требуемое для передачи. Версия этого протокола - Ymodem-g работает без подтверждения успешной передачи по каждому из блоков. Блоки передаются с использованием обычного управления потоком, например XON/XOFF. Подтверждение посылается после успешной передачи всего файла. В случае обнаружения ошибок в очередном принятом блоке предусмотрено прерывание передачи приемником.
|