Xmodem は、 128 バイトのデータとチェックサムを送り、 すべて大丈夫だという通知を待ってから、 次のブロックを送ります。もし否定的な通知が返ったり、 ACK も NAK も決して返らない場合は、再度そのブロックを送ります。
Xmodem は、 CP/M を動かしている 8 ビットコンピュータ用に書かれたプログラム程度の、 単純なプロトコルです。 このプログラムには効率が悪い部分が数多くあるし、 小さな問題点もたくさんあります。 例えば、ファイルサイズを次の 128 バイト境界に切り上げてしまいます。 これらの欠点から進化した結果が、 Xmodem の改訂プロトコル、それから Ymodem、そして最後が Zmodem です。 Zmodem は Xmodem よりも充分高速だし、些細な問題もありません。 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 をタイプすればコマンドプロンプトに戻ります。この方法は、 Xmodem の rx や Ymodem の ry でも動作します。
Zmodem で役に立つ機能といえば、 アップロードに失敗しても復旧できることと、 一回のアップロードのセッションで、複数のファイルを送れることです。
Xmodem や Ymodem、そして Zmodem を POSIX 用に実装したものは、 http://www.ohse.de/uwe/software/lrzsz.html にあります。 Red Hat Linux は lrzsz RPM パッケージの形でこれを配布しています。 lrzsz は、 Omen Technology が出している、 rzsz というパブリックドメイン版から 派生している、機能拡張したフリーソフトウェアです。