ブラウザで検索ボタンを押すと、一瞬で世界中のサーバーから情報が届きますよね?
「どうやってデータが正確に届くんだろう?」と不思議に思ったことはありませんか?
その裏側で働いているのがプロトコルスタックという仕組みです。今回は、インターネット通信を支える重要な技術について、初心者の方でも分かりやすく解説していきますよ!
プロトコルスタックとは?基本を理解しよう

プロトコルスタックは、ネットワーク通信を行うための階層的な仕組みです。
プロトコルって何?
プロトコルは、通信の「決まりごと」や「手順」のことです。
人間同士が話すときも、「こんにちは」→「返事」→「会話」という流れがありますよね。コンピュータ同士も、共通のルールに従って通信するんです。
スタックって何?
スタックは「積み重ね」という意味です。
プロトコルを何層にも積み重ねて、それぞれの層が異なる役割を担っています。
例え話で理解しよう:
郵便の仕組みに似ています。
- 内容を書く(アプリケーション層):手紙を書く
- 封筒に入れる(トランスポート層):封筒で包む
- 宛先を書く(ネットワーク層):住所を記入
- 実際に運ぶ(データリンク層・物理層):郵便局が配達
各段階で異なる役割を持っていますね。
OSI参照モデル:理論的な7階層
ネットワーク通信の標準的なモデルがOSI参照モデルです。
OSI参照モデルとは
OSIは「Open Systems Interconnection」の略で、国際標準化機構(ISO)が定めた通信モデルです。
7つの階層:
| 層番号 | 名称 | 役割 | 具体例 |
|---|---|---|---|
| 第7層 | アプリケーション層 | ユーザーが使うアプリ | HTTP, SMTP, FTP |
| 第6層 | プレゼンテーション層 | データの形式変換 | 暗号化, 圧縮 |
| 第5層 | セッション層 | 通信の開始・終了管理 | セッション管理 |
| 第4層 | トランスポート層 | 信頼性のある通信 | TCP, UDP |
| 第3層 | ネットワーク層 | 経路選択・アドレス管理 | IP, ルーティング |
| 第2層 | データリンク層 | 隣接機器間の通信 | イーサネット, Wi-Fi |
| 第1層 | 物理層 | 電気信号の送受信 | ケーブル, 電波 |
上から下に向かって、より低レベルな処理になっていきます。
各層の詳細
第7層:アプリケーション層
私たちが直接触れる層です。Webブラウザやメールソフトが動作します。
第6層:プレゼンテーション層
データを適切な形式に変換します。暗号化やJPEG圧縮などもこの層で行われますよ。
第5層:セッション層
通信の開始から終了までを管理します。ログイン状態の維持などですね。
第4層:トランスポート層
データが確実に届くように管理します。エラーチェックや再送制御を担当します。
第3層:ネットワーク層
IPアドレスを使って、データをどの経路で送るか決定します。
第2層:データリンク層
同じネットワーク内の隣接機器に、データを確実に届けます。MACアドレスを使用しますよ。
第1層:物理層
0と1のデジタル信号を、電気信号や光信号、電波に変換して送ります。
TCP/IPモデル:実用的な4階層
実際のインターネットで使われているのがTCP/IPモデルです。
OSI参照モデルとの対応
TCP/IPモデルは、OSIの7層をより実用的に4層にまとめたものです。
TCP/IPの4層:
| TCP/IP層 | OSI対応層 | 主なプロトコル |
|---|---|---|
| アプリケーション層 | 第5〜7層 | HTTP, SMTP, DNS, FTP |
| トランスポート層 | 第4層 | TCP, UDP |
| インターネット層 | 第3層 | IP, ICMP, ARP |
| ネットワークインターフェース層 | 第1〜2層 | イーサネット, Wi-Fi |
OSIは理論的なモデル、TCP/IPは実際に使われているモデルという違いがありますね。
なぜTCP/IPが主流?
実用性重視:
インターネットの成長とともに進化してきたため、現実のニーズに合っています。
シンプル:
7層より4層の方が理解しやすく、実装も簡単です。
事実上の標準:
世界中のインターネットがTCP/IPで動いているため、デファクトスタンダード(事実上の標準)になっています。
データの流れ:カプセル化とデカプセル化

