2.

TCP/IP のトランスポート層とは:TCP / UDP の役割とポート番号の使い分け

編集
この記事の要点
  • トランスポート層は TCP/IP 4階層モデルにおける第3層(OSI 参照モデルでは第4層)
  • アプリ層と下位ネットワーク層の間で、エンドツーエンドの通信制御を担当する
  • 信頼性を優先する場合は TCP、リアルタイム性を優先する場合は UDP を選択する
  • 通信先のアプリはポート番号で識別され、IP アドレスとポート番号の組(ソケット)で一意に特定される

トランスポート層とは

トランスポート層は、TCP/IP の階層モデルにおいてアプリケーション層と下位のインターネット層(ネットワーク層)をつなぐ役割を担う層です。OSI 参照モデルでは第4層に位置づけられ、TCP/IP の 4階層モデルでは上から数えて第2層(下から数えて第3層)に相当します。「どのホストの、どのアプリに、どんな品質で届けるか」を制御するレイヤです。

階層モデルの中の位置づけ

TCP/IP 4階層OSI 7階層主なプロトコル
アプリケーション層第5〜7層HTTP / HTTPS / SMTP / DNS / FTP
トランスポート層第4層TCP / UDP
インターネット層第3層IP / ICMP / ARP
ネットワークインターフェース層第1〜2層Ethernet / Wi-Fi

トランスポート層が担う 4つの仕事

1. エンドツーエンドの通信

IP 層は「ホストからホスト」までしか面倒を見ません。トランスポート層は同じホスト内で動いている多数のアプリ(Web ブラウザ/メールクライアント/SSH)の中から「どのアプリ宛なのか」を識別する役目を担います。

2. ポート番号によるアプリの多重化

送信元と宛先のそれぞれに 16 ビット(0〜65535)のポート番号を割り当てることで、同じ IP アドレス上の複数アプリを区別します。代表的なウェルノウンポートは以下の通りです。

ポートプロトコル用途
20 / 21TCPFTP(データ/制御)
22TCPSSH
25TCPSMTP
53TCP/UDPDNS
80TCPHTTP
123UDPNTP(時刻同期)
443TCPHTTPS

3. 信頼性の確保(TCP)

TCP は「届いたか」「順番が正しいか」「壊れていないか」を保証します。3 ウェイハンドシェイクで接続を確立し、シーケンス番号と ACK で再送制御・順序制御・フロー制御を行います。

4. 軽量で高速な転送(UDP)

UDP は接続確立も再送もしない最小限のプロトコルで、ヘッダが 8 バイトと小さく遅延も小さいのが特徴です。リアルタイム性が要求される音声・動画ストリーミング、ゲームの通信、DNS の問い合わせなどで使われます。

TCP と UDP の比較

項目TCPUDP
接続方式コネクション型(3 ウェイハンドシェイク)コネクションレス
信頼性あり(再送・順序保証)なし
速度・オーバーヘッド遅い・大きい速い・小さい
ヘッダサイズ20 バイト〜8 バイト
用途HTTP / SMTP / SSH / FTPDNS / NTP / VoIP / 動画ストリーム

ソケット:IP アドレスとポートの組

送信元(src IP : src port)と宛先(dst IP : dst port)の 2 つのペア、合計 4 つの値で 1 つの TCP/UDP 通信は一意に識別されます。これを「ソケット」または「5 タプル(プロトコル含む)」と呼びます。同じサーバの 80 番ポートに対して何千ものブラウザから同時接続できるのは、クライアント側ポートがそれぞれ異なるためです。

動作確認に使えるコマンド

# 開いているポートを確認(Linux)
$ ss -tnl

# 特定ホストのポートが開いているかチェック
$ nc -zv example.com 443

# 通信を観察
$ tcpdump -nn -i eth0 port 80

関連記事

編集
Post Share
子ページ
  1. TCP
  2. UDP
同階層のページ
  1. アプリケーション層(第4層)
  2. トランスポート層
  3. インターネット層(第2層)
  4. ネットワークインターフェース層(リンク層)(第1層)

最近更新/作成されたページ