Nmodem

Nmodem（えぬもでむ）は、HN「謎の青年失業家」が1991年に発表したバイナリ転送プロトコルの一種。パソコン通信で使用された。通信状態に応じ最大4096バイトの可変長パケットを使用してデータを転送する、ファイル情報を転送できる、一度に複数のファイルを転送できる、リジューム転送ができるなどの特徴を持つ。
対応したホストが少なかったこと、対応したパソコン通信クライアントソフトが皆無であったことなどの事情により、広く使用されることはなかった。
なお、海外で使用された同名のプロトコル "NMODEM" は、XMODEM/CRCを拡張した別物である。
手順.
EOT、ACK、NAK、CANの4つのコントロールコードと、’0’～’7’、’n’ の9文字を使用して通信制御を行う。
基本的な流れ.
※各パケットのフォーマットは後述する。
中断処理.
何らかの事情により転送途中に通信を終了させたい場合は転送強制中断パケットを送出する。これは受信側・送信側のどちらが送出しても良い。
リジューム転送.
何らかの事情により転送途中に通信が途切れてしまった場合でも、次回接続時に途切れた場所から転送をやり直すことができる。この場合、受信側は通信開始時のACKパケットに先立って位置情報パケットを送出し、転送開始位置を指定する。
ファイルスキップ.
既に同じファイルが手元にあったなどの場合、受信側は転送ファイルスキップパケットを送出することでファイル転送をスキップすることができる。
各種パケットのフォーマット.
位置情報パケット.
データオフセットは128バイト単位で指定し、ビッグエンディアンでセットする。具体的には
とすると、1280バイト目という意味になる。
ヘッダ要求パケット.
もしくは
上記の2種類が定義されている。どちらを使用しても良い。
ACKパケット.
ACKパケットは送信開始合図であるとともに、使用するパケットサイズを指定する目的にも使用する。パケットサイズは ’2’～’7’ の文字で表し、以下のように定義されている。
NAKパケット.
NAKパケットは再送要求であるとともに、再送位置を指定する目的にも使用する。再送要求位置のフォーマットは位置情報パケットのデータオフセットと同じ。再送要求位置を ffh,ffh,ffh とするとヘッダ要求パケットになるので注意が必要。