XMODEM
From Wikipedia, the free encyclopedia
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のいずれに対しても使用される。規約違反であり、性質上エラーがあっても回復することができない。