TCP/IP

インターネット通信の基盤となるプロトコル群で、データの分割・送信・再組立を信頼性高く行う

ネットワーク
TCP/IP」の技術書を見る (6 冊) →

TCP/IP とは

TCP/IP は、インターネット通信の基盤となるプロトコル群の総称である。TCP (Transmission Control Protocol) がデータの信頼性ある転送を、IP (Internet Protocol) がパケットのルーティングを担当する。

4 層モデル

4 層モデルを以下にまとめる。

プロトコル例役割
アプリケーション層HTTP, DNS, SMTPアプリケーション間の通信
トランスポート層TCP, UDPエンドツーエンドの通信制御
インターネット層IP, ICMPパケットのルーティング
ネットワークインターフェース層Ethernet, Wi-Fi物理的なデータ転送

TCP vs UDP

TCP と UDP の違いを以下にまとめる。

観点TCPUDP
信頼性あり (再送、順序保証)なし (ベストエフォート)
接続コネクション型 (3-way handshake)コネクションレス
速度中程度 (オーバーヘッドあり)高速 (オーバーヘッド小)
用途HTTP, SSH, DB 接続DNS, 動画ストリーミング, ゲーム

3-way ハンドシェイク

3-way ハンドシェイクを図で示す。

クライアント → SYN → サーバー        (接続要求)
クライアント ← SYN+ACK ← サーバー    (要求受理)
クライアント → ACK → サーバー        (接続確立)

TCP 接続の確立に 1.5 RTT (Round Trip Time) かかる。TLS を加えるとさらに 1〜2 RTT 追加される。HTTP/3 (QUIC) は UDP 上で動作し、0-RTT で接続を確立できる。

パケットの流れ

データは送信時に各層でヘッダーが付与され、カプセル化される。アプリケーション層のデータに TCP ヘッダー (ポート番号、シーケンス番号) が付き、さらに IP ヘッダー (送信元・宛先 IP)、Ethernet ヘッダー (MAC アドレス) が付与されて物理層で送信される。受信側は逆順にヘッダーを剥がしてデータを取り出す。

アプリケーション: "Hello" (データ)
     TCP: セグメントに分割、シーケンス番号付与
     IP: 送信元/宛先 IP アドレスを付与、パケット化
     Ethernet: MAC アドレスを付与、フレーム化
     物理層: 電気信号/光信号で送信

AWS でのネットワーク

AWS でのネットワークを以下にまとめる。

サービス関連する TCP/IP の概念
VPCIP アドレス空間、サブネット
Security GroupTCP/UDP ポートのフィルタリング
ALBTCP コネクションの終端、HTTP/2
NLBTCP/UDP のレイヤー 4 ロードバランシング
CloudFrontTCP 接続の再利用、TLS 終端

よくあるトラブル

コネクション枯渇

Lambda から RDS に直接接続すると、同時実行数 × コネクション数が DB の上限を超える。RDS Proxy でコネクションプーリングする。

TIME_WAIT

TCP 接続を閉じた後、2 MSL (通常 60 秒) の間ポートが占有される。短時間に大量の接続を開閉するとポートが枯渇する。

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

この記事は役に立ちましたか?

関連用語

関連する記事