プロトコルスタックを通ってデータが流れる様子を見てみましょう。
カプセル化(送信側)
上の層から下の層へ:
データが各層を通るたびに、ヘッダー(制御情報)が追加されていきます。
例:Webページを表示する場合
1. アプリケーション層:
HTTPリクエスト: "GET /index.html HTTP/1.1"
2. トランスポート層:
[TCPヘッダー] + HTTPリクエスト
送信元ポート: 50000, 宛先ポート: 80
3. インターネット層:
[IPヘッダー] + [TCPヘッダー] + HTTPリクエスト
送信元IP: 192.168.1.10, 宛先IP: 93.184.216.34
4. ネットワークインターフェース層:
[イーサネットヘッダー] + [IPヘッダー] + [TCPヘッダー] + HTTPリクエスト
送信元MAC: AA:BB:CC:DD:EE:FF, 宛先MAC: 11:22:33:44:55:66
まるでロシアのマトリョーシカ人形のように、データが何重にも包まれていくんですね。
デカプセル化(受信側)
下の層から上の層へ:
受信側では、各層がヘッダーを取り除きながら上の層に渡していきます。
1. ネットワークインターフェース層:
イーサネットヘッダーを確認して剥がし、IPパケットを上の層に渡します。
2. インターネット層:
IPヘッダーを確認して剥がし、TCPセグメントを上の層に渡します。
3. トランスポート層:
TCPヘッダーを確認して剥がし、HTTPデータを上の層に渡します。
4. アプリケーション層:
Webブラウザが最終的なHTTPデータを受け取り、ページを表示します。
このように、送信側と逆の手順でデータを取り出していくんですよ。
各層の主要プロトコル詳細
各階層でどんなプロトコルが使われているか見ていきましょう。
アプリケーション層のプロトコル
HTTP/HTTPS(Webサイト閲覧)
- HTTP:ポート80
- HTTPS:ポート443(暗号化)
SMTP/POP3/IMAP(メール送受信)
- SMTP:メール送信(ポート25, 587)
- POP3:メール受信(ポート110)
- IMAP:メール受信(ポート143)
DNS(ドメイン名解決)
- ポート53
- example.comをIPアドレスに変換
FTP(ファイル転送)
- ポート21(制御)、20(データ)
- ファイルのアップロード・ダウンロード
SSH(リモート接続)
- ポート22
- 暗号化されたリモート操作
トランスポート層のプロトコル
TCP(Transmission Control Protocol)
特徴:
- 信頼性が高い
- データが確実に届く
- 順序が保証される
- 接続型(3ウェイハンドシェイク)
用途:
Web閲覧、メール、ファイル転送など、正確性が重要な通信
UDP(User Datagram Protocol)
特徴:
- 高速だが信頼性は低い
- データが失われる可能性がある
- 順序が保証されない
- 非接続型(すぐ送信開始)
用途:
動画配信、音声通話、オンラインゲームなど、速度が重要な通信
インターネット層のプロトコル
IP(Internet Protocol)
IPv4:
- 192.168.1.1のような形式
- 約43億個のアドレス
IPv6:
- 2001:0db8:85a3::8a2e:0370:7334のような形式
- 事実上無限のアドレス
ICMP(Internet Control Message Protocol)
- エラー通知や制御メッセージ
- pingコマンドで使用
ARP(Address Resolution Protocol)
- IPアドレスからMACアドレスを調べる
- ローカルネットワーク内で使用
データリンク層のプロトコル
イーサネット(有線LAN)
- MACアドレスで通信
- CSMA/CD方式で衝突回避
Wi-Fi(無線LAN)
- IEEE 802.11規格
- CSMA/CA方式で衝突回避
PPP(Point-to-Point Protocol)
- モデムやVPN接続で使用
実例で理解:Webページ閲覧の流れ
実際にWebサイトを見るとき、プロトコルスタックがどう動くか追ってみましょう。
シナリオ:https://www.example.com にアクセス
ステップ1:DNS問い合わせ(アプリケーション層)
ブラウザ:「www.example.comのIPアドレスは?」
DNSサーバー:「93.184.216.34です」
ステップ2:TCP接続確立(トランスポート層)
クライアント → サーバー: SYN(接続要求)
サーバー → クライアント: SYN-ACK(接続承諾)
クライアント → サーバー: ACK(確認)
3ウェイハンドシェイクで接続を確立しますね。
ステップ3:HTTPSリクエスト送信(アプリケーション層)
GET / HTTP/1.1
Host: www.example.com
このデータが、トランスポート層→インターネット層→データリンク層と順に渡されます。
ステップ4:ルーティング(インターネット層)
複数のルーターを経由して、宛先サーバーまでパケットが届けられます。
ステップ5:サーバーでの処理
サーバー側のプロトコルスタックが、データリンク層→インターネット層→トランスポート層→アプリケーション層と順に処理します。
ステップ6:レスポンス受信
サーバーから送られたHTMLデータが、同じ手順で戻ってきます。
ステップ7:表示
ブラウザがHTMLを解析して、画面に表示します。
これらすべてが、ほんの一瞬で行われるんですよ!
プロトコルスタックの実装:OSとハードウェア
プロトコルスタックは、実際にはどこに実装されているのでしょうか?
オペレーティングシステム(OS)
ほとんどの層はOS内部に実装:
- トランスポート層:カーネル内
- インターネット層:カーネル内
- 一部のデータリンク層:ドライバ
Windows、Linux、macOSなど、すべてのOSがプロトコルスタックを持っています。
Windowsの場合:
ネットワークアダプター
↓
NDIS(Network Driver Interface Specification)
↓
TCP/IPスタック
↓
Windowsソケット
↓
アプリケーション
ネットワークインターフェースカード(NIC)
物理層と一部のデータリンク層:
LANカードやWi-Fiチップに実装されています。
- フレームの送受信
- CRC(巡回冗長検査)
- MACアドレスの処理
ハードウェアで処理することで、高速化を実現していますね。
アプリケーション
アプリケーション層:
各アプリケーションが独自にプロトコルを実装します。
- Webブラウザ:HTTP/HTTPS
- メールソフト:SMTP/POP3/IMAP
- FTPクライアント:FTP
ポート番号の役割

