Lab AI コンピューターネットワークの基礎——TCP/IP、HTTP、DNS、負荷分散の仕組み
目次

現代のアプリケーションは、ネットワークなしでは成り立たない。Web ブラウザからのリクエスト、マイクロサービス間の通信、データベースへの接続——すべてがネットワークを介して行われている。本記事では、OSI 参照モデルから TCP/IP プロトコル、HTTP/HTTPS、DNS 名前解決、負荷分散の基本概念までを体系的に解説する。

ネットワークの階層モデル

コンピューターネットワークは、**階層化(Layering)**という考え方に基づいて設計されている。複雑な処理を複数の層に分割し、各層が特定の役割を担当する。

OSI 参照モデル

OSI(Open Systems Interconnection)参照モデルは、ネットワーク機能を 7 つの階層に分類した国際標準モデルだ。

【OSI 参照モデルの 7 階層】

+-------+------------------------------------------+------------------+
| 階層  | 名称                                     | 主なプロトコル   |
+-------+------------------------------------------+------------------+
| 7     | アプリケーション層                       | HTTP, HTTPS,     |
|       | (Application)                            | SMTP, DNS, SSH   |
+-------+------------------------------------------+------------------+
| 6     | プレゼンテーション層                     | SSL/TLS,         |
|       | (Presentation)                           | JPEG, ASCII      |
+-------+------------------------------------------+------------------+
| 5     | セッション層                             | RPC, NetBIOS     |
|       | (Session)                                |                  |
+-------+------------------------------------------+------------------+
| 4     | トランスポート層                         | TCP, UDP         |
|       | (Transport)                              |                  |
+-------+------------------------------------------+------------------+
| 3     | ネットワーク層                           | IP, ICMP,        |
|       | (Network)                                | ルーティング     |
+-------+------------------------------------------+------------------+
| 2     | データリンク層                           | Ethernet,        |
|       | (Data Link)                              | Wi-Fi, PPP       |
+-------+------------------------------------------+------------------+
| 1     | 物理層                                   | 電気信号、       |
|       | (Physical)                               | 光ファイバー     |
+-------+------------------------------------------+------------------+

各階層は下位層のサービスを利用し、上位層にサービスを提供する。この階層化によって、特定の層だけを交換したり改良したりすることが可能になる。

TCP/IP モデル

実際のインターネットで使われているTCP/IP モデルは、OSI モデルを簡略化した 4 階層モデルだ。

【OSI モデル vs TCP/IP モデル】

OSI 参照モデル          TCP/IP モデル            主なプロトコル
+----------------+      +----------------+
| アプリケーション |      |                | HTTP, HTTPS, DNS,
| プレゼンテーション |───→ | アプリケーション | SSH, SMTP, FTP
| セッション       |      |                |
+----------------+      +----------------+
| トランスポート   | ───→ | トランスポート   | TCP, UDP
+----------------+      +----------------+
| ネットワーク     | ───→ | インターネット   | IP, ICMP
+----------------+      +----------------+
| データリンク     |      |                |
| 物理層         | ───→ | ネットワーク    | Ethernet, Wi-Fi,
+----------------+      | アクセス       | IP, PPP
                        +----------------+

TCP/IP モデルは、OSI モデルの上位 3 層をアプリケーション層に統合し、下位 2 層をネットワークアクセス層に統合している。

トランスポート層——TCP と UDP

トランスポート層は、アプリケーション間の通信を担当する。主要なプロトコルにTCPUDPがある。

TCP(Transmission Control Protocol)

TCPは、信頼性の高い通信を提供するコネクション型プロトコルだ。

【TCP の主な特徴】

1. コネクション型通信
   - 通信前に 3 ウェイハンドシェイクで接続確立
   - 順序正しいデータ転送を保証

2. 信頼性
   - 再送制御:到達しないデータは自動で再送
   - 順序制御:到着順を並び替えて交付
   - フロー制御:受信側の処理能力に合わせる

