要約

  • RFC 1316 は物理または仮想の文字ポートと、そのポートが支える一つ以上のセッションを別の管理対象として定義した。
  • ポートの administrative state は許可の方針、operational state は局所的な状態であり、ポート全体の文字数とセッションの文字数にも異なる範囲がある。
  • reset や kill への execute は定義された制御要求であって、利用者、遠隔側、内容、到達、アプリケーションの結果を証明する記録ではない。

接続口は会話そのものではない

RFC 1316 の対象には RS-232 の端末口、並列プリンタ口、そして物理コネクタを持たない遠隔コンソールの仮想ポートまで含まれる。物理ポートはハードウェアの口と一対一で対応する。仮想ポートは似た役割をするソフトウェア実体だが、コネクタを持たない。どちらも文字列を扱えるからといって、同じ相手や同じ履歴を表すわけではない。

その上に session という別の単位がある。各ポートは一つ以上のセッションを支え、セッションはポートとある partner の間で文字を運ぶ仮想接続である。例として Telnet over TCP が挙げられる。ここでポートは支持面、セッションはその文脈での関係である。両者を結びつけられることと、両者を同一視できることは違う。

ポート名はローカルな管理上の意味を持ち、port index はその agent の MIB の行を指す。active という表示があっても、どの session が寄与したか、文字の意味は何か、相手がどう解釈したか、誰かが表示を見たかまでは語らない。RFC は関係を失わずに、誇張を防ぐための座標を与えた。

許可と稼働は違う問いに答える

charPortAdminStatus は flow control と独立した desired state である。enabled なら文字と新しい session が許され、disabled なら文字は許されても新規 session は許されない。off は両方を許さず、maintenance は通常運用から切り離された、例えば試験のための状態を示す。これはポートに何をさせてよいかという局所方針である。

charPortOperStatus は実際の運用状態である。値は up、down、maintenance、absent、active。RFC は active を「user が present、たとえば logged in である up」と説明する。それでもこれは agent の運用分類に留まる。氏名を決めず、認証や権限を保証せず、入力内容を保存せず、相手側の受理や仕事の完了を立証しない。

管理意図と観測状態を並べることには意味がある。設定の望みと実際の条件は食い違いうる。disabled は過去の文字を消さず、maintenance は試験成功の報告ではなく、active は許可や成果の証明書ではない。二つの値を一つの「正常」に縮めると、どの層の問題なのかを失う。

集計された文字数は記録簿ではない

port の input counter には、framing、XON/XOFF のような flow-control 文字、BREAK、ローカルで処理された入力、すべての session へ送られた入力まで含まれる。output counter にも制御要素、ローカルで作られた出力、すべての session からの出力が入りうる。増加した数字は有用な技術観測だが、ある会話の逐語記録ではない。

session の input/output counter は、それぞれ port counter の subset として定義される。この関係により、agent の中で既知の session が全体にどれほど寄与したかを問える。ただし、遠隔側が文字を受け、意味を取り、行動したことには飛躍できない。

さらに session index は port の文脈内だけで意味を持ち、別の port では同じ数値を再利用できる。「session 2」だけを時刻や port から切り離せば、別の関係を一続きの履歴として誤読する。番号、名前空間、観測時刻は一緒に保存される必要がある。

connected は局所的な通過可能性だった

port の session number は connecting、connected、disconnecting の session を数える。charSessState で connected は、session の network side で character data が流れ得る状態を意味する。特定の文字が流れた、遠隔プログラムが正しく処理した、人が読んだ、アプリケーションが成功した、という主張ではない。

session には protocol、establishment origin、利用可能なら追加のローカル MIB 情報への connection ID がある。origin は unknown、network、local にとどまり、情報がなければ null object identifier も返される。相関の手掛かりにはなるが、欠けた endpoint identity や認証、結果を補う装置ではない。

execute はその後を記録しない

charPortReset は ready と execute を持つ。読み出しは常に ready を返し、execute を書くと、ハードウェアとソフトウェアを clean な initial state にし、既存 session を disconnect する reset が起きる。charSessKill も読み出しは ready、execute の書込みはその session の termination を起こす。

これは重要な制御面の定義だが、後で ready を読んだからといって、誰が execute を書いたか、どの session があったか、遠隔側は何を見たか、損失・再接続・復旧があったかは分からない。制御要求、行為者と権限の根拠、前後の状態、相手とアプリケーションの観測は、別の証拠として残すべきである。

境界を持つ語彙

RFC 1316 の仕事は端末、シリアル機器、仮想コンソールを管理可能にすることだった。その歴史的な教えは、意図、状態、総量、subset、connection、命令を別の場所に置くことにある。画面が速くなっても、この分離が不要になるわけではない。

「port は active」「session は connected」「reset した」と聞いたら、まずどの object が、どの範囲について言っているのかを問う。境界を守ることは運用の妨げではない。新しい証拠が来たとき、以前の判断を修正可能にする条件である。

出典と証拠の限界

本稿は RFC 1316 Definitions of Managed Objects for Character Stream Devices(1992年4月)に基づく。物理/仮想ポート、port/session、administrative/operational state、aggregate/subset counter、session stage、reset/kill control を支持する。実在のポート、特定の人、認証、権限、相手、内容、到達、表示、アプリケーション結果、実際の reset/termination は支持しない。