トランスポート層では、ポート番号も重要な概念です。
ポート番号とは
アプリケーションを識別する番号のことです。
例え話:
IPアドレスが「マンションの住所」なら、ポート番号は「部屋番号」です。
192.168.1.10:80
└─IPアドレス └─ポート番号
ウェルノウンポート(0〜1023)
標準的なサービスに割り当てられた番号です。
| ポート | プロトコル | 用途 |
|---|---|---|
| 20, 21 | FTP | ファイル転送 |
| 22 | SSH | リモート接続 |
| 25 | SMTP | メール送信 |
| 53 | DNS | 名前解決 |
| 80 | HTTP | Webサイト |
| 443 | HTTPS | 暗号化Web |
| 110 | POP3 | メール受信 |
| 143 | IMAP | メール受信 |
登録済みポート(1024〜49151)
企業やアプリケーションが登録したポートです。
- 3306:MySQL
- 3389:リモートデスクトップ
- 5432:PostgreSQL
動的ポート(49152〜65535)
クライアント側が自由に使えるポートです。
Webを見るとき、クライアント側は50000番などのランダムなポートを使いますよ。
トラブルシューティングへの応用
プロトコルスタックを理解すると、ネットワーク問題の切り分けが楽になります。
階層ごとの診断
物理層・データリンク層の問題:
症状:
- LANケーブルを挿してもリンクランプが点灯しない
- Wi-Fiに接続できない
診断:
# Windowsでリンク状態確認
ipconfig /all
# Linuxでリンク状態確認
ip link show
ethtool eth0
ネットワーク層の問題:
症状:
- IPアドレスが取得できない
- ルーターに到達できない
診断:
# IPアドレス確認
ipconfig # Windows
ip addr # Linux
# ゲートウェイへのPing
ping 192.168.1.1
トランスポート層の問題:
症状:
- 特定のポートに接続できない
- ファイアウォールでブロックされている
診断:
# Windowsでポート確認
netstat -an | findstr :80
# Linuxでポート確認
netstat -tuln | grep :80
ss -tuln | grep :80
アプリケーション層の問題:
症状:
- Webサイトが表示されない
- メールが送信できない
診断:
# DNS解決確認
nslookup example.com
# HTTPアクセステスト
curl -v https://example.com
パケットキャプチャで見るプロトコルスタック
実際の通信を観察してみましょう。
Wiresharkの使い方
Wiresharkは、ネットワークパケットを解析できるツールです。
インストール:
公式サイト(https://www.wireshark.org/)からダウンロードできます。
基本的な使い方:
- Wiresharkを起動
- 監視するインターフェースを選択(Wi-Fiやイーサネット)
- キャプチャ開始
- Webブラウザでサイトにアクセス
- キャプチャ停止
パケットの構造を確認:
キャプチャしたパケットをクリックすると、各層の情報が表示されます。
Frame(フレーム全体)
└─ Ethernet II(データリンク層)
└─ Internet Protocol(ネットワーク層)
└─ Transmission Control Protocol(トランスポート層)
└─ Hypertext Transfer Protocol(アプリケーション層)
実際にプロトコルスタックを目で見ることができますよ!
tcpdumpコマンド(Linux/Mac)
コマンドラインでパケットキャプチャができます。
# 基本的なキャプチャ
sudo tcpdump -i eth0
# HTTPトラフィックのみ
sudo tcpdump -i eth0 port 80
# 特定のIPアドレスとの通信
sudo tcpdump -i eth0 host 192.168.1.100
# ファイルに保存
sudo tcpdump -i eth0 -w capture.pcap
保存したファイルは、Wiresharkで開いて詳しく分析できます。
ファイアウォールとプロトコルスタック
セキュリティ対策にもプロトコルスタックの知識が活かせます。
各層でのフィルタリング
ネットワーク層(IPフィルタ):
特定のIPアドレスからの通信を遮断します。
# Linuxのiptablesでフィルタ
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
トランスポート層(ポートフィルタ):
特定のポート番号への通信を制限します。
# ポート22(SSH)以外を遮断
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp -j DROP
アプリケーション層(コンテンツフィルタ):
HTTPのURLやメールの内容を検査します。
プロキシサーバーやWebアプリケーションファイアウォール(WAF)が担当しますね。
深層パケット検査(DPI)
すべての層を検査する高度な技術です。
ウイルスやマルウェアの検出に使われます。
仮想化とプロトコルスタック
仮想環境でも、プロトコルスタックは重要です。
仮想マシンのネットワーク
ブリッジモード:
仮想マシンが、物理ネットワークに直接参加します。
物理NIC → 仮想スイッチ → 仮想NIC → ゲストOSのプロトコルスタック
NATモード:
ホストOSが、仮想マシンのトラフィックを変換します。
ゲストOS → ホストOSのプロトコルスタック → 物理NIC
Dockerコンテナのネットワーク
Dockerでは、仮想的なプロトコルスタックが作られます。
# コンテナ内のネットワーク確認
docker exec -it コンテナ名 ip addr
各コンテナが独立したプロトコルスタックを持っていますよ。
よくある質問
Q: プロトコルスタックはハードウェア?ソフトウェア?
A: ほとんどがソフトウェア(OS内)ですが、物理層と一部のデータリンク層はハードウェア(LANカードなど)で実装されています。両者が協力して動作していますね。
Q: TCPとUDPはどう使い分ける?
A: 確実性が重要ならTCP(Webページ、メール、ファイル転送)、速度が重要ならUDP(動画配信、音声通話、ゲーム)を選びます。用途に応じて使い分けることが大切ですよ。
Q: ポート番号は何個使える?
A: 0〜65535の範囲で、計65536個あります。ただし、0〜1023はシステム用に予約されているため、一般アプリは1024以降を使います。
Q: IPv4とIPv6は共存できる?
A: はい、デュアルスタックという技術で両方を同時に使えます。現在は移行期なので、多くのシステムが両対応していますね。
Q: VPNはどの層で動作する?
A: VPNの種類によります。IPsecはネットワーク層、SSL/TLSベースのVPNはアプリケーション層で動作します。どちらも暗号化トンネルを作って安全に通信しますよ。
まとめ:プロトコルスタックはネットワークの心臓
プロトコルスタックについて、重要なポイントをおさらいします。
今日学んだこと:
- プロトコルスタックは階層的な通信の仕組み
- OSI参照モデルは7層、TCP/IPモデルは4層
- カプセル化とデカプセル化でデータが流れる
- 各層に異なるプロトコルが存在する
- TCP(信頼性重視)とUDP(速度重視)の使い分け
- ポート番号でアプリケーションを識別
- トラブルシューティングは階層ごとに切り分け
- Wiresharkで実際の通信を観察できる
プロトコルスタックは、インターネット通信の基礎となる重要な概念です。
一見複雑に見えますが、各層が独立して役割を果たすことで、全体として柔軟で信頼性の高いシステムになっているんですね。この仕組みを理解すると、ネットワークのトラブルシューティングもずっと楽になりますよ。
プログラマーの方もネットワーク管理者の方も、このプロトコルスタックの知識は必須です。一度しっかり理解してしまえば、様々な場面で応用できるはずです。ぜひ今日学んだ知識を活かして、ネットワークの世界をもっと深く探求してみてくださいね!
関連記事:
- TCP/IPの基礎知識
- パケットキャプチャで学ぶネットワーク
- ファイアウォールの設定と運用


コメント