| 通信プロトコル | |
| 目的 | ファイル転送プロトコル |
|---|---|
| 開発者 | CompuServe 情報サービス |
| 導入 | 1979年 |
| ハードウェア | モデム |
Bプロトコル、またはCIS Bは、CompuServe Information Service用に開発され、1981 年に実装されたファイル転送 プロトコルです。このプロトコルは、後にQuickBバージョン (標準プロトコルの非同期バージョン) に拡張され、さらに拡張されたB Plusバージョンになりました。当時としてはかなり先進的なプロトコルで、ファイル、コマンド、その他のデータの効率的な転送もサポートし、特定のモードでは同時に双方向で使用できました。これらの先進的な機能は広く使用されていませんでしたが、少数のクライアント側パッケージで使用されていました。
B プロトコルは CompuServe 内でのみ動作するように設計されていたため、当時のサードパーティ通信クライアントのほとんどがこれと互換性がありませんでした。注目すべき例外は、アクティブな通信ポートでコマンドをリッスンする機能を備えた PC 上のTera TermとDatastormのProComm PlusEnquire、および自動開始転送を可能にする Mac 上のZTerm です。この開発は、オンライン サービスと連携して外部通信アプリケーションを使用するという幅広いトレンドの一部でした。
説明
B プロトコルのオリジナル バージョンは、1979 年に導入された以前の双方向プロトコルから派生したもので、ストリームに標準化されたコマンド構造を含めるオプションが追加されました。このプロトコルは、 Tandy社が構築したカスタム オンライン ターミナル「AgVision」または「VideoTex」で使用することを意図していましたが、このプロジェクトは短期間販売されただけで中止されました。モデムが取り外された AgVision システムは、 TRS-80 カラー コンピュータのベースになりました。
このプロトコルは後に B Plus バージョンで拡張されましたが、このバージョンには 2 つの改訂がありました。B Plus では、ユーザー間の転送ではなく、CompuServe からのダウンロードのサポートに全体的なコンセプトが主に焦点を当てていました。以下の説明は B Plus のドキュメントに基づいており、以前の (そして珍しい) B については明示的に言及していません。
パケット構造
B Plus は、128 から 2048 バイトの可変サイズのパケットと、1 つまたは 2 つのパケットのウィンドウを持つスライディング ウィンドウプロトコルです。1k および 2k のブロック サイズとスライディング ウィンドウの追加は、B と B Plus 間の構造上の主な変更点です。問題となる可能性のあるすべての制御文字は常に引用符で囲まれていました。これは、多くの人がTymnetなどの 8 ビット クリーンでないパケット サービス経由で CompuServe にアクセスしていたため、必須でした。B Plus では、4 種類のエラー チェックのいずれかも使用されていました。
基本的なパケット構造は 5 つの部分で構成されます。
リードインは、ほとんどのプロトコルの「ヘッダー」と同じ目的を果たし、後続のデータが B Plus パケットであることを示します。シーケンス番号は、受信時にパケットが正しい順序で受信されていることを確認するための簡単な方法です。使用される番号の範囲が小さいため、パケットが「1 つでも順序が間違っている」と再送信または中止がトリガーされるため、問題は発生しません。したがって、10 パケット後に「間違った 0x30」が受信される可能性はありません。
本文またはトレーラー内の文字は「引用符で囲まれます」。 正式には、、、、<ETX>( XON)、( XOFF)、および の少数の文字のみが引用符で囲まれます。 通常、他の 3 つの文字も引用符で囲まれます、、+ 0x80、 + 0x80。 文字は<ENQ>、序数値に 0x40 を追加し、文字をプレフィックスとして付けることで引用符で囲まれます。 たとえば、文字 (0x03) は として送信されます。
<DLE><DC1><DC3>NAK<RS><DC1><DC3><DLE><ETX><DLE>C
チェック値は、チェックする内容と同様に引用符で囲まれていましたが、内部の値は引用符で囲まれていない値のチェックでした。つまり、受信側でチェック値を計算する前に、本文を抽出して引用符で囲まなければなりませんでした。チェック値には、オリジナルのXMODEM チェックサム、 XMODEM-CRCで使用される巡回冗長検査(CRC)のわずかに修正されたバージョン、または CCITT CRC-16 または CRC-32 の 4 種類が許可されていました。CCITT CRC を使用する場合、トレーラーには最後に「ネットワーク ブレーク」(今すぐ送信) としてオプションの文字も含まれていましたが、これが他のトレーラー タイプでサポートされていない理由は明らかではありません。
<RS>
パケットの種類
B Plus では、1 つのパケット タイプしか含まれないほとんどのプロトコルとは対照的に、複数の異なるパケット タイプが定義されています。これらのパケットは、データ転送だけでなく、コマンドとプロトコル設定情報の安全な配信にも使用されました。4 つのタイプは次のとおりです。
転送される総数に関して最も一般的なパケットは、ファイル転送のデータを運ぶ T パケットです。これらのパケットにはそれ以上の意味的な価値はなく、上記のようにフォーマットされます。T パケットには、「サブタイプ」も含まれます。Tr は「転送再開」、TF は再開が部分的にダウンロードされたファイルと一致しなかった場合の「転送失敗」、TI は「転送情報」で、転送中のファイルの詳細を送信します。ほとんどのプロトコルは、ファイル情報を転送ストリーム自体の特別な「ゼロ番目のパケット」として送信しますが、B Plus では、これは別のパケット タイプによって処理され、実質的に転送ストリーム自体の外部で処理されますが、実際には実際の違いはありません。
失敗パケットにより、送信者はパケット ストリーム内のさまざまな問題を示すことができます。パケットには通常、1 つの「既知の」文字が含まれますが、この文字に続いて情報メッセージが含まれる場合もあります。最も一般的な失敗パケットは A(bort) であり、ユーザーは要求に応じて転送を終了できます。その他の失敗には、(C)apacity 障害 (ディスク領域不足) や (M)issing ファイルなどがあります。
トランスポート パラメータは通常、初期接続フェーズで 1 回だけ送信されます。このパケットには、接続の両端で使用できる機能を同期する既知の形式の詳細が多数含まれています。たとえば、チェック値のタイプが選択されたのはこのフェーズです。
トランスポート層
上で概説した通常のパケット タイプに加えて、B Plus には、B Plus エラー訂正レイヤーを介して CIS にコマンドを送信するための別のタイプも含まれていました。M パケットは単一のデータ パケットであり、L パケットもデータ パケットですが、データ ストリームが完了したことを示します。ファイル転送とは異なり、送信されるデータの量は事前にわからないため、この方法で示す必要がありました。
これらのパケットの内容は自由形式で、B Plus ドキュメント自体には定義されていませんでした。ただし、基本的な概念は、ユーザーの端末プログラムが CIS の問い合わせシーケンス (ユーザーが最初にログインしたときに送信される) に応答して、M タイプの転送を開始するというものでした。このストリームは CIS ホストにコマンドを送信するために使用され、CIS ホストは別のトランスポート層ストリームを開いて端末プログラムに返します。これらのストリームは「シーケンスレス」であり、受信順に読み出されます。エラー パケットまたは失敗パケットにより、両方のチャネルが中止されました。
おそらく、トランスポート層の唯一のユーザーは、CompuServe 独自のホスト マイクロ インターフェイス(HMI) APIでした。HMI は、コマンド ライン インターフェイスをバイパスして、CIS を駆動するために使用できる多数のコマンドと、それに対する可能な応答を定義しました。B Plus 上に構築されたことによる副作用としてエラー訂正が使用されていたため、コマンドを誤って解釈したり、応答が文字化けする可能性は基本的に排除されました。CIS は HMI を拡張して、電子メール、会議、ファイル転送の機能を含むバッチ指向インターフェイスのほとんどを制御できるようにしました。
トランスポート層ストリームはファイル転送と同時には実行できないため、一般的にトランスポート層を使用するアプリケーションは、かなりモーダルでした。たとえば、 HMI ベースのMac用CIS Navigator を使用すると、ユーザーは CIS をオフラインで操作し、さまざまな電子メールやファイル転送を設定して、オンライン時間を短縮するために 1 つのバッチで実行できます。Navigator の「実行」の最後のステップは、ログオフする前にファイルをダウンロードすることです。
制御シーケンス
すべてのプロトコルは、「バックチャネル」を使用して、「受信者」から「送信者」にステータス情報を送り返します。B Plus はこのシステムを形式化し、パケット構造の外部に送信できるいくつかの「メッセージ」を定義しました。これらには、DLEパケットの正しい受信を確認するためにシーケンス番号が後に続く典型的なメッセージが含まれます。は、NAK不適切に受信されたパケットを示すために使用され、確認メッセージで応答されます。は<DLE><DLE>送信<DLE>;者を一時停止し、は<DLE>+ストリームを中止します。
Enquire 制御シーケンスは、B Plus に固有のようです。 1 つの で構成される<ENQ>Enquire は、転送の開始と 受信後の再開の両方に使用されましたNAK。 どちらの場合も、Enquire によって、受信側は接続モードを最も基本的な転送設定にリセットし、転送の準備をしました。
参照
参考文献
- ラス・ランショウ、「CompuServe B Plus プロトコル」、1993 年 11 月 18 日
- このドキュメントの zip 圧縮バージョンは bplus.zip として入手できます。
- Thomas, Levi; Turner, Nick (1986 年 7 月)。「CompuServe B プロトコル: ファイル送信のよりよい方法」。Dr . Dobb's Journal。第 11 巻、第 7 号。54 ~ 59 ページ。
