| この記事の要点 |
|
トランスポート層とは
OSI 参照モデルの第4層に位置する層で、送信端末から受信端末までエンドツーエンドの論理的な通信路を提供します。下位のネットワーク層がパケットを「届ける」役割なのに対し、トランスポート層は「届いたパケットを正しい順序で、抜けなく、正しいアプリに渡す」役割を担います。
OSI における位置づけ
| 層 | 名前 | 主な役割 | 代表プロトコル |
|---|---|---|---|
| L7 | アプリケーション層 | アプリ固有の通信 | HTTP, DNS, SMTP |
| L6 | プレゼンテーション層 | 表現形式・暗号化 | TLS |
| L5 | セッション層 | セッション管理 | NetBIOS, RPC |
| L4 | トランスポート層 | エンドツーエンドの信頼性確保 | TCP, UDP |
| L3 | ネットワーク層 | 経路選択(IP) | IP, ICMP |
| L2 | データリンク層 | 隣接ノード間転送 | Ethernet |
| L1 | 物理層 | 電気信号 | RJ-45, 光ファイバ |
主な機能
| 機能 | 意味 | 主に担うプロトコル |
|---|---|---|
| セグメント化 | 大きなデータを送受可能なサイズに分割(MSS 単位) | TCP |
| 順序制御 | シーケンス番号で受信側が並び替え | TCP |
| 再送制御 | ACK が来ない / 重複時に再送 | TCP |
| フロー制御 | 受信側の処理速度に合わせる(ウィンドウサイズ) | TCP |
| 輻輳制御 | ネットワークが混雑したら送信速度を下げる | TCP |
| 多重化 | ポート番号で複数の通信を識別 | TCP / UDP |
| 誤り検出 | チェックサム | TCP / UDP |
TCP と UDP の比較
| 項目 | TCP | UDP |
|---|---|---|
| コネクション | あり(3way ハンドシェイク) | なし |
| 信頼性 | 順序保証 / 再送あり | 保証なし |
| 速度 | 遅め(オーバーヘッド) | 速い |
| ヘッダ長 | 20〜60 バイト | 8 バイト |
| 主な用途 | HTTP/HTTPS、SSH、メール、DB | DNS、VoIP、動画ストリーミング、ゲーム、DHCP |
ポート番号で多重化する
1 台の端末上では複数のアプリが同時にネットワークを使います。トランスポート層はポート番号で「どのアプリ宛か」を識別します。
[ ブラウザ (TCP:54321) ] ──┐
[ メーラ (TCP:54322) ] ──┼─→ NIC ─→ ネットワーク
[ Slack (TCP:54323) ] ──┘
返信は宛先ポート番号で振り分け:
← TCP:54321 → ブラウザへ
← TCP:54322 → メーラへ
← TCP:54323 → Slack へ
代表的なポート番号
| ポート | プロトコル | 用途 |
|---|---|---|
| 20 / 21 | TCP | FTP(データ / 制御) |
| 22 | TCP | SSH |
| 25 | TCP | SMTP(メール送信) |
| 53 | TCP / UDP | DNS |
| 80 | TCP | HTTP |
| 443 | TCP / UDP | HTTPS / HTTP/3 (QUIC) |
| 3306 | TCP | MySQL |
| 5432 | TCP | PostgreSQL |
3way ハンドシェイク(TCP)
クライアント サーバ
│ ── SYN ──────→ │ ① 接続要求
│ ←─ SYN+ACK ── │ ② 応答
│ ── ACK ──────→ │ ③ 確認
│ │
│ データ通信 │
確認コマンド(Linux)
# 開いているソケット一覧
ss -tunap
# TCP の状態(ESTABLISHED, TIME_WAIT など)
ss -t state established
# 統計情報
netstat -s | head -50
TCP/IP モデルでの位置
実運用で使われている TCP/IP モデル(4層)でも、トランスポート層は OSI の第4層と同じ位置・同じ役割です。OSI と TCP/IP は層の数こそ違いますが、L4 = トランスポート層という対応関係は変わりません。アプリケーション層(HTTP, SMTP など)から見ると、トランスポート層は「確実に届けてくれる宅配便(TCP)」あるいは「速いが届かないこともある投げ込みポスト(UDP)」のようなAPI(ソケット)として現れます。
ソケット API という見え方
プログラマがトランスポート層を意識するのは、ふだんソケット API を通じてです。TCP なら socket() → connect() → send() / recv() → close()、UDP なら socket() → sendto() / recvfrom() → close() といった呼び出し列で、L4 が提供する「信頼性のある / なしのチャネル」を利用します。Python の socket モジュール、Go の net パッケージ、Node の net / dgram なども、最終的にはこのレイヤと話しています。
セグメント / データグラムという用語
トランスポート層が下位層に渡すデータの単位は、TCP では「セグメント」、UDP では「データグラム」と呼ばれます。ネットワーク層に降りるとこれが IP パケットに包まれ、さらにデータリンク層でフレーム化されてケーブル / 電波に乗ります。逆に受信側では、L2 → L3 でヘッダを剥がしていき、最終的にトランスポート層がセグメント / データグラムを正しいアプリケーション(ポート)に振り分けます。
QUIC(HTTP/3)の位置づけ
近年は HTTP/3 が QUIC(UDP の上の独自プロトコル)を採用しています。QUIC は UDP の上に「信頼性・順序保証・暗号化」を載せ直した新世代のトランスポート相当層で、TCP の Head-of-Line ブロッキング回避と TLS ハンドシェイクの短縮を実現しました。OSI モデル上は厳密には L4 でなく L4 と L5/L6 にまたがる扱いですが、役割としてはトランスポート層の進化形と考えると理解しやすいです。
関連
- 階層(レイヤ) — 親カテゴリ
- OSI参照モデル
- セッション層(第5層)
- ネットワーク層(第3層)
- TCP
- UDP
- ポート番号
子ページはありません
- アプリケーション層(第7層)
- プレゼンテーション層(第6層)
- セッション層(第5層)
- トランスポート層(第4層)
- ネットワーク層(第3層)
- データリンク層(第2層)
- 物理層(第1層)
人気ページ
- 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・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09