OSIモデル徹底解説:ケーブルからアプリケーションまでの7つの層
Webサイトを開いたり、メッセージを送ったり、動画を視聴したりするたびに、データは画面に届くまでいくつかの段階を経ています。イーサネットケーブルの電気信号やWi-Fiの電波から、使っているプログラムまで届くのです。この流れを理解すると、ネットワークの仕組みが全体として見え、インターネットの問題を順序立てて切り分けられるようになります。この流れを説明するためによく使われるのが、ネットワーク通信を7つの層に分けるOSIモデルです。この記事では、モデルの成り立ち、各層の役割、データが層を移動する仕組み、TCP/IPとの比較、実際の問題解決への応用を説明します。
OSIモデルとは
OSIはOpen Systems Interconnectionの略で、コンピュータ同士の通信をどのように層に分けるべきかを示す参照モデルです。各層は固有の役割を持ち、上下の層とは定められたインターフェースを通じてやり取りします。このため、メーカーは他の層の内部を知らなくても、自分の担当する層の機器やソフトウェアを開発できます。
重要なのは、OSIはモデルであって、インターネットで直接使われるプロトコル群ではないという点です。実際にインターネットを動かしているTCPやIPは、別のモデルに属しています。とはいえ、OSIの層構造という考え方は、世界中のネットワークエンジニアが問題を説明し診断するための共通言語として今も使われています。
モデルの成り立ち
1970年代後半、コンピュータネットワークはまだ孤立した島のような状態でした。メーカーごとに独自のプロトコルを使っていたため、IBMの機器はDECの機器と通信できず、ある製品は同じメーカーの製品にしか接続できませんでした。国際標準化機構(ISO)は、異なるメーカーのネットワークを相互接続できるように、1977年に共通モデルの策定を始めました。
その成果が1984年に発行された規格ISO 7498で、OSI参照モデルとして知られています。このモデルは概念としては広く評価されましたが、それに対応して作られたプロトコル、たとえば電子メールのX.400やディレクトリのX.500は、期待されたほどには普及しませんでした。一方、米国のDARPAが開発したTCP/IPはARPANETに導入され、その後インターネットの基盤となり、はるかに広く普及しました。
7つの層の概要
層は下から上へ番号が付けられています。第1層は物理的な媒体に最も近く、第7層はユーザーに最も近いところにあります。
1. 物理層(Physical Layer)
2. データリンク層(Data Link Layer)
3. ネットワーク層(Network Layer)
4. トランスポート層(Transport Layer)
5. セッション層(Session Layer)
6. プレゼンテーション層(Presentation Layer)
7. アプリケーション層(Application Layer)
順序を覚えるための英語の語呂合わせとして、「Please Do Not Throw Sausage Pizza Away」が広く使われています。第1層から第7層までの順です。これを覚えておけば、ある機器やプロトコルがどの層に属するかを判断できます。
第1層:物理層
この層は、銅線の電圧、光ファイバーの光、Wi-Fiの電波など、物理的な媒体上で生のビットを送ることを扱います。1と0を電圧レベル、周波数、光の強さのどれで表すか、コネクタの形状、信号の速度、電圧の上限などを定めます。
この層の機器には、Cat 6などのイーサネットケーブル、光ファイバーケーブル、信号を中継するハブ、トランシーバーなどがあります。よくある問題は、ケーブルの緩みや断線、コネクタの不良、規格を超える長さの配線、電磁波による干渉です。
第2層:データリンク層
データリンク層は、同じローカルネットワーク内、または直接接続された機器の間での配送を扱います。ビットをフレームにまとめ、各フレームには宛先アドレス、送信元アドレス、データ、CRCなどの誤り検出用の値が含まれます。この層で使われるアドレスはMACアドレスで、ネットワークカードにメーカーが割り当てる48ビットの識別子です。通常は16進数で表記され、たとえば 00-1A-2B-3C-4D-5E のようになります。
この層はまた、機器が媒体を共有する方法も制御します。イーサネットはケーブル上の同時送信を避けるルールを使い、Wi-Fiは電波の衝突を減らすためにCSMA/CAを使います。この層の主な機器はスイッチで、どのMACアドレスがどのポートにあるかを学習し、フレームを正しいポートにだけ転送します。802.1Qで定義されたVLANは、1台のスイッチを複数の仮想ネットワークに分けます。
第3層:ネットワーク層
ネットワーク層は、パケットを多数のネットワークを越えて届けます。宛先の識別にはIPアドレスを使います。IPv4アドレスは32ビットで、たとえば 192.168.1.10 のように表記されます。IPv6アドレスは128ビットで、はるかに大きなアドレス空間を提供します。この層の主な役割はルーティング、つまりパケットに最適な経路を選ぶことで、ルーターがルーティングテーブルを参照して行います。
この層にはさらに、診断用のメッセージを運ぶICMPもあります。pingやtracerouteのコマンドはICMPを使い、宛先が応答するか、経路がいくつのホップを経由するかを確認します。この層のよくある問題は、サブネットマスクやデフォルトゲートウェイの誤った設定、そして存在しない経路です。
第4層:トランスポート層
トランスポート層は、ある機器のプログラムから別の機器のプログラムへデータを届けます。ポート番号を使ってサービスを識別し、たとえばHTTPはポート80、HTTPSはポート443、DNSはポート53を使います。
この層の主なプロトコルはTCPとUDPの2つです。TCPは信頼性があり、送信前にハンドシェイクを行い、確認応答で受信を確かめ、失われたデータを再送し、受信側が処理しきれないように流量を制御します。UDPはより単純で高速ですが、配送を保証しないため、ライブ配信、オンラインゲーム、DNSに向いています。この層のデータ単位は、TCPではセグメント、UDPではデータグラムと呼ばれます。
第5層:セッション層
セッション層は、2つのプログラム間の会話、すなわちセッションを開始、管理、終了します。その機能には、障害後に転送を再開できるようチェックポイントを作ること、どちらの側がいつ話すかを調整すること、利用中に接続を維持することが含まれます。
実際の例としては、ある機器のプログラムが別の機器の関数を呼び出せるようにするNetBIOSやRPCがあります。実際には、セッションの機能は独立した層としてではなく、アプリケーションやライブラリに組み込まれていることが多く、そのため試験問題ではこの層を明確に答えにくいことがあります。
第6層:プレゼンテーション層
プレゼンテーション層は、データを双方が理解できる形式に変換します。文字コード、圧縮、暗号化を扱います。たとえば、UTF-8で符号化された文字の解釈、JPEGやPNGなどの画像形式の扱い、gzipによるファイルの圧縮、そしてTLSによるデータの暗号化が含まれます。TLSはHTTPSのWebサイトを盗聴から守ります。
実際には、TLSは教科書によってセッション層またはプレゼンテーション層に分類されており、TCP/IPモデルではTCPとHTTPの間に位置します。他の人にモデルを説明する際には、この点を覚えておくとよいでしょう。
第7層:アプリケーション層
アプリケーション層は、ユーザーが最も直接触れる層です。Webブラウザ、メールクライアント、チャットアプリなどのプログラムは、この層のプロトコルを使って他の機器と通信します。たとえば、WebにはHTTPとHTTPS、電子メールにはSMTP、IMAP、POP3、ファイル転送にはFTP、ドメイン名をIPアドレスに変換するにはDNS、IPアドレスを自動で割り当てるにはDHCPがあります。
アプリケーション層とは、アプリそのものではなく、アプリが使うプロトコルを指すことに注意してください。たとえば、ChromeとFirefoxはどちらも同じHTTPプロトコルを使います。
データが層を移動する仕組み
プログラムがデータを送るとき、データは第7層から第1層へ下りていきます。各層は自分のヘッダーを追加します。この過程をカプセル化(Encapsulation)と呼びます。トランスポート層はポート番号を、ネットワーク層はIPアドレスを、データリンク層はMACアドレスとCRCを追加します。物理層がそれらすべてを電気信号、光信号、または電波に変換します。
受信側はこの逆を行います。これを非カプセル化(Decapsulation)と呼びます。各層は自分のヘッダーを読んで確認し、残りを上の層へ渡します。データが第7層に届くと、受信側のプログラムは元のメッセージを受け取ります。
データの単位も層ごとに異なる名前で呼ばれます。第1層はビット、第2層はフレーム、第3層はパケット、第4層はセグメントまたはデータグラムで扱い、第5層から第7層はまとめてデータと呼ばれることが多いです。
例:1つのWebページを開く
example.comのページを開く場合、OSIモデルを次のように通ります。
1. アプリケーション層:ブラウザはページのHTMLが必要なので、HTTP GETリクエストを作成します。まずexample.comのIPアドレスが必要なので、DNSに問い合わせます。
2. プレゼンテーション層:HTTPSの場合、リクエストは送信前にTLSで暗号化されます。
3. セッション層:接続が開かれ、やり取りの間は維持されます。
4. トランスポート層:TCPがデータをセグメントに分割し、宛先ポート443を付けて、サーバーとハンドシェイクを行います。
5. ネットワーク層:パケットに送信元と宛先のIPアドレスが付きます。家庭用ルーターがインターネットへの経路を選びます。
6. データリンク層:フレームに、ローカルネットワーク上の次の機器、つまりルーターのMACアドレスが付きます。
7. 物理層:フレームが信号としてケーブルを通じて、またはWi-Fiでルーターへ送られます。
サーバーが応答すると、データは逆方向に戻り、各層が順番にヘッダーを外していきます。
OSIとTCP/IPの比較
TCP/IPモデルは4つの層、すなわちネットワークインターフェース層、インターネット層、トランスポート層、アプリケーション層で構成されます。このモデルでは、ネットワークインターフェース層がOSIの物理層とデータリンク層をまとめています。インターネット層はネットワーク層に、トランスポート層はOSIのトランスポート層に対応します。アプリケーション層は、OSIのセッション層、プレゼンテーション層、アプリケーション層をまとめています。
この比較から、2つのモデルは同じものを異なる詳しさで説明していることが分かります。OSIはより詳細で、教育や概念の説明に向いています。TCP/IPは実際のインターネットの動作に即しています。
OSIを実際の問題解決に使う
層で考えると、下から、または上から順に障害を切り分けられます。典型的な確認は次のとおりです。
- **第1層:** ケーブルがしっかり接続されているか、リンクランプが点灯しているかを確認します。消えていれば、ケーブルかポートに問題があるかもしれません。
- **第2層:** MACアドレスとARPを確認し、同じネットワーク内で機器がお互いを認識しているかを確かめます。VLANの設定も確認します。
- **第3層:** pingでIPアドレスへの到達性を確認し、tracerouteで経路を見ます。IPアドレス、サブネットマスク、デフォルトゲートウェイが正しいかを確認します。
- **第4層:** telnetやncでポートが開いているかを確認します。ファイアウォールがそのポートを遮断しているかもしれません。
- **第5層と第6層:** TLSのハンドシェイクと、証明書の期限切れを確認します。
- **第7層:** nslookupやdigでDNSを確認し、404や500などのHTTPステータスコードを見て、問題がサーバー側にあるかを判断します。
この方法なら当てずっぽうに頼らずに済みます。下の層が正しく動いていれば、問題は通常より上の層にあり、その逆もまた然りです。
層ごとのネットワーク機器
どの機器がどの層で動作するかを知ると、モデルを覚えやすくなります。
- **第1層:** ハブ、イーサネットケーブル、リピーター
- **第2層:** スイッチ、ブリッジ、ネットワークインターフェースカード
- **第3層:** ルーターとレイヤー3スイッチ
- **第4層:** TCPとUDPを扱う一部のファイアウォールやロードバランサー
- **第7層:** HTTPの内容を検査するプロキシサーバー、アプリケーションファイアウォール、WAF
複数の層で同時に動作する機器もあります。たとえばレイヤー3スイッチは、スイッチとルーターの機能を1台にまとめています。
実務でOSIが役立つ理由
OSIは直接使われるプロトコルではありませんが、いくつかの点で価値があります。エンジニア同士が共通の言葉を持てること、機器とソフトウェアの役割を分けて考えられること、段階的なトラブルシューティングを支えること、ネットワークを学ぶための基礎になることです。CompTIA Network+やCisco CCNAなどの資格でも、説明には今も7層モデルが使われています。
各層のセキュリティ
OSIモデルは、ネットワーク攻撃がどの層で起こりうるか、どう防ぐかを示すのにも役立ちます。ある一つの層だけを守っても迂回される可能性があるため、良いセキュリティはすべての層を対象にする必要があります。
- **物理層:** サーバールームや配線キャビネットへの入室は、権限のある人だけに限定します。盗聴されやすい配線や使っていないポートは、無効化するか取り外します。
- **データリンク層:** ARPスプーフィングでは、ローカルネットワーク上の機器が別の機器になりすまします。スイッチのポートセキュリティや、ダイナミックARPインスペクションでリスクを減らせます。
- **ネットワーク層:** IPの偽装やICMPを使った大量送信でシステムを飽和させる攻撃があります。パケットを絞り込むACLや、送信元の正当性の確認が防御に役立ちます。
- **トランスポート層:** SYNフラッドはTCPのハンドシェイクを悪用し、ポートスキャンは稼働しているサービスを探します。ステートフルファイアウォールと接続数の制限が有効です。
- **セッション層:** 認証済みのセッションを乗っ取られる恐れがあります。たとえばCookieを盗まれる場合です。長期間有効なトークンや、不要なセッション延長はリスクとして管理すべきです。
- **プレゼンテーション層:** 新しいバージョンのTLSを使い、弱い暗号スイートを無効にし、証明書が有効で期限切れでないことを確認します。
- **アプリケーション層:** 最も多くの脆弱性がここにあります。SQLインジェクション、クロスサイトスクリプティング、フィッシングなどです。WAFで入力を検査し、ソフトウェアは常に最新に保ちます。
基本原則は多層防御(Defense in Depth)です。複数の対策を重ね、攻撃者が機密データに届くまでに多くの障壁を越えなければならないようにします。
Wiresharkで実際のパケットを見る
OSIモデルが実際に動いている様子を最も明確に見る方法は、Wiresharkのような解析ツールで実際のパケットを確認することです。パケットはフレーム(第1〜2層)、Ethernet II(第2層)、IPv4(第3層)、TCPまたはUDP(第4層)、HTTP(第7層)という層に分けて表示されます。ある層を選択すると、対応するバイト列が強調表示されます。
簡単な練習として、自分のパソコンでキャプチャを開始し、HTTPSを使わない平文のHTTPテストサイトを開き、キャプチャを停止して HTTP GET のパケットを探します。アプリケーション層のリクエスト、トランスポート層のポート番号、ネットワーク層のIPアドレス、データリンク層のMACアドレスが、この記事で説明したとおりに見えるはずです。実際のデータを見ることで、モデルは図から具体的なものへと変わります。
キャプチャは、自宅のネットワークや自分で管理する検証環境など、利用が許可されたネットワークでのみ行ってください。許可なく他人の通信を傍受することは、多くの国で違法です。
OSIモデルから学べること
- 複雑なシステムを層に分けると、理解と修理が容易になります。
- 完璧な標準よりも、多くの関係者が受け入れる標準のほうが重要な場合があります。不完全でも実用的だったTCP/IPが市場で勝ちました。
- 本当の理解は、概念をping、traceroute、ログの確認といった実践的な検査と結びつけることで得られます。
まとめ
OSIモデルは暗記すべき表以上のものです。ケーブルの電気信号やIPアドレスから、データの信頼できる配送、そしてユーザーが見るアプリケーションまで、ネットワーク通信を考えるための方法です。データがどの層を通過しているか、そして各層が何をしているかを理解すれば、ネットワークの問題を体系的に診断でき、機器のマニュアルもずっと理解しやすくなります。