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

Модемы и факс-модемы. Программирование для MS-DOS и Windows.

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

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

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

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

Приложение Terminal поддерживает только два протокола для передачи файлов - Kermit и CRC XModem. Эти протоколы являются далеко не самыми эффективными. Современное телекоммуникационное программное обеспечение, например, приложение COMit for Windows, позволяет обмениваться файлами, используя более эффективные протоколы, такие как Ymodem и Zmodem.

Ниже представлены описания наиболее распространенных протоколов передачи файлов.

4.2.1. Протокол ASCII

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

Мы не рекомендуем использовать этот примитивный протокол особенно в тех случаях, когда модемы (ваш и абонента) не поддерживают протоколы коррекции ошибок, например, MNP или V.42.

4.2.2. Протокол Bimodem

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

< h3>4.2.3. Протокол Kermit

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

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

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

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

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

4.2.4. Протоколы Xmodem

Протокол Xmodem значительно более полезен, чем протокол ASCII, так как он обеспечивает коррекцию ошибок и проверку целостности передаваемого файла. Существует три разновидности протокола Xmodem:

  • Xmodem (Xmodem Christensen или Xmodem Checksum)
  • Xmodem CRC
  • 1К Xmodem

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

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

    Xmodem

    Протокол Xmodem Checksum передает данные пакетами по 128 байт. Вместе с пакетом передается его контрольная сумма. При получении пакета принимающая программа снова вычисляет контрольную сумму и сравнивает ее с суммой, вычисленной на передающей машине. Если эти две суммы совпадают, считается, что пакет передан без ошибок. Данный метод проверки целостности передаваемых данных обеспечивает недостаточно надежную защиту от ошибок. Один из 256 принятых пакетов может содержать ошибку в данных при правильной контрольной сумме. То есть, при передаче файла длиннее 32768 байт вполне вероятно появление ошибки.

    < h3>Xmodem CRC

    Более защищенным от ошибок является протокол Xmodem CRC (Cyclic Redundancy Check). Xmodem CRC - протокол с проверкой циклическим избыточным кодом. В нем 8-битовая контрольная сумма заменена на 16-битовый циклический избыточный код.

    Этот протокол гарантирует вероятность обнаружения ошибок, равную 99,9984%. Только один из 700 биллионов плохих пакетов будет иметь правильный CRC-код. Протокол Xmodem CRC, также как и простой протокол Xmodem, передает данные пакетами по 128 байт. Недостатком протокола является невысокая скорость передачи.

    1К Xmodem.

    Протокол 1К Xmodem использует тот же метод коррекции ошибок, что и Xmodem CRC.

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

    4.2.5. Протокол Ymodem

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

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

    Вы можете воспользоваться протоколом Ymodem G, если имеете модем с аппаратной реализацией MNP или V.42. Удаленный модем тоже должен поддерживать протокол MNP или V.42.

    В протоколе Ymodem G упрощена защита от ошибок, потому что защиту данных при передаче по телефонному каналу выполняет сам модем. За счет этого протокол Ymodem G позволяет достичь более высокой скорости передачи данных.

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

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

    4.2.6. Протокол Zmodem

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

    В зависимости от качества линии связи протокол Zmodem может изменять длину пакета от 64 до 1024 байт.

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

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

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

  •