コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB
OSI 7階層モデル
「それは L3 の問題です」と言われて、話が止まる
障害対応の会話では「それは L3 の話」「L7 で振り分けている」といった言い方が飛び交います。この番号を知らないと、会話に入れないだけでなく、相手がネットワークのどのあたりを見ているのかも分かりません。
番号の出どころが OSI 参照モデルです。通信の役割を 7 段階に分けて整理した表で、ISO が定めました。番号はこの段数を指しています。
7 つ全部を覚える必要はない
先に結論を書きます。実務で名前が出るのは L2、L3、L4、L7 の 4 つだけです。残りの 3 つは、いまの実装では上下の層に溶けていて、単独で話題になることはほとんどありません。次の表は暗記するためではなく、番号と役割を引き当てるために置いています。
| 番号 | 層の名前 | 何を担当するか |
|---|---|---|
| 7 | アプリケーション | アプリごとのやりとりの形 |
| 6 | プレゼンテーション | 文字コード、暗号化、圧縮 |
| 5 | セッション | 会話の開始と維持 |
| 4 | トランスポート | 端から端までの配送 |
| 3 | ネットワーク | 別の網をまたぐ経路選び |
| 2 | データリンク | 隣の機器へ渡す |
| 1 | 物理 | ビットを電気や光に乗せる |
5 と 6 が話題に上らなくなったのは、暗号化やログイン状態の管理を、アプリが自分で抱えるようになったからです。独立した段として切り出して共通化するより、アプリごとに決めたほうが都合が良かった。その判断が積み重なった結果、名前だけが残りました。
分けたおかげで、全部を知らなくても作れる
段に分ける狙いは、担当範囲を切り離すことです。
Web アプリを書く人は、自分のデータがどの光ファイバーを通るかを知りません。知らなくても動きます。逆に中継機を作る人は、運んでいるのが買い物かごなのか動画なのかを見ません。見なくても運べます。互いの中身を知らずに済むからこそ、片方だけを新しくできます。Wi-Fi の規格が新しくなっても、上で動くアプリを書き換えなくていいのはこのためです。
この切り分けは、そのまま障害の切り分けにも効きます。「宛先まで届いているのにページが出ない」なら、下の段は生きていて上の段が怪しい、と疑う範囲を半分に減らせます。
調べる順番も決まります。下から順に確かめるのが定石です。まずケーブルと電波、次に住所の設定、次に相手のアプリ。上から見ていくと、下が壊れていた場合に上で費やした調査が全部無駄になります。焦っているときほど上から手をつけたくなるので、意識して逆に進みます。
番号は「どこまで開けて中を見るか」を指している
代表例が負荷分散装置です。L4 で振り分けるものは、宛先とその番号までしか見ずに機械的に配ります。L7 で振り分けるものは、要求の中身まで開けて読み、URL のパスやホスト名を見て行き先を変えます。
中を読む分だけ賢く、その分だけ重い、という関係になります。「L4 か L7 か」という問いは、つまり「どこまで開けるか」を聞いているわけです。
番号で会話する利点は、製品名を知らなくても話が通じることです。「これはパスを見て振り分けます」と言われたら L7、「宛先と番号だけで配ります」なら L4。新しい製品が出るたびに覚え直す必要がなく、すでにある目盛りの上に置けます。番号と役割さえ結びついていれば、初めて聞く名前でも見当がつきます。
復習ミニクイズ
OSI 参照モデルで TCP が動く層はどれですか