Введение

Протокол B, или CIS B, — это протокол передачи файлов, разработанный для CompuServe Information Service и реализованный в 1981 году. Позднее протокол был расширен в версии QuickB (являвшейся асинхронной версией стандартного протокола), а затем в улучшенной версии B Plus. Для своего времени это был довольно продвинутый протокол, поддерживающий эффективную передачу файлов, команд и других данных, а также возможность одновременной передачи данных в обоих направлениях в определенных режимах. Эти расширенные возможности не получили широкого распространения, но встречались в небольшом количестве клиентских программ. Поскольку протокол B был разработан исключительно для работы в CompuServe, большинство сторонних коммуникационных программ того времени с ним не были совместимы. Примечательными исключениями были Tera Term и ProComm Plus от Datastorm для ПК, которые позволяли прослушивать команды на активном коммуникационном порту, и ZTerm для Mac, поддерживавший автоматический запуск передачи данных. Это развитие стало частью более широкой тенденции использования внешних коммуникационных приложений совместно с онлайн-сервисами.

Описание

Первоначальная версия протокола B выросла из более раннего двунаправленного протокола, представленного в 1979 году, с добавлением возможностей включения стандартизированной командной структуры в поток данных. Этот протокол предназначался для использования в специализированном онлайн-терминале, разработанном Tandy, под названием "AgVision" или "VideoTex", но проект был прекращен после короткого периода продаж. Система AgVision, без модема, стала основой для TRS-80 Color Computer. Позже протокол был расширен в версии B Plus, хотя существовало два варианта этой версии. B Plus в основном ориентировал общую концепцию на поддержку загрузки данных с CompuServe, в отличие от передачи данных между пользователями. Следующее описание основано на документации B Plus и не относится явно к более раннему (и редкому) протоколу B.

Транспортный слой

В дополнение к обычным типам пакетов, описанным выше, B Plus также включал отдельные типы для отправки команд в CIS через слой с коррекцией ошибок B Plus. Пакет M представлял собой один пакет данных, а пакет L также был пакетом данных, но указывал на завершение потока данных. Это требовалось, поскольку, в отличие от передачи файлов, объем передаваемых данных заранее не был известен. Содержимое этих пакетов было произвольным и не определялось в документации B Plus. Однако основная идея заключалась в том, что терминальная программа пользователя отвечала на последовательность запросов CIS (отправляемую при первом входе пользователя) началом передачи данных типа M. Этот поток использовался для отправки команд хосту CIS, который в ответ открывал другой поток транспортного уровня обратно в терминальную программу. Эти потоки не имели нумерации и считывались в порядке их поступления. Пакеты с ошибками или сбоями приводили к прерыванию обоих каналов. Вероятно, единственным пользователем транспортного уровня был собственный API Host Micro Interface (HMI) CompuServe. HMI определял набор команд для управления CIS, а также возможные ответы на них, обходя интерфейс командной строки. Благодаря использованию коррекции ошибок как побочного эффекта построения на основе B Plus, возможность неверной интерпретации команд или получения искаженных ответов была практически исключена. CIS расширил HMI, чтобы обеспечить управление большинством пакетных интерфейсов, включая функции электронной почты, конференций и передачи файлов. Потоки транспортного уровня не могли выполняться одновременно с передачей файлов, поэтому приложения, использующие транспортный уровень, в целом были достаточно модальными. Например, CIS Navigator для Mac, основанный на HMI, позволял пользователям просматривать CIS в автономном режиме, настраивая различные сообщения электронной почты и передачи файлов, которые затем выполнялись единой партией для сокращения времени подключения. Последним шагом в работе Navigator была загрузка файлов перед выходом из системы.

Последовательность управления

Все протоколы используют "задний канал" для отправки информации о состоянии от "приемника" к "отправителю". B Plus формализовала эту систему, определив несколько "сообщений", которые могли быть отправлены вне структуры пакетов. Среди них – типичное подтверждение, за которым следовал порядковый номер для подтверждения правильного приема пакета. Для обозначения неправильно полученного пакета использовался сигнал об ошибке, на который отвечали сообщениями подтверждения; сигнал приостановки останавливал отправителя, а сигнал отмены прерывал поток. Контрольная последовательность "Запрос" представляется уникальной для B Plus. Состоящий из одного символа, "Запрос" использовался как для начала передачи, так и для возобновления после получения сигнала об ошибке. В обоих случаях "Запрос" приводил к сбросу приемником режима соединения до самых базовых настроек передачи и подготовке к передаче.