ネットワーク●●○○○

OSI参照モデル

おーえすあいさんしょうもでる

通信を7つの階層に分けて整理する古典的な思考の枠組み。「L4」「L7」の語源。

概要

OSI 参照モデルは、コンピュータ間の通信という複雑な営みを、役割の異なる7つの階層(レイヤ)に分けて整理する思考の枠組みです。ケーブルに流れる電気信号から、HTTP のようなアプリケーション同士の会話まで、通信には性質のまったく違う仕事が積み重なっています。それを「各層は自分の仕事だけに責任を持ち、すぐ下の層のサービスを使い、すぐ上の層にサービスを提供する」という積み木として捉えるのがこのモデルです。

実務で「L4 ロードバランサ」「L7 で振り分ける」「それは L2 の問題」といった言い方を耳にしたことがあれば、その L(Layer)の番号こそが OSI 参照モデルの階層です。プロトコルの実装として使われることはもうありませんが、ネットワークを語る共通言語として今も現役の語彙です。

なぜ生まれたか

1970年代、コンピュータネットワークはベンダーごとの独自世界でした。IBM には IBM の、DEC には DEC の通信方式があり、異なるメーカーの機器同士は原則つながりません。ネットワークを買うことは特定ベンダーに縛られることと同義で、相互接続のたびに場当たり的な変換が必要でした。

この乱立を解消するため、国際標準化機構(ISO)が1984年に標準化したのが OSI(Open Systems Interconnection — 開放型システム間相互接続)です。狙いは2つありました。ひとつはベンダーに依存しない開かれた標準を作ること。もうひとつは、通信を階層に分割することで「各層を独立に設計・交換できる」ようにすることです。物理的な媒体をケーブルから無線に替えても上の層は変わらない、アプリケーションを替えても下の層はそのまま — この分業の考え方こそが、モデルとして残った最大の遺産です。

詳細

7つの階層と TCP/IP との対応

下から順に、L1 物理層(電気信号や電波でビットを運ぶ)、L2 データリンク層(同一ネットワーク内の隣接機器間で正しくフレームを届ける。Ethernet や MAC アドレスの世界)、L3 ネットワーク層(ネットワークをまたいで宛先まで経路を選ぶ。IPアドレスの世界)、L4 トランスポート層(アプリケーション間の通信路を提供する。TCP/IP の TCP や UDPポート番号の世界)、L5 セッション層(対話の開始・維持・終了)、L6 プレゼンテーション層(文字コードや暗号化などデータ表現の変換)、L7 アプリケーション層(HTTP や SMTPDNS などアプリの会話そのもの)です。

現実のインターネットを支える TCP/IP は、これをより粗い4階層で捉えます。両者の対応を並べると、L5〜L7 が TCP/IP では1つのアプリケーション層にまとめられていることが分かります。

OSI 参照モデルTCP/IP モデルL7 アプリケーション層L6 プレゼンテーション層L5 セッション層L4 トランスポート層L3 ネットワーク層L2 データリンク層L1 物理層アプリケーション層HTTP・SMTP・DNS などトランスポート層TCP・UDPインターネット層IPネットワークインターフェース層Ethernet・Wi-Fi など金色の枠は実務の会話で特によく登場する層。L4 と L7 の区別は今も日常語
OSI 7階層と TCP/IP 4階層の対応 — 上3層はTCP/IPでは区別しない

カプセル化 — 手紙を封筒に入れ続ける

階層モデルの動作を直観的に掴む鍵がカプセル化です。アプリケーションが送りたいデータは、下の層に渡されるたびに、その層のヘッダ(宛先や制御情報)で包まれます。HTTP のメッセージは TCP のセグメントに包まれ、それが IP のパケットに包まれ、さらに Ethernet のフレームに包まれて、最後に電気信号になります。手紙を封筒に入れ、その封筒をさらに大きな封筒に入れて宛先を書き足していくイメージです。受信側では逆に、下の層から順に封筒を1枚ずつ開けながら上の層へ渡していきます。各層は自分の封筒の宛名しか読まない — この約束が、層ごとの独立性を成り立たせています。

実装としては敗れ、語彙として生き残った

歴史の皮肉として、OSI は「モデル」だけでなく実際のプロトコル群も策定しましたが、普及競争では TCP/IP に完敗しました。委員会主導で仕様が複雑・重厚だった OSI に対し、TCP/IP は「まず動くものを作り、動いたものを標準にする」文化のもと、UNIX に無償で同梱されて爆発的に広まりました。1990年代には勝負がつき、現在のインターネットに OSI プロトコルはほぼ残っていません。

それでも7階層モデルが教科書と現場に生き残ったのは、通信の分業を語る語彙として優れていたからです。「この障害は L2 なのか L3 なのか」と切り分ければ、ケーブルや Wi-Fi の問題なのか、経路設定の問題なのかを順序立てて絞り込めます。実装は TCP/IP、語彙は OSI — という奇妙な共存が現代の姿です。

L4 と L7 — 実務で番号が意味を持つ場面

現場でとりわけ重要なのが L4 と L7 の区別です。たとえばロードバランサには、ポート番号と IP アドレスだけを見て接続単位で振り分ける L4 型と、HTTP の中身(URL のパスやヘッダ)まで読んでリクエスト単位で振り分ける L7 型があります。L4 は速くて汎用的、L7 は賢いが処理が重い — 番号ひとつでこのトレードオフが通じます。同様に、ファイアウォールが「L3/L4 で遮断する」のか「L7 で中身を検査する」のか、TLS の暗号化がどの層の上で行われるのか(ちなみに TLS は L5〜L6 相当と言われますが、綺麗に1層へ収まらない好例です)など、階層の番号は設計の会話を素早く正確にする道具として日々使われています。モデルはあくまで地図であって現実そのものではない、という距離感ごと覚えておくと、いっそう使いこなせる語彙です。