ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
ファイル転送プロトコルの一つ。ファイル転送に伴う誤り検出・再送を行なうもの。
まず、受信したい側が、送信側に対して否定的な通知(NAK)を投げることから交信は始まる。送信側はそれに対し、SOHを返信する。もし返信が無い場合、数秒の間をあけてからNAKを再送し、SOHの返信を待つ。
送信側は、NAKを受信したら、SOHに続けてチェックサム(またはCRC)までのデータを送信する。
受信側は、チェックサム(またはCRC)までのデータを受信したら、エラーチェックを実行する。正常であればACKを返信し、さもなくばNAKを返信する。
送信側は、ACKが返れば次のブロックを送信する。NAKが返った場合は、そのブロックを再送する。
送信側は、全てのデータを送信した場合、ACKを受け取ったあと、SOHではなくEOTを送信する。
受信側は、EOTを受信したら、ACKを返信し、受信を終了する。
オリジナルに対し、改良版として、様々なものが作られた。
更に、次の亜種(後述)がある。
CRC XMODEMでは、最初に送信するNAKの代わりに'C'(4/3、0x43)を送信する。128/CRC、1024/CRCが該当する。
データ長が1024オクテットのXMODEMでは、ブロック開始のSOHの代わりにSTX(0/2、0x02)を使用する。128と1024は混在可能。なお、終了の合図はEOTで通常と同様である。1024/CRCが該当する。
なお、CRCは16ビットつまり2オクテットあるが、上位オクテット、下位オクテットの順に送る。つまりビッグエンディアン(ネットワークバイトオーダー)である。
パケット長は元々128オクテットだった。これを1Kiオクテットに拡張したものもあるが、それでもACKのオーバーヘッドにより効率は良くない。
そこで、エラーチェックを全て廃したFlying-XMODEMや、これにスライディングウィンドウ&再送機能、コード変換、ブロック同期を付けたWXMODEMなどといったものも存在する。
但し、XMODEMは単にファイルをブロック単位で送るだけで、それ以上の機能はない。ファイルサイズを送る機能さえないのである。
YMODEMやZMODEMなどは、ファイルサイズ、ファイル名、あるいはタイムスタンプ等の情報を伝える機能を持つものがあり、この機能を使えば受信したファイルは厳密に送信したものと同一になる。
全体としてのブロック長は一定である。またファイルサイズを送る機能はない。
しかし、データ長が厳密に128または1024の倍数になるケースは少ないため、多くの場合、最終パケットは「大きさがあまる」ことになり、この場合は末尾に適当なデータ(NUL文字(0x00)やSUB(0x1a; EOF文字))を詰めることになる。
この点が問題になることも多い。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます