混沌の廃墟にて -54-

Flying-XMODEM (1)

1989-05-08 (最終更新: 1996-03-27)

[↑一覧] [新着] [ホームページ]


かなり前に CHAOS RUINS の話題にもなったが、XMODEM と MNP の相性が悪いこ とは既に有名である。

このことは、フォーラムの保守でデータライブラリに何か登録する時に問題と なる。データライブラリにデータを登録する場合、データ自体は XMODEM で送信 したい(*1)。なぜなら、たとえテキストデータであっても、無手順で登録する場 合にはどうも不安があるのだ。XON/OFF だけのフロー制御がしっかりしていれば、 理屈の上ではたれ流しでも支障ないはずなのだが、実際はデータがバッファから 溢れてしまうことがある。これは私のフロー制御の責任である可能性もあるが、(*2) そうではなく単なる運命なのかもしれない。

そこで、例えば1行送信するたびに1秒ウエイトを入れるとよいことに気がつ く。しかし、1行のたびに1秒…電話代が悲しい。会議室の発言ならエコーバッ クが返ってくるので、改行コードを待ってから次の行を送信するような工夫をす れば、やや待ち時間は節約できるのだが、データライブラリへの登録はエコーバ ックがないので不可能である。

このような理由もあって、テキストファイルも XMODEM で登録することにして いるのだが、ご存じの通り MNP の状態で XMODEM を使うとやたら反応が遅い。こ れが不愉快なので、MNP 無しの状態でアクセスし直してからデータを登録してい た、というわけだが…。

データライブラリには、「補足説明」という項目がある。ここは XMODEM で登 録することができない。テキストファイルを普通の手順で upload することにな るが、この時に MNP モードを切っていると文字化けしてしまうのだ。運よく化け にくい回線につながればよいが、ひどい場合には一旦切って掛け直す方がよい程 めちゃくちゃ化ける。

まとめると、我慢の方法が2つある。1つは、文字化けを諦めて(化けたらな んとかなるまで修正するしかない)、データを非 MNP で転送する方を選ぶやり方、 もう1つは速度を我慢して MNP で接続したままデータを upload するやり方だ。

    *
しかし、ついに現状に対する不満が限界を越えた。VOP(3) と AGORA(1) という 2つの電子会議の発言をまとめつつ、データライブラリに移動させる作業に着手 したからだ。そこで、前から試そうと思っていたアイデアを実行することになっ た。要するに XMODEM が高速になればよいのだ。

普通、こういう発想はあまりないらしい。XMODEM というプロトコルはがっちり 固められているから、早くできるわけがない、という先入観があるからか。また、 「MNP + XMODEM はパケットが衝突するから、どうしようもない」という意見には それなりの説得力があるので、もはや反論の余地がないだろうと思う気持ちもわ かる。しかし、NIFTY-Serve に他の高速で転送可能なプロトコルを整備してもら うのを待つのは私の判断では、はっきり言って待っていられそうにない。それに 手元の通信ソフトがサポートできなければ、全く意味がない。

別に NIFTY-Serve のシステム担当者にあれこれ言いたいのではなく、現在シス テムの方が刹那的に忙しいようだから、期待できないと言いたいだけであるから、 誤解しないで欲しい。(*3)

    *
ご存じない方のために、XMODEM の最も基本的なプロトコルを説明する。まず送 信側は受信側が NAK を送ってくるのを待ち、NAK が来たらハンドシェイクが開始 する。
    受信側              送信側
            --- NAK -->

            <-- SOH --- (ブロック開始)
            <--  01 --- (ブロック番号)
            <--  FE --- (ブロック番号を反転させたもの)
            <--  .. --- (実際のデータ 128 bytes)
                 ..
            <-- sum --- (checksum .. ここまでで1つのブロックになる)

            --- ACK -->
ここで、ACK を受信側が返すのは、ブロックを正常に受け取ることができた場 合である。checksum が合わなかったりすると、ACK ではなく NAK を返す。する と送信側は今送ったブロックを再度送信する。これを繰り返して、最後に受信側 が ACK を返し、送信側が送るデータがなくなったら次のように EOT を返す。
    受信側              送信側
            --- ACK -->
            <-- EOT ---
            --- ACK -->
これで1つのファイルが転送できるという仕組みだ。

(つづく)


補足

(*1) NIFTY-ServeでB Plus Protocolが使えるようになるのは1990年1月24日だから、当時はまだ使えなかった。

(*2) 自作の通信ソフトを使っている。

(*3) もちろん裏の意味を読んで欲しいのである。


    COMPUTING AT CHAOS RUINS -54-
    1989-05-08, NIFTY-Serve FPROG mes(?)-095
    FPROG SYSOP / SDI00344   フィンローダ
    (C) Phinloda 1989, 1996