RFC 793 - TRANSMISSION CONTROL PROTOCOL
DARPAインターネットプログラム
プロトコル仕様
公開日: 1981年9月
ステータス: インターネット標準 (STD 7)
著者: Jon Postel (Information Sciences Institute, USC)
組織: DARPAインターネットプログラム
本メモの位置づけ (Status of this Memo)
このRFCは、DARPAインターネットコミュニティの伝送制御プロトコル (TCP) 標準を規定します。DARPAインターネット上のホストは、この標準を採用および実装することが期待されています。
概要 (Abstract)
伝送制御プロトコル (Transmission Control Protocol, TCP) は、パケット交換コンピュータ通信ネットワークおよびそのようなネットワークの相互接続システムにおけるホスト間で使用される高信頼性ホスト間プロトコルとして使用されることを目的としています。
本文書は、伝送制御プロトコルが実行すべき機能、それを実装するプログラム、およびそのサービスを必要とするプログラムまたはユーザーへのインターフェースについて説明します。TCPは、コネクション指向の、信頼性の高い、バイトストリームサービスを提供します。
目次 (Table of Contents)
前書き (Preface)
1. Introduction (序論)
- 1. Introduction (序論)
- 1.1 Motivation (動機)
- 1.2 Scope (範囲)
- 1.3 About This Document (本文書について)
- 1.4 Interfaces (インターフェース)
- 1.5 Operation (動作)
2. Philosophy (哲学)
- 2. Philosophy (哲学)
- 2.1 Elements of the Internetwork System (インターネットワークシステムの要素)
- 2.2 Model of Operation (動作モデル)
- 2.3 The Host Environment (ホスト環境)
- 2.4 Interfaces (インターフェース)
- 2.5 Relation to Other Protocols (他のプロトコルとの関係)
- 2.6 Reliable Communication (信頼性の高い通信)
- 2.7 Connection Establishment and Clearing (接続の確立とクリア)
- 2.8 Data Communication (データ通信)
- 2.9 Precedence and Security (優先度とセキュリティ)
- 2.10 Robustness Principle (堅牢性原則)
3. Functional Specification (機能仕様)
- 3. Functional Specification (機能仕様)
- 3.1 Header Format (ヘッダー形式)
- 3.2 Terminology (用語)
- 3.3 Sequence Numbers (シーケンス番号)
- 3.4 Establishing a Connection (接続の確立)
- 3.5 Closing a Connection (接続の終了)
- 3.6 Precedence and Security (優先度とセキュリティ)
- 3.7 Data Communication (データ通信)
- 3.8 Interfaces (インターフェース)
- 3.9 Event Processing (イベント処理)
付録 (Appendices)
コア概念クイックリファレンス (Core Concepts Quick Reference)
TCPヘッダー形式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
TCPの主要な特徴
| 特徴 | 説明 |
|---|---|
| コネクション指向 | 通信前に接続を確立する必要があります (3ウェイハンドシェイク) |
| 信頼性の高い伝送 | 確認応答、再送信、およびシーケンス処理メカニズム |
| バイトストリーム | データを連続したバイトストリームとして扱います |
| フロー制御 | スライディングウィンドウメカニズム |
| 輻輳制御 | ネットワークの輻輳を防止します |
| 全二重 | 同時双方向伝送 |
接続状態
CLOSED → LISTEN → SYN-RECEIVED → ESTABLISHED → FIN-WAIT-1 → ...
主な状態:
- CLOSED: 閉じている
- LISTEN: リスニング中
- SYN-SENT: SYN送信済み
- SYN-RECEIVED: SYN受信済み
- ESTABLISHED: 接続確立
- FIN-WAIT-1: 第1FIN待機
- FIN-WAIT-2: 第2FIN待機
- CLOSE-WAIT: クローズ待機
- CLOSING: クローズ中
- LAST-ACK: 最後の確認応答
- TIME-WAIT: 時間待機
3ウェイハンドシェイク (Three-Way Handshake)
クライアント サーバー
| |
| SYN (seq=x) |
|------------------------------->|
| |
| SYN-ACK (seq=y, ack=x+1) |
|<-------------------------------|
| |
| ACK (ack=y+1) |
|------------------------------->|
| |
| ESTABLISHED |
4ウェイハンドシェイク (接続終了)
アクティブ側 パッシブ側
| |
| FIN (seq=x) |
|------------------------------->|
| |
| ACK (ack=x+1) |
|<-------------------------------|
| |
| FIN (seq=y) |
|<-------------------------------|
| |
| ACK (ack=y+1) |
|------------------------------->|
| |
| CLOSED |
TCP vs UDP 比較
| 特徴 | TCP | UDP |
|---|---|---|
| 接続 | コネクション指向 | コネクションレス |
| 信頼性 | 信頼性あり | 信頼性なし |
| 順序 | 順序保証 | 保証なし |
| 速度 | 遅い | 速い |
| オーバーヘッド | 高 (20-60バイトヘッダー) | 低 (8バイトヘッダー) |
| フロー制御 | あり | なし |
| 輻輳制御 | あり | なし |
| 使用例 | HTTP, FTP, Email | DNS, ビデオストリーミング, ゲーム |
関連リソース (Related Resources)
- 公式テキスト: RFC 793 (TXT)
- 公式ページ: RFC 793 DataTracker
- 標準: STD 7
- 関連プロトコル:
- RFC 791 (IP) - ネットワーク層
- RFC 792 (ICMP) - 制御メッセージ
- RFC 768 (UDP) - 比較プロトコル
- RFC 2581 (TCP輻輳制御)
- RFC 5681 (TCP輻輳制御更新)
- RFC 7323 (TCP拡張)
重要な注意: TCPは、インターネットトランスポート層のコアプロトコルの1つです。IPプロトコルと組み合わせて、TCP/IPプロトコルスタックの基盤を形成します。HTTP、FTP、SMTPなどの多くのアプリケーションプロトコルの基礎となる、信頼性の高い、コネクション指向のバイトストリームサービスを提供します。