3. 輻輳制御
   - ネットワークの混雑を検知して送信速度を調整
   - 緩やかな増加、急激な減少(AIMD)
【TCP 3 ウェイハンドシェイク】

クライアント                          サーバー
    ↓                                     ↓
    │────── SYN (seq=100) ───────────────→│  1. 接続要求
    │                                     │
    │←───── SYN-ACK (seq=200, ack=101) ───│  2. 接続要求の応答
    │                                     │
    │────── ACK (seq=101, ack=201) ──────→│  3. 接続確立
    │                                     │
    │══════════ 通信開始 ══════════════════│

UDP(User Datagram Protocol)

UDPは、信頼性よりも速度を重視するコネクションレス型プロトコルだ。

【UDP の主な特徴】

1. コネクションレス型通信
   - 接続確立なしにデータを送信
   - オーバーヘッドが小さい

2. ベストエフォート型
   - 到達保証なし
   - 順序保証なし
   - 再送制御なし

3. 用途
   - 動画配信(一部の欠落より遅延重視)
   - VoIP(リアルタイム性重視)
   - DNS クエリ(1 リクエスト 1 レスポンス)
   - オンラインゲーム

TCP vs UDP 比較

特徴 TCP UDP
接続タイプ コネクション型 コネクションレス
信頼性 高い(再送・順序制御) 低い(ベストエフォート)
速度 やや遅い 高速
オーバーヘッド 大きい 小さい
輻輳制御 あり なし
使用例 Web(HTTPS), メール, ファイル転送 動画配信,VoIP, DNS, ゲーム

ネットワーク層——IP アドレスとルーティング

ネットワーク層は、異なるネットワーク間でのデータ転送を担当する。

IP アドレス

IP アドレスは、ネットワークに接続された各デバイスに割り当てられる住所だ。

【IPv4 vs IPv6】

| 特徴 | IPv4 | IPv6 |
|------|------|------|
| **アドレス長** | 32 ビット | 128 ビット |
| **表記** | 192.168.1.1 (10 進数) | 2001:0db8::1 (16 進数) |
| **アドレス数** | 約 43 億個 | 約 3.4×10^38 個 |
| **ヘッダサイズ** | 20-60 バイト | 40 バイト(固定) |
| **NAT** | 必要 | 原則不要 |
| **セキュリティ** | オプション (IPSec) | 標準対応 (IPSec) |
【IP アドレスの構成:IPv4 の例】

192.168.1.100/24

├─ ネットワーク部:192.168.1.0/24 (上位 24 ビット)
└─ ホスト部:.100 (下位 8 ビット)

サブネットマスク:255.255.255.0
使用可能ホスト数:2^8 - 2 = 254 個
(ネットワークアドレスとブロードキャストを除く)

パケット転送の仕組み

【パケット転送の流れ】

送信元 (192.168.1.100) → 宛先 (10.0.0.50)

1. 送信元ホスト
   ├─ 宛先 IP を確認
   ├─ 同一ネットワークか判断
   └─ 異なる場合、デフォルトゲートウェイへ

2. ルーター A (192.168.1.1)
   ├─ 宛先 IP を確認
   ├─ ルーティングテーブルを参照
   └─ 次のホップ(ルーター B)へ転送

3. ルーター B (10.0.0.1)
   ├─ 宛先 IP を確認
   ├─ 直接接続されたネットワークと判断
   └─ 宛先ホストへ交付

【ルーティングテーブルの例】

宛先ネットワーク | ゲートウェイ | インターフェース
-----------------|-------------|----------------
192.168.1.0/24   | -           | eth0 (直接)
10.0.0.0/24      | -           | eth1 (直接)
0.0.0.0/0        | 203.0.113.1 | eth0 (デフォルト)

アプリケーション層——HTTP プロトコル

**HTTP(Hypertext Transfer Protocol)**は、Web ブラウザとサーバー間の通信に使われるプロトコルだ。

