ZMODEM


ZMODEM

ZMODEMは、X.25ネットワークでのファイル転送を改善するために、Telenetが資金提供したプロジェクトで、1986年にChuckForsbergによって開発されたファイル転送プロトコルです。ZMODEMは、古いプロトコルと比較してパフォーマンスが劇的に向上したことに加えて、再起動可能な転送、送信者による自動開始、拡張された32ビットCRC、および8ビットクリーン転送をサポートする制御文字引用を提供し、制御文字を渡さない。 ZMODEM 通信プロトコル
目的
ファイル転送プロトコル
開発者
チャック・フォシュベリ
紹介された
1986 ; 35年まえ (1986)
ポート
なし
ハードウェア
モデム
掲示板システム(BBS)用に開発されたほとんどの転送プロトコルとは対照的に、ZMODEMは、独創的なXMODEMに直接基づいておらず、互換性もありませんでした。XMODEMの多くのバリアントは、その欠点の1つ以上に対処するために開発されており、ほとんどは下位互換性を維持し、「従来の」XMODEM実装で正常に転送を完了します。このリストには、Forsberg独自のYMODEMが含まれています。
ZMODEMは、根本的に改善されたプロトコルを作成することを支持して、下位互換性を避けました。XMODEMのどの高性能品種よりも同等またはそれ以上のパフォーマンスを発揮し、X.25のように以前はまったく機能しなかったリンク、またはTelebitモデムのようにパフォーマンスが低下したリンクを介して機能し、他のプロトコルはほとんどまたはまったくありません。ZMODEMは、1990年代初頭に掲示板システム(BBS)で非常に人気があり、XMODEMが以前と同じように普及した標準になりました。

コンテンツ
1 改善点
1.1 ストリーミング 1.2 再起動 1.3 自動スタート
2 バリエーション
3 制限事項
4 参考文献
5 外部リンク

改善点

ストリーミング
通常、ファイル転送プロトコルは、ファイルを一連のパケットに分割してから、一度に1つずつ受信者に送信します。パケットの主要部分であるペイロードは、送信されるファイルからの特定のバイト数です。ペイロードの後に​​、ペイロードが正しく受信されたかどうかを判断するために使用できるチェックサムまたは巡回冗長検査(CRC)がパケットが正しく受信されると、受信者はACKメッセージを送信し、送信者は次のパケットの送信を開始します。
電話システムは、このプロセスを妨げる遅延と呼ばれる小さな遅延をもたらします。受信者がすぐにACKを送信したとしても、電話回線の遅延は、送信者がACKを受信して​​次のパケットを送信するまでに常に時間がかかることを意味します。モデムが増加して速度、この遅延は減少し、遅延の間に送信されてきた可能性がパケットの大きく、より大きな数を表すチャネル効率を。
XMODEMは、3バイトのヘッダーと1バイトのチェックサムを備えた128バイトのペイロードを使用して、パケットあたり合計132バイトを使用しました。300 bpsのモデムの時代では、パケットが送信するために4秒程度かかりました、典型的なレイテンシはのためにあった1 / 10秒のため、パフォーマンスのオーバーヘッドが有意ではなかったです。速度が上がると、問題はさらに問題になります。約2400 bpsでパケットがかかる
1 / 2が送信することについてそう、
1 / 5利用可能な帯域幅のを待っている無駄になっているACK秒。9600 bpsでのパケットは約そう、送信するだけで0.13秒を必要とする
1 / 2の帯域幅が無駄になっているの。
この問題の1つの解決策は、スライディングウィンドウを使用することです。これらのプロトコルは、送信者がACKを待たずに多数のパケットを送信し続けることを可能にすることにより、遅延に対処します。継続できるパケットの数は「ウィンドウ」であり、ほとんどの実装では通常2〜16パケットでした。スライドウィンドウをサポートするXMODEMの新しいバージョンが、1980年代初頭に数多く登場しました。
スライディングウィンドウは、従来の電話回線のXMODEMの場合のように、数パケット長のオーダーの遅延に役立ちます。ただし、海外の電話やPC PursuitなどのX.25サービスで見られる、待ち時間が1秒以上の長い待ち時間に対処するだけでは不十分です。逆方向チャネルは、はるかに遅い送信1以外だった他の例では、などのためのケースだったのTelebitかのUS Roboticsのも、少数のモデム、ACKリターンチャンネルを圧倒し、転送を一時停止することがありますの。
ZMODEMは、ACKの必要性をまったく排除することでこれらの問題に対処し、受信者がエラーを検出しない限り、送信者がデータを継続的に送信できるようにしました。問題があった場合に限り、NAKのみを送信する必要がありました。ZMODEMは、X.25のようにエラー訂正が組み込まれたリンクでよく使用されるため、受信者は送信者に単一のメッセージを返送しないことがよくありました。その結果、システムはファイル全体を継続的なストリームで送信し、ZMODEMはそれ自体を「ストリーミングプロトコル」と呼びました。
ZMODEMのパフォーマンスは、以前の一般的なプロトコルよりも大幅に改善されたため、エラー訂正がまったく含まれず、モデムによって維持されるエラーのないリンクに依存するYMODEM-gなどの特別なプロトコルでさえも一般的に置き換えられました。YMODEM-gの方が高速でしたが、再起動可能な転送などの他の機能がないため、魅力が低下しました。

