コンテンツにスキップ

XMODEM

出典: フリー百科事典『ウィキペディア(Wikipedia)』

XMODEM128 Ward Christensen 使XMODEMXMODEM

特徴

[編集]



1281024

816CRC





1

EOF(1Ah)EOF使

XON/XOFF

XMODEMの種類

[編集]

XMODEM/SUM

1288使 "XMODEM"  XMODEM/SUM 

XMODEM/CRC

12816CRC使

XMODEM/1k

102416CRC使

Flying-XMODEM

ACK-/SUM-/CRC-/1k使

手順

[編集]

SOHSTXEOTACKNAKCAN6 C(43h) 使

基本的な流れ

[編集]
受信側 送信側
NAK(送信要求)
ブロック1
ACK(肯定応答
ブロック2
ACK
(中略)
最終ブロック
ACK
EOT(転送終了)
ACK
(通信終了)

(一)NAKXMODEM/CRCXMODEM/1kNAK C 

(二)

(三)CRCACKFlying-XMODEMACK

(四)ACKEOT

(五)ACK

エラーが発生した場合

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

CRCACKNAKNAKFlying-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などが後に開発された。

関連項目

[編集]