HTTP の基本構造

【HTTP リクエストの例】

GET /api/users/123 HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

├─ 1 行目:リクエストライン(メソッド + URL + バージョン)
├─ 2 行目以降:ヘッダー(メタ情報)
└─ 空行の後:ボディ(POST/PUT 時)
【HTTP レスポンスの例】

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 45
Cache-Control: max-age=3600
Set-Cookie: session_id=abc123; Path=/; HttpOnly

{"id": 123, "name": "山田太郎"}

├─ 1 行目:ステータスライン(バージョン + ステータスコード)
├─ 2 行目以降:ヘッダー(メタ情報)
└─ 空行の後:ボディ(レスポンスデータ)

主要 HTTP メソッド

メソッド 意味 冪等性 用途
GET リソース取得 あり データ読み取り
POST リソース作成 なし データ送信・作成
PUT リソース置換 あり データ更新
PATCH リソース一部更新 なし データ一部更新
DELETE リソース削除 あり データ削除
HEAD ヘッダーのみ取得 あり リソース存在確認
OPTIONS 利用可能メソッド確認 あり CORS プリフライト

HTTP ステータスコード

【ステータスコードの分類】

1xx (Informational): 情報処理中
  101 Switching Protocols (プロトコル切り替え)

2xx (Success): 成功
  200 OK (正常終了)
  201 Created (リソース作成)
  204 No Content (成功だが返す内容なし)

3xx (Redirection): リダイレクト
  301 Moved Permanently (恒久的なリダイレクト)
  302 Found (一時的なリダイレクト)
  304 Not Modified (キャッシュ使用可)

4xx (Client Error): クライアントエラー
  400 Bad Request (不正なリクエスト)
  401 Unauthorized (認証が必要)
  403 Forbidden (アクセス権限なし)
  404 Not Found (リソースが見つからない)
  409 Conflict (競合)
  429 Too Many Requests (レート制限)

5xx (Server Error): サーバーエラー
  500 Internal Server Error (内部エラー)
  502 Bad Gateway (不正なゲートウェイレスポンス)
  503 Service Unavailable (サービス利用不可)
  504 Gateway Timeout (ゲートウェイレスポンス待ち)

HTTPS と TLS——安全な通信

HTTPSは、HTTP に暗号化プロトコル**TLS(Transport Layer Security)**を組み合わせたものだ。

TLS ハンドシェイク

【TLS 1.3 ハンドシェイクの流れ】

クライアント                          サーバー
    ↓                                     ↓
    │────── ClientHello ─────────────────→│
    │  (サポートバージョン,暗号スイート)    │
    │                                     │
    │←───── ServerHello ──────────────────│
    │  (選択バージョン,暗号スイート)       │
    │←───── Certificate ──────────────────│
    │  (サーバー証明書)                   │
    │←───── ServerKeyShare ───────────────│
    │  (サーバーの公開鍵)                 │
    │                                     │
    │────── ClientKeyShare ──────────────→│
    │  (クライアントの公開鍵)             │
    │────── Finished ────────────────────→│
    │  (ハンドシェイク完了)               │
    │                                     │
    │←══════ 暗号化通信開始 ══════════════│

証明書と PKI

【証明書の階層構造】

ルート認証局 (Root CA)
    │  自己署名証明書
    │  ブラウザに信頼済みとして事前登録
    ▼
中間認証局 (Intermediate CA)
    │  ルート CA が署名
    │  実際のエンドユーザー証明書に署名
    ▼
サーバー証明書 (End Entity)
    │  中間 CA が署名
    │  example.com の公開鍵を含む
【証明書の内容】

・コモンネーム (CN): 証明書が発行されたドメイン名
・有効期限:証明書の有効期間(通常 90 日〜1 年)
・発行者:どの認証局が発行したか
・公開鍵:サーバーの公開鍵(RSA 2048/4096, ECDSA)
・署名アルゴリズム:SHA256 with RSA など
・サブジェクト Alternative Name (SAN): 複数のドメイン名

