Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Программирование модемов

© Александр Фролов, Григорий Фролов
Том 4, М.: Диалог-МИФИ, 1993, 236 стр.

[Назад] [Содеожание] [Дальше]

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

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

ASCII

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

Xmodem

Наиболее распространены три разновидности протокола Xmodem:

  • Оригинальный протокол Xmodem;
  • Xmodem с CRC;
  • 1К Xmodem.

Оригинальный протокол Xmodem разработал Вард Кристенсен (Ward Christensen) в 1977 году. Вард Кристенсен был одним из первых специалистов по протоколам обмена данными. В честь него этот протокол иногда называют также протоколом Кристенсена (Xmodem Christensen).

При передаче файлов с помощью протоколов Xmodem формат данных должен быть следующим: 8-битовые данные, один стоповый бит и отсутствие проверки на четность. Для передачи используется полудуплексный метод, т.е. данные могут передаваться в каждый момент времени только в одном направлении.

Xmodem

Протокол Xmodem Checksum передает данные пакетами по 128 байт. Вместе с пакетом передается его контрольная сумма. При получении пакета контрольная сумма вычисляется снова и сравнивается с суммой, вычисленной на передающей машине. Если эти две суммы совпадают, считается что пакет передан без ошибок.

Этот метод обеспечивает достаточно хорошую защиту от ошибок. Только один из 256 пакетов может содержать ошибки, хотя контрольная сумма правильная.

Xmodem с CRC

Более защищенным от ошибок является протокол Xmodem CRC (Cyclic Redundancy Check). Xmodem CRC - протокол с проверкой циклическим избыточным кодом. В нем 8-битовая контрольная сумма заменена на 16-битовый циклический избыточный код. Этот протокол гарантирует вероятность обнаружения ошибок, равную 99,9984%. Только один из 700 биллионов плохих пакетов будет иметь правильный CRC-код. Протокол Xmodem CRC также передает данные пакетами по 128 байт.

1К Xmodem.

Если передача идет без ошибок, протокол 1К Xmodem увеличивает размер пакета с 128 до 1024 байт. При увеличении числа ошибок размер пакета снова уменьшается. Такое изменение длины пакета позволяет увеличить скорость передачи файлов.

В остальном протокол 1К Xmodem совпадает с протоколом Xmodem CRC.

Ymodem

Протокол Ymodem разработал Чак Форсберг (Chuck Forsberg) в 1984 - 1985 годах. Протокол Ymodem похож на протокол 1К Xmodem, но имеет одно отличие: протокол Ymodem может передавать или принимать за один заход несколько файлов.

Существует модификация протокола Ymodem - Ymodem G. Протокол Ymodem G предназначен для использования с модемами, автоматически осуществляющими коррекцию ошибок на аппаратном уровне. Например, MNP-модемы с аппаратной реализацией MNP. В этом протоколе упрощена защита от ошибок, так как ее выполняет сам модем. Не используйте этот протокол, если ваш модем не осуществляет аппаратную коррекцию ошибок.

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

Zmodem

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

Протокол Zmodem, так же как и протокол 1К Xmodem, может изменять длину пакета (блока) от 64 до 1024 байт в зависимости от качества линии.

Кроме того, протокол обладает следующей полезной особенностью: если при передаче файла произошел сбой на линии и вы не успели передать весь файл, то в следующий раз при передаче этого же файла он автоматически начнет передаваться с того места, где произошел обрыв связи. Таким образом, очень большие файлы вы можете передавать по частям.

Из всех протоколов верхнего уровня, описанных выше, этот протокол самый быстрый и удобный.

Bimodem

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

Kermit

Широко известны две разновидности протокола Kermit - стандартный и Super Kermit. Этот протокол был разработан в Колумбийском университете в 1981 году для связи между различными типами компьютеров, включая большие компьютеры, мини-компьютеры и персональные компьютеры. В отличие от протоколов Xmodem и Ymodem он использует для передачи данных пакеты переменной длины с максимальным размером 94 байт.

Так же как и Ymodem, протокол Kermit может передавать или принимать несколько файлов за один сеанс.

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

В результате использования такого механизма происходит резкое сокращение времени задержки. Окно может содержать от одного до 31 пакета.

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

[Назад] [Содеожание] [Дальше]