OSIモデルは、ネットワーク通信を7つの層で表す参照モデルです。簡単に言うと、ある機器から別の機器へデータを送るという大きな仕事を小さな役割に分けることで、システムの各部分が何をしているのかを理解しやすくします。
いちばん手早い捉え方はこうです。上位の層はソフトウェアに近く、下位の層は実際のデータ伝送に近いということです。だからこそ、このモデルは学習にもトラブルシューティングにも役立ちます。ケーブル不良、ルーティングの問題、ブラウザ側の問題は、同じ層の話ではありません。
OSIモデルの各層を一覧で見る
上から下へ並べると、OSIの各層は次のとおりです。
- アプリケーション層
- プレゼンテーション層
- セッション層
- トランスポート層
- ネットワーク層
- データリンク層
- 物理層
生の信号が使えるデータになる流れを考えるときは、下から上へ読むこともできます。
OSIの各層は何をするのか
第7層: アプリケーション層
この層はユーザーに最も近い層です。Web閲覧、メール、ファイル転送など、ソフトウェアが利用するネットワークサービスを扱います。
重要なのは目的です。この層が扱うのは、ソフトウェアが何をしたいのかであって、ビットがどう動くかではありません。
第6層: プレゼンテーション層
この層は、データをどのような形で表現するかに関わります。代表例としては、形式変換、暗号化、圧縮があります。
実際のシステムでは、これらの役割は明確に独立したモジュールではなく、アプリケーションやライブラリの中で処理されることがよくあります。
第5層: セッション層
セッション層は、システム間の通信セッションを開始し、管理し、終了することに関わります。
現代の多くのシステムでは、これが独立した箱として見えるわけではありません。それでも、2者間のやり取りがどう継続されるかを考えるときには役立つ考え方です。
第4層: トランスポート層
この層は、ホスト間のエンドツーエンド配送を扱います。分割、信頼性、順序制御、フロー制御、ポート番号といった考え方がよく登場するのはこの層です。
TCPはトランスポート層の代表例です。オーバーヘッドの小ささが確実な配送より重要な場合には、UDPもここに含まれます。
第3層: ネットワーク層
ネットワーク層は、異なるネットワーク間でデータを移動させる役割を持ちます。ルーティングと論理アドレス指定はこの層の仕事です。
パケットが別のネットワークへ届くまでに複数のルーターを通る必要があるなら、まず確認するのは通常この層です。
第2層: データリンク層
この層は、1本のローカルリンク上での配送を扱います。そのローカルなネットワーク区間におけるフレーミングやリンクレベルのアドレス指定が対象です。
わかりやすい対比はこれです。第3層はネットワーク間でデータを運び、第2層は1つのローカルリンク上でデータを運びます。
第1層: 物理層
物理層は、生のビットを電気信号、光信号、無線信号として実際に伝送する層です。
ケーブル、コネクタ、電圧、タイミング、光ファイバー、無線信号はここに含まれます。
OSIモデルのわかりやすい具体例
ブラウザにWebサイトのアドレスを入力してEnterキーを押す場面を考えてみましょう。ここでOSIモデルが何に気づかせてくれるかを見てみます。
第7層では、ブラウザがWebページを要求します。第6層と第5層では、システムの作りによっては、データが符号化されたり、暗号化されたり、継続中のやり取りの一部として管理されたりします。
第4層では、データはエンドツーエンド配送のために処理されます。第3層では、ネットワークをまたいでどうルーティングするかが決まります。第2層では、各機器がローカルリンク上にフレームを送ります。第1層では、そのフレームが電気信号、光信号、無線信号になります。
受信側では、この流れは逆になります。信号は下の層から入り、ブラウザがページを表示できるようになるまで上の層へ戻っていきます。
これは、現実のすべてのネットワークスタックが7つのきれいに分かれたソフトウェアブロックを持つという意味ではありません。このモデルが、全体の仕事を整理して考えるための明快な地図を与えてくれるという意味です。
OSIモデルが今でも役立つ理由
OSIモデルが今でも教えられているのは、ネットワークの振る舞いを明確に説明できるからです。学生やエンジニアが、本来は別の種類の問題を混同せずに切り分ける助けになります。
また、トラブルシューティングでも実用的です。ホストのリンクランプが点灯していなければ、まず物理層付近から確認します。同じスイッチにつながる機器同士が通信できないなら、データリンク層の問題を調べます。IP接続はできているのにサービスが失敗するなら、より上位の層を見ていきます。
7層のOSIモデルでよくある間違い
OSIモデルとTCP/IPモデルを同じものだと思う
両者は関係していますが、同じものではありません。OSIモデルは7層で、主に参照モデルです。TCP/IPは実用的なプロトコル群であり、より少ない層で説明されることが多いです。
どのシステムでも7層すべてが独立したソフトウェアモジュールだと考える
実際の多くのシステムはそうなっていません。いくつかの層は統合され、見えにくくなっていたり、ライブラリ、OS、ファームウェア、ハードウェアにまたがって実装されていたりします。
ネットワーク層とデータリンク層の役割を混同する
これは初心者に非常に多い間違いの1つです。ネットワーク層はネットワーク間でデータを運ぶことに関わります。データリンク層は1つのローカルリンク上でデータを運ぶことに関わります。
各層がどんな問題を解決するのかを考えず、名前だけを暗記する
一覧だけを暗記すると、このモデルは恣意的に感じられます。各層を具体的な役割と結びつけると、ずっと理解しやすくなります。
OSIモデルはどんなときに使われるか
OSIモデルは主に、教育、ドキュメント作成、アーキテクチャの議論、トラブルシューティングで使われます。特に、異なるチームが障害や責任の所在を共通の言葉で話したいときに役立ちます。
一方で、現代のスタックの実装詳細をすべて厳密に表す地図として扱うなら、あまり向いていません。その場合は、TCP/IPモデルや製品固有のアーキテクチャ図のほうが適していることがあります。
OSIモデルを簡単に覚える方法
モデルの上側は「意味」、下側は「伝送」だと考えてみてください。
上側では、ソフトウェアは内容、セッション、配送の振る舞いを気にします。下側では、ハードウェアはフレーム、タイミング、物理信号を気にします。その間の層が、この2つの世界をつないでいます。
似たネットワークの例で試してみる
チャットメッセージを送る、動画をストリーミング再生するなど、日常的な1つの作業を選び、それを7つの層に沿って平易な言葉でたどってみてください。たいてい、それがこのモデルをいちばん早く身につける方法です。