接続中のモデムへ、どうやって命令するか

モデムには、少なくとも二つの状態がある。

command mode
= ダイヤル、切断、設定変更など、モデム自身への命令を受け取る

data mode
= 入力された文字やバイトを、通信相手へそのまま送る

接続前なら、ATから始まる命令を入力できる。

だが接続後は、端末から入った文字列を通信相手へ渡さなければならない。

それでも、回線を切らずにモデムの設定へ戻りたいことがある。

ここで使われたのが、Hayes系モデムのescape sequenceだった。

+++だけではない

一般には、接続中に+++と入力するとコマンドモードへ戻る、と説明される。

しかし重要なのは三つのプラス記号だけではない。

典型的な仕組みでは、escape characterの連続の前後に、一定時間、データが流れない時間――guard time――が必要だった。

しばらく沈黙
      ↓
+++ 
      ↓
しばらく沈黙
      ↓
command modeへ移る

同じ+++でも、通常のデータ列の途中に現れただけなら、通信相手へ送られる。

沈黙に挟まれ、条件を満たしたときだけ、モデム自身への命令として解釈される。

Hayes escape sequenceでは、文字の意味を決めるのは文字だけではない。前後の時間も構文の一部だった。

データとコマンドが同じ線を流れる

端末とモデムの間には、一つのシリアル通信路がある。

その線を、

  • 通信相手へ届ける本文
  • モデムの状態を変える命令

が共用していた。

通常時
+++ = 相手へ送るデータ

guard timeに挟まれたとき
+++ = モデムへの状態遷移コマンド

同じ三文字が、文脈によってデータからコマンドへ反転する。

2600 Hzのin-band signalingでは、音声路上の音が交換機への命令へ反転した。

Hayes escape sequenceでは、通信データ上の文字列がモデムへの命令へ反転した。

生成AIのprompt injectionでは、処理対象の文章がモデルへの命令として解釈され得る。

2600 Hz
音声と交換制御信号が同じ帯域にある

Hayes escape sequence
通信データとモデム制御文字列が同じシリアル路にある

prompt injection
処理対象データと指示が同じ自然言語列にある

技術は違う。

しかし、同じ入力面にあるものを、内容・時間・文脈だけで権限の異なる命令へ分類するという構造は共通している。

誤作動を避けるための沈黙

もし+++が現れるたびにモデムがコマンドモードへ戻れば、圧縮データ、プログラム、文書の中に偶然その並びが現れただけで通信が止まってしまう。

Hayes Microcomputer Productsの特許では、透明なデータ通信中にescape characterが偶然現れても誤って状態を切り替えないため、直前と直後の一定時間を検査する仕組みが説明されている。

優先日は1981年6月15日、米国特許の公開は1985年だった。

ここでguard timeは、セキュリティ境界というより、曖昧な文字列を区別するための文法だった。

モデムは、誰が+++を送ったかではなく、その前後に沈黙があったかを見ていた。

AT command set

Hayes系モデムでは、AT――attention――から始まる命令体系が広く互換実装された。

ダイヤル、応答、切断、音量、エコー、結果コード、通信設定などを文字列で操作できた。

後にITU-T V.250は、電話網へ接続するモデムなどを端末側から制御するAT command setの慣行を標準化した。

escape sequenceは、通信中のdata modeから、このcommand modeへ戻るための入口だった。

この設計によって、端末は専用の制御線を追加せず、一つの文字通信路だけでモデムを設定し、接続し、通信し、再び制御できた。

簡潔で、実装しやすく、互換性を広げた。

同時に、制御とデータの境界を、物理的な分離ではなく解釈規則へ委ねた。

escape sequenceは、回線を切る命令ではない

escape sequenceそのものは、一般に通信回線を即座に切断するための命令ではない。

まずモデムをオンライン状態のままcommand modeへ戻す。

その後、利用者は状態確認、設定変更、再びdata modeへ戻る操作、または切断命令を選べる。

通信中
  ↓ escape sequence
オンラインのcommand mode
  ↓
設定・復帰・切断などを選ぶ

この中間状態が重要である。

データ通信と制御は、接続/切断の二択ではなく、一つの回線を保持したまま切り替えられた。

この標本が示す境界

  • 同じ文字列でも、時間的文脈によって意味が変わる
  • データ路を制御路としても使うと、状態遷移の識別規則が必要になる
  • escape characterだけを秘密にしても境界にはならない
  • 誤作動を避ける仕組みと、権限を検証する仕組みは別である
  • commandとdataの分離は、物理線だけでなく、プロトコルと来歴の設計でも行われる
  • 沈黙や遅延も、通信内容の外側ではなく、意味を作る情報になり得る

Hayes escape sequenceは、文字列に命令性を与えたのではない。文字列、沈黙、モデムの現在状態を組み合わせ、同じ線の上に一時的な制御面を出現させた。

関連標本

資料・出典