DNS——ドメイン名システム

**DNS(Domain Name System)**は、人間が覚えやすいドメイン名(example.com)を、コンピューターが扱う IP アドレス(93.184.216.34)に変換するシステムだ。

DNS 名前解決の流れ

【再帰的検索のプロセス】

ユーザー                            DNS サーバー
  ↓                                     ↓
  │─「example.com の IP は?」────────→│
  │                                     │
  │                                     │─「.com の DNS は?」──→ ルート DNS
  │                                     │←「192.5.6.30 です」───│
  │                                     │
  │                                     │─「example.com の IP は?」─→ TLD DNS (.com)
  │                                     │←「93.184.216.34 です」───│
  │                                     │
  │←「93.184.216.34 です」─────────────│
  │                                     │
  │  (ブラウザは 93.184.216.34 に接続)   │

DNS レコードの種類

レコードタイプ 用途
A ドメイン→IPv4 アドレス example.com → 93.184.216.34
AAAA ドメイン→IPv6 アドレス example.com → 2606:2800:220:1::
CNAME ドメインの別名 www.example.com → example.com
MX メールサーバー example.com → mail.example.com
TXT テキスト情報 SPF, DKIM, 認証情報
NS 権威 DNS サーバー example.com → ns1.registrar.com
SOA 権威情報の開始 ドメインの管理情報
【DNS レコードの例】

; 権威 DNS サーバーのレコード
example.com.      IN  SOA   ns1.example.com. admin.example.com. (
                              2025062201 ; シリアル
                              3600       ; 更新間隔
                              900        ; リトライ間隔
                              604800     ; 有効期限
                              86400 )    ; 最低 TTL

example.com.      IN  NS    ns1.example.com.
example.com.      IN  NS    ns2.example.com.

example.com.      IN  A     93.184.216.34
www.example.com.  IN  CNAME example.com.
example.com.      IN  MX 10 mail.example.com.

DNS キャッシュ

【DNS キャッシュの階層】

1. ブラウザキャッシュ
   - ブラウザが保持(Chrome, Firefox など)
   - TTL: 数分〜数十分

2. OS キャッシュ(リゾルバキャッシュ)
   - OS が保持(Windows: DNS Client, macOS: mDNSResponder)
   - TTL: レコードの設定値に従う

3. ルーターキャッシュ
   - 家庭用ルーターが保持
   - TTL: 数分〜数時間

4. ISP 再帰 DNS サーバー
   - プロバイダーが運営
   - TTL: レコードの設定値に従う

【TTL(Time To Live)】
・レコードごとに設定される有効期限
・短い TTL: 変更が早い(例:300 秒)
・長い TTL: キャッシュヒット率高い(例:86400 秒)

負荷分散——スケーラビリティの確保

**負荷分散(Load Balancing)**は、複数のサーバーにトラフィックを分散し、処理能力を向上させる技術だ。

負荷分散の目的

【負荷分散のメリット】

1. スケーラビリティ
   - 単一サーバーの限界を突破
   - 水平スケーリングが可能

2. 可用性
   - 1 台のサーバーがダウンしても他で処理
   - 無停止メンテナンスが可能

3. 性能向上
   - 地理的に分散したユーザーに最適化
   - レイテンシ低減

負荷分散アルゴリズム

【主要な分散アルゴリズム】

1. ラウンドロビン(Round Robin)
   サーバー A → サーバー B → サーバー C → サーバー A → ...
   ・単純で公平
   ・サーバーの性能差を考慮しない

2. 最少接続(Least Connections)
   接続数:A=10, B=5, C=15 → B に分散
   ・現在の負荷に基づいて分散
   ・長時間接続に効果的

3. IP ハッシュ(IP Hash)
   同一 IP → 同一サーバー
   ・セッション維持が可能
   ・特定 IP 集中のリスク

4. 応答時間(Response Time)
   応答:A=50ms, B=200ms, C=100ms → A に分散
   ・最も応答の速いサーバーを選択
   ・リアルタイム負荷を反映

負荷分散のアプローチ

【レイヤー 4 負荷分散(トランスポート層)】

クライアント
    ↓
[ロードバランサー]
    │ TCP/UDP パケットを転送
    ├─→ サーバー A
    ├─→ サーバー B
    └─→ サーバー C

・IP アドレスとポート番号に基づく
・高速(パケットを深く検査しない)
・HTTP コンテンツに基づくルーティング不可
【レイヤー 7 負荷分散(アプリケーション層)】

クライアント
    ↓
[ロードバランサー]
    │ HTTP リクエストを検査
    │ /api/* → API サーバー群
    │ /static/* → 静的ファイルサーバー群
    ├─→ サーバー A(API)
    ├─→ サーバー B(静的)
    └─→ サーバー C(API)

・HTTP ヘッダー・URL・メソッドに基づく
・きめ細かなルーティングが可能
・SSL ターミネーション機能

グローバル負荷分散

【GSLB(Global Server Load Balancing)】

                    ユーザー
                /    |    \
               /     |     \
        東京 PoP  大阪 PoP  米国 PoP
           ↓        ↓        ↓
      DC-AP-1   DC-AP-2   DC-US-1

・DNS ベースの地理的分散
・ユーザーに最も近い PoP へ誘導
・災害時のフェイルオーバー
・CDN との連携

ネットワークセキュリティの基本

ファイアウォール

【ファイアウォールの役割】

信頼されたネットワーク(社内)
        │
    ┌───┴───┐
    │ FW    │ ← トラフィックを検査
    └───┬───┘
        │
信頼されていないネットワーク(インターネット)

【フィルタリング基準】
・送信元/宛先 IP アドレス
・ポート番号
・プロトコル(TCP/UDP)
・アプリケーション層の情報(次世代 FW)

セキュリティグループ

【クラウドのセキュリティグループ】

┌─────────────────────────┐
│  セキュリティグループ   │
│  (ステートフル FW)     │
├─────────────────────────┤
│ インバウンドルール:    │
│ ・TCP/80 (HTTP) 許可   │
│ ・TCP/443 (HTTPS) 許可 │
│ ・TCP/22 (SSH) 10.0.0.0/8 のみ│
├─────────────────────────┤
│ アウトバウンドルール:  │
│ ・全許可(デフォルト) │
└─────────────────────────┘
        ↓
    EC2 インスタンス

DDoS 対策

【DDoS 攻撃の種類と対策】

| 攻撃タイプ | 説明 | 対策 |
|-----------|------|------|
| **ボリューム型** | 帯域幅を枯渇(UDP フラッド)| CDN, Anycast, スケーリング |
| **プロトコル型** | 接続テーブルを枯渇(SYN フラッド)| SYN キューキット、レート制限 |
| **アプリケーション型** | アプリ処理を枯渇(HTTP フラッド)| WAF, レート制限、ボット検出 |

【DDoS 対策サービス】
・AWS Shield / AWS WAF
・Cloudflare
・Akamai Prolexic
・NS1

まとめ

コンピューターネットワークの核心:

  1. 階層モデル: OSI 7 階層、TCP/IP 4 階層で機能を分割
  2. トランスポート層: TCP(信頼性重視)と UDP(速度重視)
  3. ネットワーク層: IP アドレスとルーティングで経路制御
  4. アプリケーション層: HTTP/HTTPS が Web 通信を支える
  5. DNS: ドメイン名を IP アドレスに変換
  6. 負荷分散: 複数サーバーでスケーラビリティを確保
  7. セキュリティ: ファイアウォール、TLS、DDoS 対策

参考資料

免責事項 — 掲載情報は執筆時点のものです。料金・機能は変更される場合があります。最新情報は各公式サイトをご確認ください。