プロトコルスタック完全ガイド:ネットワーク通信の仕組み【初心者向け】

ブラウザで検索ボタンを押すと、一瞬で世界中のサーバーから情報が届きますよね?

「どうやってデータが正確に届くんだろう?」と不思議に思ったことはありませんか?

その裏側で働いているのがプロトコルスタックという仕組みです。今回は、インターネット通信を支える重要な技術について、初心者の方でも分かりやすく解説していきますよ!


スポンサーリンク
  1. プロトコルスタックとは?基本を理解しよう
    1. プロトコルって何?
    2. スタックって何?
  2. OSI参照モデル:理論的な7階層
    1. OSI参照モデルとは
    2. 各層の詳細
  3. TCP/IPモデル:実用的な4階層
    1. OSI参照モデルとの対応
    2. なぜTCP/IPが主流?
  4. データの流れ:カプセル化とデカプセル化
    1. カプセル化(送信側)
    2. デカプセル化(受信側)
  5. 各層の主要プロトコル詳細
    1. アプリケーション層のプロトコル
    2. トランスポート層のプロトコル
    3. インターネット層のプロトコル
    4. データリンク層のプロトコル
  6. 実例で理解:Webページ閲覧の流れ
    1. シナリオ:https://www.example.com にアクセス
  7. プロトコルスタックの実装:OSとハードウェア
    1. オペレーティングシステム(OS)
    2. ネットワークインターフェースカード(NIC)
    3. アプリケーション
  8. ポート番号の役割
    1. ポート番号とは
    2. ウェルノウンポート(0〜1023)
    3. 登録済みポート(1024〜49151)
    4. 動的ポート(49152〜65535)
  9. トラブルシューティングへの応用
    1. 階層ごとの診断
  10. パケットキャプチャで見るプロトコルスタック
    1. Wiresharkの使い方
    2. tcpdumpコマンド(Linux/Mac)
  11. ファイアウォールとプロトコルスタック
    1. 各層でのフィルタリング
    2. 深層パケット検査(DPI)
  12. 仮想化とプロトコルスタック
    1. 仮想マシンのネットワーク
    2. Dockerコンテナのネットワーク
  13. よくある質問
  14. まとめ:プロトコルスタックはネットワークの心臓

プロトコルスタックとは?基本を理解しよう

プロトコルスタックは、ネットワーク通信を行うための階層的な仕組みです。

プロトコルって何?

プロトコルは、通信の「決まりごと」や「手順」のことです。

人間同士が話すときも、「こんにちは」→「返事」→「会話」という流れがありますよね。コンピュータ同士も、共通のルールに従って通信するんです。

スタックって何?

スタックは「積み重ね」という意味です。

プロトコルを何層にも積み重ねて、それぞれの層が異なる役割を担っています。

例え話で理解しよう:

郵便の仕組みに似ています。

  1. 内容を書く(アプリケーション層):手紙を書く
  2. 封筒に入れる(トランスポート層):封筒で包む
  3. 宛先を書く(ネットワーク層):住所を記入
  4. 実際に運ぶ(データリンク層・物理層):郵便局が配達

各段階で異なる役割を持っていますね。


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, 21FTPファイル転送
22SSHリモート接続
25SMTPメール送信
53DNS名前解決
80HTTPWebサイト
443HTTPS暗号化Web
110POP3メール受信
143IMAPメール受信

登録済みポート(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/)からダウンロードできます。

基本的な使い方:

  1. Wiresharkを起動
  2. 監視するインターフェースを選択(Wi-Fiやイーサネット)
  3. キャプチャ開始
  4. Webブラウザでサイトにアクセス
  5. キャプチャ停止

パケットの構造を確認:

キャプチャしたパケットをクリックすると、各層の情報が表示されます。

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の基礎知識
  • パケットキャプチャで学ぶネットワーク
  • ファイアウォールの設定と運用

コメント

タイトルとURLをコピーしました