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 秒) の間ポートが占有される。短時間に大量の接続を開閉するとポートが枯渇する。

実務での活用方法は関連書籍にも詳しい。

関連用語