YMODEM-g
読み:ワイモデムジー
外語:YMODEM-g

 YMODEMをベースとしたファイル転送プロトコルの一つ。
目次

概要
 YMODEMは、XMODEMに対してファイル情報の送信やバッチ転送に対応したが、ACK待ちのタイムロスは改善されなかった。
 そこでYMODEM-gは、ヘッダー情報以外のブロックに対し、ACKを返信せず、ACK返信を待たず、どんどん送信する。
 当然誤り訂正が行なえないので、エラーフリーの環境でなければならず、下層にITU-T V.42(LAPM)などの誤り訂正機能が別途必要になる。

特徴
 このプロトコルでは、エラーチェックの一切をしない。エラーは発生しないことになっているからである。従って、途中でエラーが発生しても、それを通知する手だて(例えばNAKを送る等)は一切無いのも特徴である。

仕様
 基本的なプロトコルは、YMODEMとほぼ同じで、X/Y/Y-g全てに対応した実装を作ることも難しくない。

シーケンス
 ファイル送信の最初は、誤り訂正チェックサムならNAK、CRCなら'G'を送信することから始まる。'C'ではなく'G'であるのが違いである。
 但し、ヘッダー情報の後、ACKに続いて送られるコード(データ要求のコード)は'C'のままである。'G'なのは、各ファイルの最初の送信要求時の符号のみである。
 データ長が128バイトならブロック開始文字がSOH、1024バイトならSTXであるのも同様である。
 ヘッダー情報の仕様、バッチ転送の仕様もYMODEMと同じである。

顕著な差
 YMODEM-gでは、ACK待ちをしない。ほぼ垂れ流しと同様となり、従って速いことになる。
 最初のヘッダーと、最後のEOTにだけは、ACK待ちがある。しかし、データ本体に対してはACK待ちをせず、受信側もACK/NAKは一切送信しない。
 つまり、送信側は一つのブロックを送ったあと、すぐに次のブロックを送る。受信側はただひたすらに受信する。
 高速であるが、唯一注意せねばならないのは、フロー制御である。受信側のバッファーが溢れてしまっては元も子もない。一般的には、フロー制御はハードウェアフローによって行なわれる。

実装
 通常YMODEM-gといえばバッチ転送有りのものを指すのだが、日本ではバッチ転送無しのものも作られてしまったため、バッチ転送ありのものをYMODEM-g/BATと呼ぶようになった。海外ではバッチ転送ありで固定である。
 電話回線を含めた全ての伝送経路上に於いてパケットロス等の異常が発生した場合でも一切再送を行なわないため、その時点でダウンロードに失敗する。
 これは草の根BBSサーバーmmmやNET-COCK、BIG-MODELなどで使われている。

再検索