B.3. Xmodem, Ymodem および Zmodem

Xmodem は、 128 バイトのデータとチェックサムを送り、 すべて大丈夫だという通知を待ってから、 次のブロックを送ります。もし否定的な通知が返ったり、 ACKNAK も決して返らない場合は、再度そのブロックを送ります。

Xmodem は、 CP/M を動かしている 8 ビットコンピュータ用に書かれたプログラム程度の、 単純なプロトコルです。 このプログラムには効率が悪い部分が数多くあるし、 小さな問題点もたくさんあります。 例えば、ファイルサイズを次の 128 バイト境界に切り上げてしまいます。 これらの欠点から進化した結果が、 Xmodem の改訂プロトコル、それから Ymodem、そして最後が Zmodem です。 ZmodemXmodem よりも充分高速だし、些細な問題もありません。 Zmodem のプロトコルは Xmodem のプロトコルよりもずっと複雑ですが、 自分でするのは、 せいぜいコードをコンパイルしてインストールすることだけですから、 その複雑さに関わりあう必要はありません。

remote bash$ rz
... waiting to receive.**B0100000023be50
Alt-S Upload zmodem
[zmodem upload - Press CTRL-C to quit]
Sending: upload.bin
Bytes Sent:   3072/  10000   BPS:2185     ETA 00:09

アップロードが失敗して rz がファイルの受信待ちのままになっている場合は、何回か Ctrl-X をタイプすればコマンドプロンプトに戻ります。この方法は、 XmodemrxYmodemry でも動作します。

Zmodem で役に立つ機能といえば、 アップロードに失敗しても復旧できることと、 一回のアップロードのセッションで、複数のファイルを送れることです。

XmodemYmodem、そして ZmodemPOSIX 用に実装したものは、 http://www.ohse.de/uwe/software/lrzsz.html にあります。 Red Hat Linuxlrzsz RPM パッケージの形でこれを配布しています。 lrzsz は、 Omen Technology が出している、 rzsz というパブリックドメイン版から 派生している、機能拡張したフリーソフトウェアです。