はじめに
私たちは日常生活や業務の中で、当たり前のようにインターネットを利用しています。Webサイトの閲覧やメールの送受信、オンライン会議など、さまざまなサービスがネットワーク通信によって成り立っています。
こうしたネットワーク通信の仕組みを理解するために役立つ考え方の一つが、「OSI参照モデル」です。
OSI参照モデルでは、ネットワーク通信に必要な機能を7つの層に分けて整理します。それぞれの層が何を担当しているのかを知ることで、普段利用しているインターネット通信の仕組みも理解しやすくなります。
この記事の対象者
この記事は、次のような方を対象としています。
- ITエンジニアとしての経験はあるものの、ネットワークには詳しくない方
- OSI参照モデルを初めて学ぶ方
細かなプロトコルの仕様ではなく、それぞれの層がどのような役割を持っているのかを中心に説明します。
OSI参照モデルとは
OSI参照モデルとは、コンピューターやスマートフォンなどの機器が通信するために必要な機能を、7つの層に分けて整理した考え方です。
| 層 | 名称 | 主な役割 | 代表例 |
|---|---|---|---|
| 7 | アプリケーション層(応用層) | アプリケーションに通信機能を提供する | HTTP、DNS、SMTP |
| 6 | プレゼンテーション層 | データの表現形式を変換する | 文字コード、暗号化、圧縮 |
| 5 | セッション層 | 通信の開始・維持・終了を管理する | セッション管理 |
| 4 | トランスポート層 | 通信相手とのデータ転送を管理する | TCP、UDP |
| 3 | ネットワーク層 | 異なるネットワーク間でデータを届ける | IP、ルーター |
| 2 | データリンク層 | 同じネットワーク内でデータを届ける | Ethernet、L2スイッチ |
| 1 | 物理層 | 電気信号や光、電波としてデータを伝える | LANケーブル、光ファイバー、リピーターハブ |
実際の通信では、それぞれの層が完全に独立して動くわけではありません。
送信側では、上位層から下位層へ向かって順番に情報が付加されます。通信相手にデータが届くと、受信側では下位層から上位層へ向かって順番に情報が処理されます。
第1層:物理層
物理層は、0と1で表現されるデータを、電気信号や光、電波などとして実際に伝える層です。
LANケーブルやコネクターの形状、電気信号の特性など、データを物理的に伝えるための方法を定めています。
具体例として、次のようなものがあります。
- LANケーブル
- 光ファイバー
- コネクター
- リピーターハブ
- 無線通信の電波
たとえば、LANケーブルが抜けている場合や断線している場合は、物理層で問題が発生していると考えられます。
物理層は、「通信するための道そのもの」を提供する層といえます。
第2層:データリンク層
データリンク層は、同じネットワーク内にある機器へデータを届ける層です。
データリンク層では、通信相手を識別するために「MACアドレス」が使われます。MACアドレスは、パソコンの有線LANポートや無線LAN機能など、ネットワークへ接続するインターフェースに割り当てられる識別情報です。
この層で扱われるデータの単位を「フレーム」と呼びます。
具体例として、次のようなものがあります。
- Ethernet
- MACアドレス
- スイッチングハブ
- L2スイッチ
- 無線LANアクセスポイント
代表的な機器は、L2スイッチです。L2スイッチはフレームに含まれる宛先MACアドレスを確認し、接続されている機器のうち、どの機器へフレームを転送すればよいのかを判断します。
物理層が通信のための道を提供するのに対し、データリンク層は「同じネットワーク内のどの機器へ届けるか」を担当します。
第3層:ネットワーク層
ネットワーク層は、異なるネットワーク間でデータを届ける層です。
この層では、通信元や通信先を識別するために「IPアドレス」が使われます。また、目的地までの経路を選択する処理を「ルーティング」と呼びます。
IPアドレスには、主に「IPv4」と「IPv6」という2種類の方式があります。
ネットワーク層では、送信元や宛先のIPアドレスなどが付加されたデータを「パケット」と呼びます。送信時には、このパケットがデータリンク層のフレームに格納されます。
具体的な機器として、次のようなものがあります。
- ルーター
- L3スイッチ
代表的な機器は、ルーターです。ルーターはパケットに含まれる宛先IPアドレスを確認し、データを次にどのネットワークへ送るべきか判断します。
たとえば、自宅のパソコンからインターネット上のWebサーバーへアクセスするとき、データは複数のルーターを経由して目的地へ運ばれます。
ネットワーク層は、「目的地までの経路を決める」役割を持っています。
第4層:トランスポート層
トランスポート層は、通信するアプリケーション間でデータを適切に転送するための層です。
代表的なプロトコルには、TCPとUDPがあります。
TCP
TCPは、データが相手へ正しく届いたかを確認しながら通信する方式です。データが途中で失われた場合は再送し、送信した順番どおりにデータを並べ直します。
そのため、データの信頼性を重視する通信で利用されます。
主な用途は次のとおりです。
- Webサイトの閲覧
- メールの送受信
- ファイル転送
UDP
UDPは、データが相手へ届いたか、送信した順番どおりに届いたかといった確認を、プロトコル自身では行わない方式です。
TCPと比べて処理が簡素であるため、リアルタイム性を重視する通信などで利用されます。
主な用途は次のとおりです。
- 音声通話
- 動画配信
- オンラインゲーム
- DNSによる名前解決
ただし、実際にTCPとUDPのどちらが使われるかは、アプリケーションや通信方式によって異なります。
トランスポート層では、「ポート番号」も使われます。ポート番号によって、受信したデータをWebサーバーやメールサーバーなど、どのアプリケーションへ渡すのかを識別します。
TCPにおいて、ポート番号などの情報が付加されたデータの単位を「セグメント」と呼びます。送信時には、このセグメントがネットワーク層のパケットに格納され、さらにパケットがデータリンク層のフレームに格納されます。
この層は、「どのアプリケーションへ、どのような方法でデータを届けるか」を担当します。
第5層:セッション層
セッション層は、通信の開始、維持、終了を管理する層です。
ここでいうセッションとは、通信する機器やアプリケーションの間で行われる、継続的なやり取りの単位です。
具体的には、次のような処理を担当します。
- 通信の開始
- 通信状態の維持
- 通信の終了
- 切断後の再接続
- データ交換のタイミング管理
セッション層は、「通信のやり取りをどのように続けるか」を管理する層です。
なお、Webサービスへログインした後、複数のページを移動してもログイン状態が維持される仕組みも、身近な「セッション」の例です。ただし、これはOSI参照モデルのセッション層だけで実現されているわけではなく、Cookieなどを使ったアプリケーション側の仕組みも関係しています。
実際のTCP/IPを利用したシステムでは、セッション層に相当する機能はアプリケーション側で実装されることが多く、専用のネットワーク機器として意識する機会はあまりありません。
第6層:プレゼンテーション層
プレゼンテーション層は、通信する機器同士がデータを正しく扱えるように、データの表現形式を整える層です。
具体的には、次のような処理を担当します。
- 文字コードの変換
- データ形式の変換
- データの圧縮と展開
- データの暗号化と復号
たとえば、送信側で文字列をUTF-8形式のデータへ変換し、受信側で元の文字列として読み取る処理が該当します。
画像であればJPEGやPNG、構造化されたデータであればJSONやXMLなども、データの表現形式に関係する具体例です。
暗号化通信に利用されるTLSも、OSI参照モデルの説明では、プレゼンテーション層に相当する技術として扱われることがあります。ただし、実際のTCP/IPの仕組みはOSI参照モデルと完全には一致しないため、厳密に一つの層だけへ分類できるとは限りません。
この層は、「通信相手が扱えるデータ形式へ整える」役割を持っています。
第7層:アプリケーション層
アプリケーション層は、ユーザーが利用するアプリケーションに、ネットワーク通信の機能を提供する層です。
私たちが普段利用しているWebブラウザやメールソフトなどは、この層と深く関係しています。
代表的なプロトコルには、次のようなものがあります。
- HTTP・HTTPS:Webサイトを閲覧する
- DNS:ドメイン名に対応するIPアドレスを調べる
- SMTP:メールを送信する
- IMAP:メールを受信・管理する
- SSH:別のコンピューターを遠隔操作する
- FTP:ファイルを転送する
具体的な機器やソフトウェアとしては、Webサーバー、DNSサーバー、メールサーバー、プロキシサーバーなどがあります。
L7ロードバランサーやWAFも、HTTPなどのアプリケーション層の情報を利用して通信を処理します。
アプリケーション層は、「アプリケーションがネットワークを利用するための窓口」といえます。
Webサイトを閲覧するときの流れ
OSI参照モデルの各層を、Webサイトへアクセスする場合に当てはめてみます。
- アプリケーション層で、ブラウザがHTTPリクエストを作成する
- プレゼンテーション層に相当する処理で、データの変換や暗号化を行う
- セッション層に相当する処理で、通信状態を管理する
- トランスポート層で、TCPなどを使ってデータをセグメントに分割する
- ネットワーク層で、セグメントに送信元と宛先のIPアドレスなどを付加し、パケットを作る
- データリンク層で、パケットに送信元と宛先のMACアドレスなどを付加し、フレームを作る
- 物理層で、フレームを構成するデータを電気信号や光、電波として送信する
このように、上位層のデータへ下位層の情報を順番に付加していく処理を「カプセル化」と呼びます。
受信側では、送信側とは反対の順番で情報を取り外し、最終的にWebサーバーがHTTPリクエストを受け取ります。この処理を「非カプセル化」と呼びます。
データの関係を簡単に表すと、次のようになります。
フレーム
└── パケット
└── セグメント
└── アプリケーションのデータ
このように、普段は一つに見える通信も、実際には複数の役割が組み合わさって成立しています。
まとめ
OSI参照モデルは、ネットワーク通信に必要な機能を7つの層に分けて整理したものです。
各層の役割を簡単にまとめると、次のようになります。
- 第1層:信号を伝える
- 第2層:同じネットワーク内の機器へ届ける
- 第3層:異なるネットワークを越えて目的地へ届ける
- 第4層:アプリケーション間のデータ転送を管理する
- 第5層:通信の開始から終了までを管理する
- 第6層:データを扱える形式へ変換する
- 第7層:アプリケーションに通信機能を提供する
実際のインターネット通信では、主にTCP/IPモデルに基づいた仕組みが使われており、OSI参照モデルの各層と現実の実装が完全に対応しているわけではありません。
それでもOSI参照モデルは、通信の仕組みを整理したり、障害が発生している場所を切り分けたりするときの共通言語として役立ちます。
まずは「どの層が何を担当しているのか」を大まかに把握することが、ネットワークを理解する第一歩です。