YMODEM

YMODEMについて



YMODEM(わいもでむ)は、バイナリデータを転送するためのプロトコルの一つです。この技術は、XMODEMやMODEM7を基にして発展したもので、Chuck Forsbergによって1985年に開発されました。基本的な特徴として、ファイルデータを1024バイトまたは128バイト単位で転送でき、エラー検出には16ビットのCRC符号が使用されます。これにより、通信エラーが発生した場合でも、該当するデータブロックを再送信することが可能です。ただし、特定のブロックから再送信を開始できる特徴は持ち合わせていません。

特徴


YMODEMの大きな特徴の一つは、ファイルに関連する情報として、ファイル名、サイズ、時間情報などを同時に転送できる点です。また、一度に複数のファイルを転送することができるため、効率的なデータ処理が可能です。このプロトコルでは、コントロールコードのクォート処理を行わないため、特定のフロー制御が必要な環境では不具合を引き起こす可能性もあります。

YMODEMの種類


YMODEMには主に以下の3つのバリエーションがあります。

  • - YMODEM: これは基本的なYMODEMで、XMODEM/1kにファイル情報の転送機能と複数ファイル転送機能を加えたものです。
  • - YMODEM-g: レシーバからの応答を待つことなく、次々とデータを送出するバージョンです。これにより、通信速度が向上しますが、エラー時に回復が不可能です。
  • - YMODEM(-g)シングルモード: 複数ファイルの転送機能を持たないバージョンで、本来のYMODEMの仕様には存在しないモードです。日本では通常「YMODEM」と呼ばれると、こちらを指すことが多いのです。

転送手順


YMODEMの通信は、特定のコントロールコードを使用して管理されます。以下は、基本的な転送の流れです。

1. 受信側が送信要求として文字 'C' を送出。
2. 送信側がファイル情報を含むデータブロック(ブロック0)を送信する。
3. 受信側はデータにエラーがないことを確認後、ACKを送信。この動作を繰り返し、送信側が全データを送信した際には、EOTを送出することで通信終了を通知します。

YMODEM-gの場合は、受信側が'G'を送信し、送り手がデータを次々に送信します。

エラー処理


もし通信中にエラーが発生した場合、受信側がACKの代わりにNAKを送出することで、同じデータブロックの再送信を要求します。ブロック番号の連続性が保たれない場合やYMODEM-gの使用時には、中止処理が必要です。この際は、CANコマンドを用いて通信を終了できます。

データブロックの構成


データブロックは、ヘッダ、ブロック番号、データ内容、CRC符号から成り、転送の際に必要な情報を明確に伝達します。具体的には、ブロック番号は0から開始し、1ずつ増加、255に達した後は再び0に戻ります。データのセクションには送信データを配置し、サイズが少ない場合はEOFでパディングします。

まとめ


YMODEMは、XMODEMの問題を克服しつつも、さらに高機能で使いやすいプロトコルとして進化しました。しかし、その利用に際してはエラー回復や転送速度の問題が残っており、これらの課題を解決するためにZMODEMが登場します。YMODEMの発展は、ファイル転送技術の重要なステップとなりました。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。