Loading AI tools
バイナリ転送プロトコルのひとつ ウィキペディアから
YMODEM(わいもでむ)とは、バイナリ転送プロトコルの一種である。XMODEMやMODEM7を発展させたもので、Chuck Forsbergにより開発され、1985年にYMODEMという名称がつけられた。
SOH(01h)、STX(02h)、EOT(04h)、ACK(06h)、NAK(15h)、CAN(18h)の6つのコントロールコードと文字 ’C’(43h)、’G’(47h) を使用して通信制御を行い、後述するデータブロックの単位でデータを転送する。
受信側 | 送信側 | |
---|---|---|
’C’(送信要求) | → | |
← | ブロック0(1つめのファイル) | |
ACK(肯定応答) | → | |
’C’(送信要求) | → | |
← | ブロック1 | |
ACK | → | |
← | ブロック2 | |
ACK | → | |
(中略) | ||
← | 最終ブロック | |
ACK | → | |
← | EOT(転送終了) | |
NAK | → | |
← | EOT | |
ACK | → | |
(1ファイル転送終了) | ||
’C’(次のファイルを要求) | → | |
← | ブロック0(2つめのファイル) | |
(中略) | ||
← | 最終ブロック(最後のファイル) | |
ACK | → | |
← | EOT | |
NAK | → | |
← | EOT | |
ACK | → | |
’C’ | → | |
← | ブロック0(「全てのファイルを転送終了」) | |
ACK | → | |
(通信終了) |
受信側 | 送信側 | |
---|---|---|
’G’(送信要求) | → | |
← | ブロック0(1つめのファイル) | |
’G’ | → | |
← | ブロック1 | |
← | ブロック2 | |
← | ブロック3 | |
(中略) | ||
← | 最終ブロック | |
← | EOT(転送終了) | |
ACK | → | |
(1ファイル転送終了) | ||
’G’(次のファイルを要求) | → | |
← | ブロック0(2つめのファイル) | |
(中略) | ||
← | 最終ブロック(最後のファイル) | |
← | EOT | |
ACK | → | |
’G’ | → | |
← | ブロック0(「全てのファイルを転送終了」) | |
(通信終了) |
受信側 | 送信側 | |
---|---|---|
← | ブロック7 | |
ACK | → | |
← | ブロック8 | |
(ブロック8に何らかのエラーがあった) | ||
NAK(再送要求) | → | |
← | ブロック8(再度同じブロックを送出) | |
ACK | → | |
← | ブロック9 |
ブロック番号がおかしい、CRC符号とデータの間に矛盾があるなどのエラーが発生した場合、受信側はACKの代わりにNAK(否定応答)を送出する。NAKを受信した送信側は再度同じデータブロックを送出する。ブロック番号を指定して送信を要求する機能はないため、ブロック番号が連続しない場合やYMODEM-gの場合は中断処理(後述)を行うことになる。
何らかの事情により転送途中に通信を終了させたい場合はCANを送出する。これは受信側・送信側のどちらが送出しても良い。
ヘッダ | データブロック番号 | データブロック番号の1の補数 | データ | CRC符号 |
---|---|---|---|---|
8ビット | 8ビット | 8ビット | 1024バイトもしくは128バイト | 16ビット |
データファイル本体の転送に先立って送出するブロック0のデータ部分には、以下に示すフォーマットでファイル情報をセットする。128バイトもしくは1024バイトに満たない部分はNUL(00h)でパディングする(EOFではない)。また、データ部分を全てNULとすると「続けて送信するファイルはもうない」という意味になる。
ファイル名 | NUL(00h) | ファイルサイズ | 空白(20h) | タイムスタンプ | 空白 | パーミッション | 空白 | シリアルナンバー | NUL(パディング) |
1バイト | 1バイト | 1バイト | 1バイト | ||||||
128バイトもしくは1024バイト |
YMODEMは、ファイル情報を転送できないなどのXMODEMの欠点を克服した。しかし、データブロックを送出するごとにACKを待たなければならないので転送速度が遅い (YMODEM)、転送は速いがエラーが起こっても回復できない (YMODEM-g)、コントロールコードのクォート処理を行わないなどの欠点が残っている。そのため、これらの問題を克服すべく、ZMODEMを翌年にChuck Forsbergが開発した。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.