要約

  • RFC 794では、端末を扱うプロセスが既存の接続を使いながらTCPのLISTENを残し、上位の優先度の接続が来たときに低位の接続を切るか判断する構想が示された。
  • FTPの例では、受信側のサービスが中断する転送を片づける。発信側も資源で満杯なら、要求を出す前にOSが場所を空ける必要がある。

ファイル転送の途中に「緊急です」と別の接続が来た。接続を通すなら、今つないでいる相手との仕事はどう終えるのか。Vint Cerfの1981年のRFC 794は、優先順位という言葉に実際の後始末を付けた短い論考だ。例に登場するのは、XからYへの通常のFTP転送と、ZからXへ向かう、より高い優先度の要求である。

文書は電話から話を始める。回線交換では、使っていない時間も回線が占有される。満杯のときは新しい呼を断るか、特別に優先度の高い呼のために先客を切る。蓄積交換のメッセージでは、緊急の便りが処理順を上げ、印刷中の文書さえ止められる。パケット網が飽和すれば、網に入る順番を選ぶことが課題になる。Cerfが並べた三つの光景は、何を奪い合っているかを先に確かめるためのものだった。

AUTODIN IIの端末には別の席取りがある。端末への入口を受け持つTHPというプロセスは、利用中の接続があっても、その端末のポートにTCPのLISTENを残せる。新しい要求を受け、その優先度を既存の接続と比べる。席が足りなければ最も低い接続を閉じるか中断し、利用者を新しい接続に切り替え、次の要求に備えてまたLISTENを出す。呼び鈴を鳴らす場所を残しておくわけだ。

TCPが必要とする追加の役目は、入ってきた接続の優先度を、それを使うプロセスに見せることだった。Cerfは、TCP自体が到着した要求のために端末担当のプロセスを作るわけではない、と説明する。電源が切れた端末のために担当者を増やしても仕方がない。THPなら、端末の利用者、開いている接続、複数の会話を許す安全上の条件が分かる。誰を中断できるかは、その情報を持つところで決める。

FTPの場面では、Xのサービスが通常の転送を続けながら、さらに一つLISTENを残す。Zの高優先度のSYNが届けば、FTPは空き具合を見て低位の利用者を退け、途中の仕事を片づけられる。忙しい間にLISTENを残さないプロセスは、この方式では先客を退ける要求を受け取れない。肩書きの立派な訪問者でも、閉まった窓口からは入れない。

しかもZ自身が満杯かもしれない。FTPやTCPの資源が尽きていれば、高優先度の人は要求を発信するプロセスすら立ち上げられない。Cerfは発信元のOSが地元の資源を空ける場合を論じ、低位の利用者をログアウトさせる例まで挙げる。優先度を人に結び付けるか端末に結び付けるか、TCP実装に処理させるかOSに任せるかも一律ではない。受信側の特等席と、発信側の出発口は別の問題だった。

この二ページが残すのは、偉い通信を通せという命令以上のものだ。要求を受ける窓口、順位を比較する担当、途中の仕事を終える手順、発信元で空ける資源。Cerfは優先度の旗を掲げたあと、その旗を実際に持つ手を探した。