ISO 基本参照モデル(別名 OSI 参照モデル)は、ネットワーク通信を 7 つの階層に分けて整理した 1984 年策定の国際標準 (ISO/IEC 7498)。実プロトコルとしては TCP/IP に敗れたが、「どの層の問題か」を切り分ける共通言語として今も現役。本稿では歴史、7 層の役割、カプセル化、TCP/IP との対応、そして現代での使い道までを通しで整理する。
難しく見えても、本質は次の 3 つだけ持ち帰ればいい。(1) OSI は「ネットワーク通信」を 7 つの段階 (層) に分けて整理した 地図のようなもの。(2) 各層は独立していて、上の層は下の層の事情を気にしなくてよい — だから「HTTP を書く人は LAN ケーブルのことを知らなくていい」が成立する。(3) 実用上の使い道は 「ネットが繋がらない」ときに「どの層で詰まっているか」を切り分ける共通言語。— ここを土台に各章を順に開いていけば迷子になりにくい。
OSI 参照モデルの歴史 #
1970 年代、IBM の SNA (1974)、DEC の DECnet、Burroughs / Honeywell / Univac はそれぞれ独自プロトコルを持ち、異なるベンダーのコンピュータ同士は事実上通信できなかった。マルチベンダー環境を組むには、あらゆる組合せで翻訳ゲートウェイが要る状況。
並行して米国 ARPANET では 1974 年に Vint Cerf / Bob Kahn が TCP 原型を発表 (RFC 675)、TCP/IP の二層分離が進んでいた。
X.200 として勧告。「通信のあるべき姿」を緻密に規定した理論モデルが完成。X.400 メールスタックの仕様書は ASN.1 BER 含めて文字通り「数千ページ」。「動くもの」より「美しい仕様」を先に作るウォーターフォール型の OSI と、動くものを作って徐々に標準化するアジャイル型の TCP/IP。ソフトウェア開発史と完全に重なる教訓となった。
7 層モデルの全体像 #
OSI 参照モデルは通信を担う機能を 7 層に分ける。上位ほどアプリに近く、下位ほどハードウェアに近い。各層はすぐ下の層が提供するサービスを利用し、すぐ上の層にサービスを提供する。
| L | 層名 | 役割 | PDU | 代表プロトコル |
|---|---|---|---|---|
| L7 | Application | ユーザが直接触れる | Data / Message | HTTP, SMTP, DNS, SSH, FTP, IMAP |
| L6 | Presentation | 文字符号化・暗号化・圧縮 | Data | TLS, ASCII, Unicode, JPEG, MIME |
| L5 | Session | 接続の確立・維持・切断 | Data | NetBIOS, RPC, SOCKS, SIP |
| L4 | Transport | エンドツーエンド配送 | Segment / Datagram | TCP, UDP, QUIC, SCTP |
| L3 | Network | アドレッシング・ルーティング | Packet | IPv4, IPv6, ICMP, OSPF, BGP |
| L2 | Data Link | 隣接ノード間配送 | Frame | Ethernet, Wi-Fi, PPP, ARP |
| L1 | Physical | 電気・光・電波信号 | Bit / Symbol | 銅線, 光ファイバ, 無線, RJ-45 |
7 層は順番に意味があるので、最初は 下から積み上げる順番で覚える。Physical / Data Link / Network / Transport / Session / Presentation / Application の頭文字を取って、英語圏では "Please Do Not Throw Sausage Pizza Away" (どうかソーセージピザを捨てないで) と語呂合わせで唱える。日本では 「物 (ぶつ) データ 寝 (ね) 送る、製品 (せいひん) アプ」のように下から / 上から好みの順で唱えて覚える。一度覚えると、トラブル切り分け (§07) でもセキュリティ設計 (§08) でも、この順番が頭にあるかどうかで世界の見え方が全く変わる。
外国の取引先に書類を送る場面を想像する。L7 (アプリ) 担当者が書類を作成 → L6 (プレゼンテーション) 翻訳部が現地語に訳して暗号化 → L5 (セッション) 秘書が「これからやり取りを始めます」と先方と段取り → L4 (トランスポート) 仕分け担当が「相手企業の○○部宛」と部署 (= ポート番号) を書き → L3 (ネットワーク) 配送計画担当が「○○国・○○市」と住所 (= IP) を書き → L2 (データリンク) 配達員が「次の集配局」へ手渡しし → L1 (物理) がトラック・船・飛行機そのもの。受け取った側は逆順で剥がしていく — これがそのまま OSI のカプセル化 (§05)。
下位 4 層 (L1〜L4) の詳細 #
下位 4 層は、家から外国に荷物を届けるまでの「物流」と完全に同じ構造。L1 = 道路 / 線路 / 航空便そのもの (走る土台)、L2 = 同じ街での宅配 (隣の建物まで MAC アドレスで運ぶ)、L3 = 都市・国をまたぐ配送 (IP アドレスで世界中の住所へ)、L4 = 家の何号室宛か (ポート番号 = 部屋番号 / 担当部署)。下位ほど物理に近く、上位ほどアプリに近いとはこのこと。下を 1 つずつ詰まりなく動かしてあげるから、上のアプリが動く。読んでいて分からなくなったらこの 4 つのイメージに戻ればいい。
L1 — 物理層 (Physical Layer) #
ビット (0/1) を物理的な信号 (電圧・光・電波) として送受信。「ケーブルとコネクタとビットの世界」。
- 電気・光・電波のエンコード (NRZ, Manchester, 4B/5B, PAM)
- コネクタ形状とピン配列 (RJ-45, SFP, USB-C)
- 電圧 / 周波数 / 変調方式 / 同期 (クロック)
代表規格: Ethernet PHY (10BASE-T〜10GBASE-SR) / 光ファイバ (シングル / マルチモード) / 無線 (802.11 PHY, Bluetooth) / RS-232 / DSL / DOCSIS。
障害例: ケーブル断線、コネクタ嵌合不良、SFP 故障、電源ノイズ。「ping が通らないが LED も光らない」はここを疑う。
L2 — データリンク層 (Data Link Layer) #
隣接した 2 ノード間でフレームを正しく届ける層。同じ LAN セグメント内、または同じ点対点リンクの両端でのやり取り。
- フレーム化 (preamble でビット列を意味のある単位に区切る)
- MAC アドレス (6 byte = 48 bit、世界一意)
- 誤り検出 (FCS / CRC)
- メディアアクセス制御 (CSMA/CD, CSMA/CA, トークンパッシング)
- VLAN タグ付け (802.1Q)
L2 は内部的に LLC (802.2, 上位層接続) と MAC (媒体アクセス) のサブレイヤに分かれる。代表プロトコルは Ethernet (802.3) / Wi-Fi (802.11) / PPP / ARP (L2.5) / STP / LACP。
スイッチは L2 機器の代表。MAC アドレステーブルでフレームを適切なポートへ転送する。
L3 — ネットワーク層 (Network Layer) #
異なるネットワークをまたいで宛先までパケットを運ぶ層。「世界規模のルーティング」の世界。
- 論理アドレッシング (IP アドレス)
- 経路選択 (ルーティングテーブル + プロトコル)
- フラグメント化 (MTU 超過時)
- エラー通知 (ICMP)
代表プロトコル: IPv4 / IPv6 / ICMP / IPsec / OSPF / IS-IS / BGP (AS 間ルーティング、インターネットの背骨)。ルータが L3 機器の代表。
L4 — トランスポート層 (Transport Layer) #
エンドホスト同士の論理接続を担う層。L3 までで「IP アドレスで端末まで」、L4 で「どのアプリ (port) に届けるか」を識別。
- ポート番号 (16 bit, 0〜65535)
- コネクション管理 (TCP の 3-way ハンドシェイク)
- 再送 / 順序 / フロー制御 (TCP)
- 輻輳制御 (cwnd, BBR, CUBIC)
代表プロトコル: TCP (信頼配送 / HTTP, SSH, SMTP) / UDP (ベストエフォート / DNS, VoIP) / QUIC (HTTP/3 の土台、TLS 1.3 内蔵) / SCTP / DCCP。
従来型ファイアウォールは L3+L4 (IP / port のフィルタ)。L7 ファイアウォール (WAF) は HTTP の URL・メソッド・ヘッダまで見る。「Next-Gen FW」と呼ばれる製品は L3〜L7 を横断的に解析する。
上位 3 層 (L5〜L7) の詳細 #
上位 3 層は、もう人間が触る世界に近い。L5 = 会話の段取り (「これから話を始めます」/「もう一度仕切り直し」/「終わります」)、L6 = 通訳 + 暗号化 + 圧縮 (英語を日本語に / 鍵をかける / かさばらない形に詰める)、L7 = 実際の中身 (メール / Web / DNS — 普段ユーザが触っているものほぼ全部)。「ブラウザを開いた瞬間にやっているのは L7」と思っておくと、上位の話が一気にイメージしやすくなる。L7 から逆順に下りていくと、ネットワーク全体の流れも追いやすい。
L5 — セッション層 (Session Layer) #
複数のメッセージをまたぐ「対話 (セッション)」を管理。接続の確立・維持・切断・同期点 (チェックポイント) の挿入。
OSI が想定したオリジナルなセッション層 (X.225) は長い対話の中で同期点を打ち、障害復旧後にそこから再開できる重厚な仕組みだったが、TCP/IP では L4 TCP と L7 アプリ自身がセッション管理を兼ねるため、L5 の独立した存在感は薄い。
TCP/IP 文脈で L5 と呼ばれるもの: NetBIOS Session Service / RPC / SOCKS プロキシ / SIP (VoIP シグナリング) / PPTP / L2TP (VPN トンネル)。
L6 — プレゼンテーション層 (Presentation Layer) #
データの「表現形式」変換を担う層。文字コード、エンコード、圧縮、暗号化がここ。
- 文字コード変換 (ASCII ↔ EBCDIC ↔ UTF-8)
- データ符号化 (ASN.1 / BER / DER, JSON, XML)
- 暗号化 (TLS / SSL)
- 圧縮 (gzip, deflate)
- メディア変換 (JPEG, MP3, MPEG)
OSI 文脈で TLS は L6 に分類されるが、TCP/IP 実装では「TCP の上、HTTP の下」の薄い層として L4〜L7 のどこかに居る、と語られる。
L7 — アプリケーション層 (Application Layer) #
ユーザのアプリと最も近い層。アプリの目的に合わせた具体的なプロトコルが並ぶ。OSI の理念「上層は下層の詳細を知らなくてよい」が最も美しく実現される層。
代表プロトコル: HTTP / HTTPS / HTTP/2 / HTTP/3 / SMTP / IMAP / POP3 / DNS / SSH / FTP / SFTP / NTP / SNMP / MQTT。
カプセル化と非カプセル化 #
データが上位層から下位層に渡るたび、その層のヘッダが付与される。最終的に物理層からビット列として送出され、受信側は逆順で剥がす。
送信側はデータを 「アプリ → TCP → IP → Ethernet」と外側にどんどん封筒を被せていき、受信側は逆順に開けていく。手紙を封筒に入れ、それを宅配便のダンボールに入れ、それをコンテナに入れ、それを船に乗せる — のとそっくり。各層は「自分の封筒」しか気にしないから、中の封筒に何が書いてあるかは知らなくてよい。これが「層が独立している」の具体的な意味で、OSI モデルの一番大事な発明ポイント。
# L7 Application: HTTP リクエスト
[ HTTP Data ]
↓
# L4 TCP: src/dst port を付与
[ TCP hdr | HTTP Data ] ← Segment
↓
# L3 IP: src/dst IP を付与
[ IP hdr | TCP hdr | HTTP Data ] ← Packet
↓
# L2 Ethernet: src/dst MAC + FCS を付与
[ Eth hdr | IP hdr | TCP hdr | HTTP Data | FCS ] ← Frame
↓
# L1 Physical: ビット列として線へ送出
10101100 11001010 01110001 ...実際のヘッダサイズ感:
- Ethernet: 14 byte (header) + 4 byte (FCS) = 18 byte
- IP: 20 byte (IPv4) / 40 byte (IPv6)
- TCP: 20 byte (option なし) / 最大 60 byte
- TLS: ハンドシェイク後は 5 byte の record header + AEAD タグ
合計で数十 byte のヘッダが必ずペイロードに付くため、MTU 1500 byte の Ethernet で送れるアプリペイロード (MSS) は ~1460 byte (TCP の場合)。VPN・PPPoE 経由ではさらに縮む。MTU ミスマッチによる「大きいファイルだけ詰まる」現象の原因はここ。
TCP/IP モデルとの対応 #
実用される TCP/IP モデルは 4 層 または 5 層 で語られるのが一般的で、OSI 7 層との対応は以下:
| OSI 層 | TCP/IP 4 層 | TCP/IP 5 層 (DoD) | 代表プロトコル |
|---|---|---|---|
| L7 Application | Application | Application | HTTP, SSH, DNS, SMTP |
| L6 Presentation | (Application 内) | Application | TLS, MIME, JSON |
| L5 Session | (Application 内) | Application | NetBIOS, SOCKS, SIP |
| L4 Transport | Transport | Transport | TCP, UDP, QUIC |
| L3 Network | Internet | Network | IPv4, IPv6, ICMP |
| L2 Data Link | Link | Data Link | Ethernet, Wi-Fi, PPP |
| L1 Physical | (Link 内) | Physical | 銅線, 光ファイバ, 電波 |
OSI L5/L6/L7 を TCP/IP では Application 層に統合、OSI L1/L2 を TCP/IP 4 層では Link 層にまとめるのが実装上の流儀。
障害切り分けの共通言語 #
「Web サイトが見えない」というインシデントを下から順に切り分ける (bottom-up troubleshooting) のは、ネットワーク運用の基礎。
「ネットが繋がらない」と言われたら、必ず L1 から順に上っていく。(1) LAN ケーブルは刺さっているか / Wi-Fi のリンクは確立しているか (L1)。(2) ルータの MAC アドレスが取れているか (L2)。(3) ping で IP まで届くか (L3)。(4) 該当ポートが開いているか (L4)。(5) ようやく HTTP / TLS の問題か確認 (L5-7)。「いきなりブラウザを再起動しても直らない」のは、原因が下層にあるとき。逆に下から行くと、ほとんどのケースで途中の階で答えが見える。
# L1 — リンク確認 (ケーブル / NIC / SFP)
$ ip link show
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
# L2 — ARP は引けているか
$ ip neigh show
192.168.1.1 dev eth0 lladdr aa:bb:cc:dd:ee:ff REACHABLE
# L3 — ping (ICMP) で IP まで届くか
$ ping -c 3 8.8.8.8
$ traceroute 8.8.8.8
# L4 — 該当 port は開いているか
$ nc -vz example.com 443
Connection to example.com 443 port [tcp/https] succeeded!
# L5-L7 — TLS / HTTP のレベルで何が起きているか
$ curl -vI https://example.com
$ openssl s_client -connect example.com:443セキュリティ対策のレイヤ分け #
セキュリティ対策も「どの層で守るか」を意識するのが実務常識。
家を守るときも 1 個の鍵だけでは心もとなく、玄関の鍵 / 窓の防犯センサ / 塀 / 監視カメラ / 警備員の巡回を組み合わせる。ネットワーク防御も同じで、「WAF を入れれば安心」でも「FW を入れれば安心」でもない。各層で 1 つずつ防御を置き、どれかが破られても他で受け止めるのが Defense in Depth。下表は「どの層で・どんな攻撃 → どんな対策」の早見表として手元に置くといい。
| 層 | 攻撃例 | 対策例 |
|---|---|---|
| L1 | ケーブル盗聴、電磁波傍受 | 物理セキュリティ、シールド |
| L2 | MAC spoofing, ARP poisoning, VLAN hopping | Port Security, DAI, 802.1X |
| L3 | IP spoofing, DDoS, ルーティング詐欺 | uRPF, BCP 38, RPKI |
| L4 | SYN flood, port scan | SYN cookies, ファイアウォール |
| L5-L7 | TLS 中間者, XSS, SQL injection, CSRF | TLS, WAF, 入力検証 |
単一層の対策はバイパスされうる。Defense in Depth = 複数層で重ね合わせるのが鉄則。L7 WAF と L4 IDS と L3 RPKI を同時に走らせて、どれかが落ちても他で受ける構成にする。
ベンダー製品の分類軸 #
- L2 スイッチ (純粋な MAC スイッチ) / L3 スイッチ (ルータ機能内蔵)
- L4 ロードバランサ (TCP/UDP) / L7 ロードバランサ (HTTP 内容を見る、e.g. nginx, F5)
- L4 ファイアウォール / L7 ファイアウォール (WAF)
- L7 プロキシ (HTTP プロキシ。SOCKS は L5)
製品選定でも「何層で動かすか」が議論の出発点になる。
まとめ #
ISO 基本参照モデルは「実プロトコルとしては敗れたが、思考の枠組みとしては今なおスタンダード」という稀有な存在。実装の世界は TCP/IP が支配しているが、「どの層の問題か」「どの層で守るか」「どの層に機能を置くか」を議論するときに、すべての人が共通して使える 7 段階のスケールを提供しているのが OSI モデルの最大の価値。
- ネットワークを学ぶ最初の入り口として
- 実務での障害切り分けの言語として
- セキュリティ設計の重層化の枠組みとして
- 製品選定時の機能比較の軸として
OSI 7 層は最初に押さえ、最後まで使い続ける概念。下から積み上げて理解し、上から下まで行き来できるようになると、「なぜ HTTPS が遅い」「なぜ ping は通るのに HTTP が落ちる」のような複合的な問題も、迷わずに切り分けていける。
OSI を理解する一番速い方法は 「自分の PC で今起きていることを 7 層に分けて言葉にしてみる」こと。たとえば https://google.com を開いた瞬間、頭の中で 「(L7) ブラウザが HTTPS リクエストを書き → (L6) TLS で暗号化 → (L4) TCP で 443 番ポート宛 → (L3) IP で 142.250.x.x 宛 → (L2) ルータの MAC へ → (L1) Wi-Fi の電波で送出」と唱えてみる。これを 5 回くらい違うシナリオ (メール送信 / SSH 接続 / DNS 問い合わせ) でやると、頭の中に「7 層の引き出し」が出来上がる。あとは現実のトラブルに当てるだけで、自然と使いこなせるようになる。