こんにちは。AXLBIT株式会社に2026年新卒として入社した@ax-fisetです。
先日開催された「AXLLAB」にて、『マスタリングTCP/IP』で学んだ内容に、自身で調査した内容を交えながら、「Webページが表示されるまでの通信の流れ」について発表を行いました。
私たちは普段、ブラウザでURLを入力したりリンクをクリックしたりするだけで、当たり前のようにWebページを閲覧しています。しかし、その裏側では、HTTP・TCP・IP・MACアドレスなど、さまざまな技術が連携しながら通信を行っています。私自身、この仕組みを学ぶまでは、Webページが表示されるまでにこれほど多くの技術が関わっていることを知りませんでした。
本記事では、AXLLABでの発表内容をベースに、Webページが表示されるまでの通信の流れを順を追って解説します。
(※本記事では通信の流れを分かりやすくするため、DNSによる名前解決など一部の処理を省略しています。)
プロトコルとは?
プロトコル(Protocol)とは、コンピュータ同士が通信するための共通ルールのことです。
人間でいう、英語や日本語などの言語のようなものです。
言語というルールが違えば会話が成立しないように、コンピュータ同士も同じプロトコルを使わなければ通信できません。
インターネットでは、このような通信ルールの集合として TCP/IPプロトコル群 が広く利用されています。
TCP/IPの4階層モデル
TCP/IPでは通信の役割を4つの階層に分けて考えます。
アプリケーション層、トランスポート層、インターネット層 、ネットワークインターフェース層の4つにわけられ、それぞれ役割が異なります。
| 層 | 主な役割 |
|---|---|
| アプリケーション層 | HTTPなどアプリケーションの通信 |
| トランスポート層 | TCP/UDPなどによる通信制御 |
| インターネット層 | IPによる経路選択 |
| ネットワークインターフェース層 | LANなど物理ネットワークでの通信 |
パケットとは?
ネットワークではデータをそのまま送るのではなく、パケット(Packet) という小さな単位に分割して送ります。
例えば、フランスパンを丸ごと食べるのは大変ですよね。
小さく切り分けて、一口ずつ食べる方が食べやすくなります。
ネットワーク通信も同じ考え方です。データを小さなパケットに分割して送ることで、ネットワーク上で効率よく転送できるようになっています。
ヘッダとは?
パケットには ヘッダ(Header) という制御情報が付加されます。
郵便物でいうと「宛名ラベル」です。
TCP/IPでは各階層ごとにヘッダを追加していきます。
Webページを開くまでの流れ
例えばブラウザで以下のようなURLへアクセスするとします。
https://example.com/index.html
実際には次のような流れで通信が行われます。
1. アプリケーション層
ブラウザはまず
のようなHTTPリクエストを作成します。
これは「index.htmlをください」というお願いです。
ここで使われるプロトコルがHTTPです。
2. トランスポート層
次にTCPヘッダが追加されます。
TCPでは、通信相手との接続を確立してからデータを送受信します。
TCPの役割は主に2つです。
TCP
1台のサーバーでは複数のネットワークサービスが動作しています。
そのため、
80番 → HTTP
443番 → HTTPS
25番 → SMTP
のように、どのアプリへ届けるかを指定します。
これはマンションの部屋番号のようなものです。
TCPは
- データ欠損の検知
- 再送制御
- 順序保証
を行い、信頼性の高い通信を実現します。
3. インターネット層
続いてIPヘッダを追加します。
この層では
- 送信元IP
- 宛先IP
を指定します。
IPアドレスはインターネット上の住所です。
例:203.0.113.10
ルーターは宛先IPアドレスを確認しながら、次にどこへ転送するかを判断します。
これをルーティングと呼びます。
4. ネットワークインターフェース層
最後にMACヘッダが追加されます。
MACアドレスはネットワークインターフェースに割り当てられる識別子です。
ここで重要なのは、
- IPアドレス → 最終目的地
- MACアドレス → 次に渡す相手
という違いです。
パケットの完成
最終的なパケットは以下のようになります。
このパケットはネットワーク上で送信できる形式に変換され、ケーブルやWi-Fiを通じて送信されます。
ルーターによるバケツリレー
パケットは目的地へ一気に届くわけではありません。
途中で複数のルーターを経由します。
PC
↓
ルーターA
↓
ルーターB
↓
ルーターC
↓
Webサーバー
ここで面白いのが、IPヘッダは基本的にそのままなのに、MACヘッダは途中で書き換わるという点です。
MACアドレスは隣接機器との通信でしか使われないためです。
※ルーターはIPアドレスを見て転送先を決定しますが、実際に隣接する機器へフレームを送る際には、その区間のMACアドレスを使用します。そのため、ルーターを通過するたびにMACヘッダは付け替えられますが、IPヘッダは基本的に変更されません。
サーバーに到着したら?
サーバーに到着すると送信時に各階層で付与したヘッダは、受信側で逆順に取り外されます。
ネットワークインターフェース層
↓
インターネット層
↓
トランスポート層
↓
アプリケーション層
これを デカプセル化(Decapsulation) と呼びます。
サーバーは最終的にGET /index.htmlというHTTPリクエストを受け取り、HTTPレスポンスとしてHTMLなどのデータを返します。
レスポンスも同じ流れ
サーバーからHTMLを返すときも同じです。
HTML
↓
TCPヘッダ付与
↓
IPヘッダ付与
↓
MACヘッダ付与
↓
送信
そしてPC側でヘッダを順番に剥がし、最終的にブラウザがHTMLを表示します。
まとめ
Webページを開くというシンプルな操作の裏側では、
- HTTP
- TCP
- IP
- MACアドレス
- ルーティング
といった多くの技術が連携しています。
通信の流れを簡単にまとめると、
HTTPリクエストをアプリケーション層で作成し、
↓
TCPが信頼性の高い通信を実現し、
↓
IPが宛先まで届ける経路を決め、
↓
MACアドレスが隣接機器へ受け渡します。
です。
つまり、Webページを表示するためには、各階層がそれぞれの役割を担いながら協力して通信を行っています。ネットワークは複雑に見えますが、「それぞれの階層に役割がある」と考えると理解しやすくなります。
おわりに
本記事では通信の流れを分かりやすくするため、一部の内容を省略しています。
TCP/IPについてさらに詳しく学びたい方は、『マスタリングTCP/IP 入門編』 を手に取ってみてください。各プロトコルや通信の仕組みが体系的に解説されており、理解を深めるのにおすすめの一冊です。





