XMODEMとは? わかりやすく解説

エックス‐モデム【XMODEM】


XMODEM

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/03/25 23:57 UTC 版)

ナビゲーションに移動 検索に移動

XMODEM(えっくすもでむ)は、バイナリ転送プロトコルの一種である。128バイト単位で非同期通信を行う。開発者の Ward Christensen がパブリックドメイン扱いで仕様を公開したため、パソコン通信で広く使われた。XMODEMを元に考案されたプロトコルも多く、またXMODEM自身にもいくつかのタイプがある。

特徴

  • 構造が簡単。ただし転送効率が悪い。
  • 128バイトもしくは1024バイト単位でデータを転送する。
  • エラー検出に8ビットのチェックサムもしくは16ビットのCRC符号を利用する。
  • 転送エラーがあった場合、エラーのあったブロックを再送することができる。しかし指定したブロックからやり直す機能はない。
  • ファイル名やファイルサイズ、タイムスタンプなどのファイル情報を転送する機能はない。
  • 一度に転送できるのは1ファイルのみ(バッチ転送不能)。
  • ファイルの末尾がEOF文字(1Ah)であった場合にファイルの破損を招く可能性がある。データブロックのパディングにEOF文字を使用するが、ファイルサイズを転送する機能がないので、それがファイルデータの一部なのか「詰め物」なのか判別できないためである。
  • コントロールコードのクォート(置換)処理を行わない。このため、XON/XOFF文字によるフロー制御を行っている場合には不具合をきたす可能性がある。

XMODEMの種類

XMODEM/SUM
128バイト単位でデータを転送し、エラー検出に8ビットのチェックサムを使用する。単に "XMODEM" といった場合は XMODEM/SUM を指す場合が多い。
XMODEM/CRC
128バイト単位でデータを転送し、エラー検出に16ビットのCRCを使用することで信頼性の向上を図ったもの。
XMODEM/1k
1024バイト単位でデータを転送し、エラー検出に16ビットのCRCを使用することで転送速度と信頼性の向上を図ったもの。
Flying-XMODEM
本来はデータブロックを全て受け取り、エラーがないことを確認した上で送信側に送るACKを、データブロックを受け取り終わる前に先に送ってしまう(フライングする)ことで転送速度の向上を図ったもの。-/SUM、-/CRC、-/1kのいずれに対しても使用される。規約違反であり、性質上エラーがあっても回復することができない。

手順

SOH、STX、EOT、ACK、NAK、CANの6つのコントロールコードと文字 ’C’(43h) を使用して通信制御を行い、後述するデータブロックの単位でデータを転送する。

基本的な流れ

受信側 送信側
NAK(送信要求)
ブロック1
ACK(肯定応答
ブロック2
ACK
(中略)
最終ブロック
ACK
EOT(転送終了)
ACK
(通信終了)
  1. 受信側が送信要求としてNAKを送出する。XMODEM/CRCもしくはXMODEM/1kではNAKではなく ’C’ を送出する。
  2. 送信側が最初のデータブロックを送出する。
  3. 受信側はブロック番号、チェックサムやCRC符号を確認し、受信したデータにエラーがないことを確認した後にACKを送出する。Flying-XMODEMではデータブロックを受け取り終わる前にACKを送出してしまう。
  4. ACKを受けた送信側は次のデータブロックを送出する。全てのデータを送出するまでこれを繰り返す。全てのデータを送出し終わった場合は、送信すべきデータが終了したことを示すEOTを送出する。
  5. 受信側がACKを送出し、通信を終了する。

エラーが発生した場合

ブロック8でエラーが発生した場合の例
受信側 送信側
ブロック7
ACK
ブロック8
(ブロック8に何らかのエラーがあった)
NAK(再送要求)
ブロック8(再度同じブロックを送出)
ACK
ブロック9

ブロック番号がおかしい、チェックサムやCRC符号とデータの間に矛盾があるなどのエラーが発生した場合、受信側はACKの代わりにNAK(否定応答)を送出する。NAKを受信した送信側は再度同じデータブロックを送出する。ブロック番号を指定して送信を要求する機能はないため、ブロック番号が連続しない場合やFlying-XMODEMの場合は中断処理(後述)を行うことになる。

中断処理

一定時間待っても相手側からの応答がない、Flying-XMODEM転送中にエラーが発生したなど、何らかの事情により転送途中に通信を終了させたい場合はCANを送出する。これは受信側・送信側のどちらが送出しても良い。

データブロック構成

ヘッダ データブロック番号 データブロック番号の1の補数 データ チェックサムもしくはCRC符号
8ビット 8ビット 8ビット 128バイトもしくは1024バイト 8ビットもしくは16ビット
ヘッダ
データのサイズを表す。128バイトであればSOH、1024バイトであればSTXをセットする。
データブロック番号
ブロック番号をセットする。1から開始して1ずつカウントアップし、255の次は0になる。
データブロック番号の1の補数
ブロック番号の1の補数(全ビットを反転させたもの)をセットする。
データ
送信するデータを128バイトもしくは1024バイト単位でセットする。送信するデータが128バイトもしくは1024バイトに満たない場合はEOFでパディングする(空いた部分を埋める)。
チェックサムもしくはCRC符号
8ビットのチェックサム、もしくは16ビットのCRC符号をビッグエンディアンでセットする。

発展

XMODEMは効率があまり良くないため、これを改良したYMODEMZMODEMなどが後に開発された。

関連項目



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「XMODEM」の関連用語

XMODEMのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



XMODEMのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2025 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【XMODEM】の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのXMODEM (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS