TCP/IP
インターネット通信の基盤となるプロトコル群で、データの分割・送信・再組立を信頼性高く行う
ネットワーク
TCP/IP とは
TCP/IP は、インターネット通信の基盤となるプロトコル群の総称である。TCP (Transmission Control Protocol) がデータの信頼性ある転送を、IP (Internet Protocol) がパケットのルーティングを担当する。
4 層モデル
| 層 | プロトコル例 | 役割 |
|---|---|---|
| アプリケーション層 | HTTP, DNS, SMTP | アプリケーション間の通信 |
| トランスポート層 | TCP, UDP | エンドツーエンドの通信制御 |
| インターネット層 | IP, ICMP | パケットのルーティング |
| ネットワークインターフェース層 | Ethernet, Wi-Fi | 物理的なデータ転送 |
TCP vs UDP
| 観点 | TCP | UDP |
|---|---|---|
| 信頼性 | あり (再送、順序保証) | なし (ベストエフォート) |
| 接続 | コネクション型 (3-way handshake) | コネクションレス |
| 速度 | 中程度 (オーバーヘッドあり) | 高速 (オーバーヘッド小) |
| 用途 | HTTP, SSH, DB 接続 | DNS, 動画ストリーミング, ゲーム |
3-way ハンドシェイク
クライアント → SYN → サーバー (接続要求)
クライアント ← SYN+ACK ← サーバー (要求受理)
クライアント → ACK → サーバー (接続確立)
TCP 接続の確立に 1.5 RTT (Round Trip Time) かかる。TLS を加えるとさらに 1〜2 RTT 追加される。HTTP/3 (QUIC) は UDP 上で動作し、0-RTT で接続を確立できる。
パケットの流れ
アプリケーション: "Hello" (データ)
↓ TCP: セグメントに分割、シーケンス番号付与
↓ IP: 送信元/宛先 IP アドレスを付与、パケット化
↓ Ethernet: MAC アドレスを付与、フレーム化
↓ 物理層: 電気信号/光信号で送信
AWS でのネットワーク
| サービス | 関連する TCP/IP の概念 |
|---|---|
| VPC | IP アドレス空間、サブネット |
| Security Group | TCP/UDP ポートのフィルタリング |
| ALB | TCP コネクションの終端、HTTP/2 |
| NLB | TCP/UDP のレイヤー 4 ロードバランシング |
| CloudFront | TCP 接続の再利用、TLS 終端 |
よくあるトラブル
コネクション枯渇
Lambda から RDS に直接接続すると、同時実行数 × コネクション数が DB の上限を超える。RDS Proxy でコネクションプーリングする。
TIME_WAIT
TCP 接続を閉じた後、2 MSL (通常 60 秒) の間ポートが占有される。短時間に大量の接続を開閉するとポートが枯渇する。
実務での活用方法は関連書籍にも詳しい。