高専の情報通信ネットワークの講義で、通信を成り立たせるルールやネットワークの分類について学んだ。普段ブラウザでWebページを見るときにも、複数のプロトコルが組み合わされている。今回は第1回の内容を、OSI参照モデルを中心に整理する。
プロトコルとネットワークアーキテクチャ
プロトコルは、機器同士が通信するためのルールだ。データの形式や送り方などを通信相手と揃えることで、異なる機器同士でもデータをやり取りできる。EthernetやIPなどがその例にあたる。
通信には、データをアプリケーションへ届けることや、ネットワークを越えて宛先まで運ぶことなど、いくつもの仕事がある。これらを分担するプロトコルを組み合わせたものをネットワークアーキテクチャという。TCP/IPはその一例だ。
たとえばWebページを開くとき、ブラウザはクライアントとしてWebサーバにリクエストを送り、サーバはレスポンスを返す。たとえばHTTP/1.1やHTTP/2を使う場合は、HTTP、TCP、IPなどがそれぞれの役割を担っている。
TCP/IPの4つの層
TCP/IPのプロトコルは、役割に応じて4つの層に分けて考えられる。
| 層 | 主な役割 | プロトコルなどの例 |
|---|---|---|
| アプリケーション層 | アプリケーション間の通信に必要なルールを定める | HTTP、HTTPS、DNS、DHCP |
| トランスポート層 | アプリケーション間のデータ転送を担う | TCP、UDP |
| インターネット層 | 宛先を指定し、ネットワークを越えてデータを届ける | IPv4、IPv6 |
| ネットワークインターフェイス層 | 同じネットワーク上でデータを送り、伝送媒体に合わせて信号を扱う | Ethernet、Wi-Fi |
HTTPはWebのデータをやり取りするためのプロトコルで、HTTPSではHTTPの通信をTLSで保護する。トランスポート層のTCPとUDPは、どちらもアプリケーション間の通信に使われるが、TCPは到着確認や再送によって信頼性のある転送を行い、UDPは到着確認や再送をプロトコル自体では行わない。
TCPは通信を始めるときに接続を確立し、データの欠落があれば再送する。たとえばHTTP/1.1やHTTP/2では、WebページのデータをTCPで運ぶ。一方、UDPは接続を確立せずにデータグラムを送る。DNSの名前解決ではUDPがよく使われ、必要に応じてTCPも使われる。UDPを使うアプリケーションや上位のプロトコルが再送などを行うこともある。HTTP/3はUDP上で動くQUICを使い、QUICが信頼性のある転送を担う。
OSI参照モデル
OSI参照モデルは、通信の機能を7つの層に分けて考えるためのモデルだ。TCP/IPの4層と比べると、アプリケーションに近い部分とネットワークに接続する部分が、さらに細かく分かれている。
| 層 | 名前 | 主な役割 |
|---|---|---|
| 第7層 | アプリケーション層 | アプリケーションが利用する通信機能を提供する |
| 第6層 | プレゼンテーション層 | データの表現形式や暗号化、圧縮などを扱う |
| 第5層 | セッション層 | 通信の開始から終了までのやり取りを管理する |
| 第4層 | トランスポート層 | アプリケーション間の転送を担い、ポート番号などを扱う |
| 第3層 | ネットワーク層 | 宛先までの経路を選び、異なるネットワーク間でデータを転送する |
| 第2層 | データリンク層 | 同じネットワーク内でのフレームの転送や誤り検出を担う |
| 第1層 | 物理層 | 電気信号や光信号などを使い、物理的にビットを伝送する |
TCP/IPのアプリケーション層はOSI参照モデルの第5〜7層に、トランスポート層は第4層に、インターネット層は第3層におおむね対応する。ネットワークインターフェイス層は第1〜2層に相当する。
2つのモデルは作られた目的や分け方が異なるため、境界が完全に一致するわけではない。それでも、通信のどの部分を考えているのか整理する際に役立つ。
データのカプセル化
Webのデータは、送信時に各層で制御用の情報を付け加えながら下の層へ渡される。この処理をカプセル化という。暗号化しないHTTP/1.1をTCP、IP、Ethernetで運ぶ例では、次のようになる。
- アプリケーション層でHTTPメッセージを作る。
- トランスポート層でデータを必要に応じて分け、それぞれにTCPヘッダを付けてTCPセグメントにする。
- インターネット層でIPヘッダを付け、IPパケットにする。
- ネットワークインターフェイス層でEthernetヘッダとFCSを付け、Ethernetフレームにする。
1つのHTTPメッセージが、複数のTCPセグメントにまたがることもある。HTTPSをTCPで運ぶ場合は、HTTPとTCPの間にTLSの処理が加わる。
ヘッダには、各層で転送や処理に必要な情報が入る。FCS(Frame Check Sequence)はフレームの誤りを検出するための情報だ。受信側では、各層で必要な情報を確認しながら、上の層へデータを渡していく。
データを中継する機器
ネットワーク上では、端末同士を直接つなぐだけでなく、途中の機器を使ってデータを中継する。
- L2スイッチ:主にデータリンク層で動作し、MACアドレスを基に同じネットワーク内のフレームを転送する。
- ルータ:主にネットワーク層で動作し、異なるネットワークを接続してIPパケットを転送する。
- L3スイッチ:L2スイッチの機能に加え、ネットワーク間のルーティングも行う。
たとえば、同じ教室のPCとサーバをL2スイッチにつなぐと、スイッチは学習したMACアドレスを使ってフレームを転送する。宛先のユニキャストMACアドレスがまだテーブルにない場合は、通常、受信したポート以外の同じVLANに属する転送可能なポートへ送る。別のネットワークにあるサーバへ送る場合は、ルータなどがIPアドレスを基に次の転送先を選ぶ。
Webサービスのサーバが複数ある場合には、ロードバランサを前段に置き、リクエストを各サーバへ振り分ける構成もある。ヘルスチェックで応答しないサーバを振り分け先から外せる。
端末から送られたデータは、こうした機器を経由しながら宛先に向かう。実際に媒体を通す際には、デジタルデータを電気信号、光信号、電波などに変換する。たとえば、UTPケーブルでは電気信号、光ファイバでは光信号、Wi-Fiでは電波を使う。
通信速度を表すbpsは、1秒あたりに転送できるビット数を示す。MbpsやGbpsなどの単位で表される。一方、ppsは1秒あたりのパケット数を表す単位なので、同じ数字でも意味が異なる。
ネットワークの分類
利用者の範囲で見ると、社内や校内、家庭内などのプライベートネットワークと、さまざまな組織のネットワークを相互接続したインターネットに分けて考えられる。
広がりに注目した呼び名にはLANとWANがある。
- LAN(Local Area Network):家庭や学校、会社の拠点内など、限られた範囲のネットワーク。
- WAN(Wide Area Network):離れた拠点間を接続する広い範囲のネットワーク。インターネットも広域ネットワークの一例だ。
インターネットを構成するネットワークは、AS(Autonomous System、自律システム)という単位でも捉えられる。ASは共通の運用方針の下で管理されるネットワークの集まりだ。ISP(Internet Service Provider)はインターネットへの接続サービスを提供し、利用者はISPを通してインターネットにアクセスする。
プライベートネットワークとインターネットをつなぐ
家庭や組織のネットワークからインターネットへ通信するとき、IPv4ではNATやNAPTを使ってアドレスやポート番号を変換する構成がよく使われる。NAPTを使えば、複数の端末がポート番号を使い分けて一つのグローバルIPv4アドレスを共有できる。IPv6を含むすべての通信で、これらの変換が必須というわけではない。
ファイアウォールは、設定されたルールに従って通信を許可したり遮断したりする。外部から内部のサービスへ接続できるようにする場合は、公開する範囲を絞る必要がある。
離れた拠点のプライベートネットワーク同士をインターネット経由でつなぐ方法には、VPN(Virtual Private Network)がある。VPNではトンネルを作り、方式に応じて通信を暗号化する。VPNゲートウェイは、その接続を中継する機器やソフトウェアだ。
クラウドサービスの分類
ネットワーク経由で計算資源やソフトウェアを必要に応じて利用するクラウドと、自社・自組織の設備内でサーバなどを構築・運用するオンプレミスも扱った。クラウドサービスは、利用する範囲によって次のように分類できる。
- IaaS:サーバの計算資源やストレージ、ネットワークなどの基盤を利用する。
- PaaS:アプリケーションを動かすためのプラットフォームを利用する。
- SaaS:完成したソフトウェアの機能を利用する。
クラウドでは必要な分の資源を利用しやすい一方、セキュリティや可用性を考える際には、事業者と利用者がそれぞれ何を管理するかも確認する必要がある。
今回のまとめ
Webページを開くという操作の裏側では、HTTPによるやり取り、TCPやQUICによる転送、IPによる宛先への配送、EthernetやWi-Fiによる伝送が重なっている。OSI参照モデルは、それぞれの仕事を切り分けて考えるための整理方法だと理解した。