メインコンテンツまでスキップ

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 比較

特徴TCPUDP
接続コネクション指向コネクションレス
信頼性信頼性あり信頼性なし
順序順序保証保証なし
速度遅い速い
オーバーヘッド高 (20-60バイトヘッダー)低 (8バイトヘッダー)
フロー制御ありなし
輻輳制御ありなし
使用例HTTP, FTP, EmailDNS, ビデオストリーミング, ゲーム

  • 公式テキスト: 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などの多くのアプリケーションプロトコルの基礎となる、信頼性の高い、コネクション指向のバイトストリームサービスを提供します。