YMODEM

YMODEM（わいもでむ）とは、バイナリ転送プロトコルの一種である。XMODEMやMODEM7を発展させたもので、Chuck Forsbergにより開発され、1985年にYMODEMという名称がつけられた。
手順.
SOH(01h)、STX(02h)、EOT(04h)、ACK(06h)、NAK(15h)、CAN(18h)の6つのコントロールコードと文字 ’C’(43h)、’G’(47h) を使用して通信制御を行い、後述するデータブロックの単位でデータを転送する。
エラーが発生した場合.
ブロック番号がおかしい、CRC符号とデータの間に矛盾があるなどのエラーが発生した場合、受信側はACKの代わりにNAK（否定応答）を送出する。NAKを受信した送信側は再度同じデータブロックを送出する。ブロック番号を指定して送信を要求する機能はないため、ブロック番号が連続しない場合やYMODEM-gの場合は中断処理（後述）を行うことになる。
中断処理.
何らかの事情により転送途中に通信を終了させたい場合はCANを送出する。これは受信側・送信側のどちらが送出しても良い。
ブロック0.
データファイル本体の転送に先立って送出するブロック0のデータ部分には、以下に示すフォーマットでファイル情報をセットする。128バイトもしくは1024バイトに満たない部分はNUL(00h)でパディングする（EOFではない）。また、データ部分を全てNULとすると「続けて送信するファイルはもうない」という意味になる。
発展.
YMODEMは、ファイル情報を転送できないなどのXMODEMの欠点を克服した。しかし、データブロックを送出するごとにACKを待たなければならないので転送速度が遅い (YMODEM)、転送は速いがエラーが起こっても回復できない (YMODEM-g)、コントロールコードのクォート処理を行わないなどの欠点が残っている。そのため、これらの問題を克服すべく、ZMODEMを翌年にChuck Forsbergが開発した。