Программирование на Java | Модемы | Дипломы по радиотехнике и связи |
Модемы и сетевое оборудование
Протоколы передачи файлов
Описанные выше протоколы коррекции ошибок появились сравнительно недавно. Однако уметь передавать данные без ошибок нужно было с первых дней существования модемов. Если вы просто разговариваете с кем-нибудь через модем, печатая свои реплики и читая с экрана ответные, еще можно мириться с тем, что в ответах вашего собеседника будет проскакивать мусор — ошибочные символы. Но при обмене файлами, конечно же, передача должна быть защищена от любых помех.
Для этого были разработаны специальные протоколы-передачи файлов (file transfer protocols), которые реализуются коммуникационной программой и работают только при пересылке файлов. В функции этих протоколов точно так же входит разбиение данных на блоки, вычисление контрольной суммы, повторная пересылка ошибочно принятых блоков, гибкое изменение размеров блоков в зависимости от качества связи и т. п.
Но у этих протоколов есть и специфические черты: так, многие из них передают имя, размер и
дату создания посылаемого файла, могут пересылать несколько файлов в одном пакете. Кроме того, некоторые протоколы в случае обрыва связи запоминают, до какого места был передан файл, и в следующий раз возобновляют его передачу именно с этого места (восстановление после обрыва, crash recovery).
Все эти свойства, полезные именно для пересылки файлов, позволили протоколам передачи файлов не исчезнуть с появлением эффективных аппаратных протоколов коррекции ошибок, хотя обеспечение правильности передачи в них отошло при этом на второй план. Видимо, окончательно на пенсию эти протоколы отправятся только после того, как доступ к Интернету станет столь же простым и дешевым, как звонок на BBS или сеанс связи с другим пользователем модема, — ведь в наборе протоколов Интернета есть свои, весьма совершенные средства для обмена файлами (протокол FTP, стр. 277).
Если в модеме реализован аппаратный протокол коррекции ошибок, то протокол передачи файлов работает «поверх» него, лишний раз проверяя и перепроверяя посылаемые данные. Ничего плохого в этом, конечно, нет, но такая двойная страховка все же снижает эффективность работы. Поэтому в последнее время обычно применяются особые протоколы передачи файлов, предназначенные именно для модемов с аппаратной коррекцией, — в них контроль ошибо
к сведен к минимуму, что дает заметный выигрыш в скорости.
Поскольку протоколы передачи файлов реализуются в программе (их называют «протоколами высокого уровня»), пользователь имеет возможность сам выбрать конкретный протокол, прежде чем начать пересылку файла (естественно, этот выбор должен быть согласован с пользователем или программой на другом конце линии). Вот почему важно разбираться в этих протоколах и знать, чем они отличаются друг от друга. Рассмотрим основные из протоколов передачи файлов.
• Xmodem. Самый старый из протоколов, разработанный
еще в конце 70-х годов. Использует сравнительно небольшие блоки (128 байт) и простой метод вычисления контрольной суммы. Имя файла не передается, восстановления после обрыва нет. Тем не менее этот протокол приобрел большую популярность и до сих пор является одним из самых распространенных. Эффективность протокола Xmodem довольно низка, особенно по сегодняшним стандартам.
• Xmodem-CRC. Разновидность Xmodem с более сложным
алгоритмом вычисления контрольной суммы.
• Xmodem-lK. Разновидность Xmodem с размером блока 1
Кб.
• Kermit. Разработан в начале 80-х годов. Передает все
атрибуты файла (имя, дату и размер), способен посылать несколько файлов в одном пакете. Сжимает данные. Коррекция ошибок отличается большей надежностью, чем у Xmodem. Тем не менее из-за малого размера блоков и большого количества служебной информации эффективность этого протокола крайне низка.
• Ymodem. Разработан в 1981 г. Подобно Kermit, передает
атрибуты файлов и несколько файлов в одном пакете. Размер блока — 1 Кб, но из-за того, что протокол не способен менять эту величину во время передачи, он (как и Xmodem-lK) отличается низкой надежностью на шумных линиях.
• Zmodem. Созданный в 1986 г., Zmodem — первый из по-
токовых (streaming) протоколов. Это означает, что он посылает блоки данных с контрольными суммами без остановок, единым потоком. Только после передачи всего
файла приемник выдает список блоков, для которых контрольная сумма не совпадает, и просит послать их еще раз. Потоковый протокол позволяет передатчику не ждать подтверждения после отправки каждого блока, что существенно повышает скорость. Zmodem также передает атрибуты файлов и посылает несколько
файлов в одном пакете. Кроме того, в Zmodem'e впервые введено восстановление после обрыва. Все эти достоинства сделали Zmodem необычайно популярным. Он почти идеален для модемов с аппаратной коррекцией ошибок, так как тратит минимум времени на контроль правильности передачи.
• Ymodem-G. Этот протокол — особый. Он вообще не забо-
тится о правильности передачи, посылая данные сплошным потоком безо всяких контрольных сумм. Поэтому он очень быстрый, но применять его можно только на линиях, абсолютно свободных от помех (один лишь протокол коррекции типа V.42, вообще говоря, не дает такой защищенности).
• HS/Link. Обладает всеми достоинствами Zmodem, но яв-
ляется двунаправленным (bidirectional), то есть позволяет сторонам обмениваться файлами — посылать их в обе стороны одновременно.
• HyperProtocol. Один из самых быстрых протоколов. Как и
Zmodem, является потоковым, но к тому же еще и сжимает посылаемые данные. В HyperProtocol приемник высылает подтверждение не после каждого файла, а в конце всего сеанса передачи. Этот протокол широко применяется для высокоскоростных модемов и выделенных линий.
• Jmodem. Этот протокол использует сжатие данных, а так-
же гибкое изменение
размера блока в зависимости от уровня помех — если ошибок много, данные передаются меньшими порциями, и наоборот (при отсутствии ошибок размер блока может достигать 8 Кб).
• BiModem. Быстрый двунаправленный протокол с возоб-
новлением после обрыва и гибким изменением размера блоков (в пределах от 16 байт до 16 Кб). Кроме того, за счет двунаправленности BiModem позволяет заказывать файлы, которые вы хотите переслать, прямо во время передачи. К сожалению, BiModem плохо работает на шумных линиях.
Набор протоколов, которыми вы можете пользоваться, зависит от вашей коммуникационной программы и от того, с кем вы связываетесь. Прежде чем передавать или принимать файл, вы должны договориться о протоколе передачи с другой стороной, а затем дать своей программе команду начать пересылку файла, используя именно этот протокол.
Какой же протокол выбрать? Xmodem и Kermit сейчас уже явно устарели, и к ним стоит прибегать лишь в крайнем случае — если нет другого выбора. Для современных скоростных модемов с коррекцией ошибок эффективнее всего потоковые протоколы, из которых самым популярным является Zmodem. На хороших линиях можно также пользоваться двунаправленным протоколом BiModem.

< пред след >
вернуться к содержанию
вернуться к списку источников

перейти на главную страницу