| この記事の要点 |
|
トランスポート層とは
トランスポート層は、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 / 21 | TCP | FTP(データ/制御) |
| 22 | TCP | SSH |
| 25 | TCP | SMTP |
| 53 | TCP/UDP | DNS |
| 80 | TCP | HTTP |
| 123 | UDP | NTP(時刻同期) |
| 443 | TCP | HTTPS |
3. 信頼性の確保(TCP)
TCP は「届いたか」「順番が正しいか」「壊れていないか」を保証します。3 ウェイハンドシェイクで接続を確立し、シーケンス番号と ACK で再送制御・順序制御・フロー制御を行います。
4. 軽量で高速な転送(UDP)
UDP は接続確立も再送もしない最小限のプロトコルで、ヘッダが 8 バイトと小さく遅延も小さいのが特徴です。リアルタイム性が要求される音声・動画ストリーミング、ゲームの通信、DNS の問い合わせなどで使われます。
TCP と UDP の比較
| 項目 | TCP | UDP |
|---|---|---|
| 接続方式 | コネクション型(3 ウェイハンドシェイク) | コネクションレス |
| 信頼性 | あり(再送・順序保証) | なし |
| 速度・オーバーヘッド | 遅い・大きい | 速い・小さい |
| ヘッダサイズ | 20 バイト〜 | 8 バイト |
| 用途 | HTTP / SMTP / SSH / FTP | DNS / 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関連記事
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15