再起動
XMODEMおよびそれに基づくほとんどのプロトコルは、データの前に1〜255のパケット番号を付けることでパケットの順序を管理しました。ウィンドウバージョンでは、このパケット番号を使用して、正しく受信されたパケットを示したり、受信されなかったパケットを指定したりしました。パケットの長さは128バイトであるため、これは、パケット番号がロールオーバーされる前に転送できるデータの最大量が32kBであることを意味します。
ZMODEMは、パケット番号を、32ビット番号で示されるファイル内の実際の場所に置き換えました。これにより、ファイルの長さに関係なく、転送を障害点に巻き戻すNAKメッセージを送信できるようになりました。この同じ機能は、転送が失敗した場合や意図的に中断された場合に転送を再開するためにも使用されました。この場合、受信者は以前に受信したデータの量を確認し、その場所でNAKを送信し、送信者がそのポイントから開始するように自動的にトリガーします。

自動スタート
送信機が転送を開始できるようにすることで、管理を簡素化して自動起動します。以前は、ユーザーは最初に送信者にファイルを要求し、ファイルを「待機」状態にしてから、ローカルプログラムに戻り、コマンドを呼び出して転送を開始する必要がありました。自動転送では、ファイルを要求するだけで、送信者はユーザーのプログラムで転送を自動的にトリガーします。

バリエーション
ZMODEMのいくつかの変更されたバージョンが登場しました。ZedZapは、高速モデムでのパフォーマンスを向上させるための8キロバイトのブロックを備えたZMODEMのバリアントでした。LeechZmodemは、BBSダウンロードクォータをだましていたいたずらなZMODEMバリアント(同様のXMODEMおよびYMODEM派生物の中で)でした。32キロバイトと64キロバイトのブロック長を持つZMODEMの下位互換性のある拡張機能は、ISDNやTCP / IPネットワークなどの高速エラーのない接続でのパフォーマンスを向上させるために、2002年と2007年にADONTECによって作成されました。
最も注目すべきZMODEM実装は、ChuckForsbergのOmenTechnology、Incからのものでした。これらには、DSZ(DOS Send ZMODEM)、GSZ(Graphical Send ZMODEM)、およびUnixバリアント用のユビキタス(l)rzszが含まれていました。
最近では、Synchronetの開発者は、WindowsおよびUnixバリアントでネイティブに実行され、長いファイル名とより高速で信頼性の高いデータ転送をサポートするzmtx / zmrxパッケージに大まかに基づいたSEXYZという名前の最新のX / Y / ZMODEM実装を作成しました。 。SEXYZのZMODEM実装も、SyncTERMプロジェクトに組み込まれています。Synchronet、SEXYZ、およびSyncTERMはすべて、オープンソースのクロスプラットフォームのBBS中心のプロジェクトです。
Forsberg自身がZMODEM-90に多くの改良を加えました。これらの最初のものはMobyTurboであり、パフォーマンスをさらに向上させるためにコントロールの引用を削除しました(約15%)。制御文字を「食べる」ネットワーク上でも、ZMODEM-90は、考えられるすべての文字ではなく、ネットワークが実際に食べる文字のみを引用するように調整できます。同様の改善により、ZMODEM-90は7ビットネットワークで動作できるようになりましたが、以前のプロトコル(Kermitを除く)はすべて、ある程度まで8ビットを要求していました。最後に、ZMODEM-90には、非圧縮ファイルのパフォーマンスをさらに向上させるための基本的なランレングスエンコーディング圧縮システムが含まれています。

制限事項
一部のZMODEMパケット(ZACK、ZRPOSなど)は、転送されたファイル内に32ビットの符号なし整数としてバイトオフセットを埋め込みます。この設計により、ZMODEMの実現可能性は、サイズが4GB未満のファイルのみを確実に転送するように制限されます。
プロトコルで許可されていても、参照(l)rzsz実装は、クライアント側の「ターミナルエスケープ」としてtelnetやsshなどのTCP / IP接続プログラムでよく使用される任意の非制御文字(「〜」など)をエンコードできません。文字。ユーザーは、これらの種類のリンクを介して信頼性の高い転送を実現するために、ターミナルエスケープ機能を無効にする必要があります(例:ssh -e none user @ hostname)。

参考文献
ZMODEMアプリケーション間ファイル転送プロトコル
Synchronet外部X / Y / Zmodem(SEXYZ)ファイル転送プロトコルドライバー

外部リンク
ファイル転送プロトコルの進化と選択