XMODEM

XMODEM（えっくすもでむ）は、バイナリ転送プロトコルの一種である。128バイト単位で非同期通信を行う。開発者の Ward Christensen がパブリックドメイン扱いで仕様を公開したため、パソコン通信で広く使われた。XMODEMを元に考案されたプロトコルも多く、またXMODEM自身にもいくつかのタイプがある。
手順.
SOH、STX、EOT、ACK、NAK、CANの6つのコントロールコードと文字 ’C’(43h) を使用して通信制御を行い、後述するデータブロックの単位でデータを転送する。
エラーが発生した場合.
ブロック番号がおかしい、チェックサムやCRC符号とデータの間に矛盾があるなどのエラーが発生した場合、受信側はACKの代わりにNAK（否定応答）を送出する。NAKを受信した送信側は再度同じデータブロックを送出する。ブロック番号を指定して送信を要求する機能はないため、ブロック番号が連続しない場合やFlying-XMODEMの場合は中断処理（後述）を行うことになる。
中断処理.
一定時間待っても相手側からの応答がない、Flying-XMODEM転送中にエラーが発生したなど、何らかの事情により転送途中に通信を終了させたい場合はCANを送出する。これは受信側・送信側のどちらが送出しても良い。
発展.
XMODEMは効率があまり良くないため、これを改良したYMODEM、ZMODEMなどが後に開発された。