Skip to main content

RFC 793 - TRANSMISSION CONTROL PROTOCOL

传输控制协议

发布日期: 1981年9月
状态: 互联网标准 (STD 7)
作者: Jon Postel (Information Sciences Institute, USC)
机构: DARPA Internet Program


Status of this Memo (本备忘录状态)

本RFC规范了DARPA互联网社区的传输控制协议 (TCP) 标准。本规范的实现主机必须 (must) 采用并实现此标准。


Abstract (摘要)

传输控制协议 (Transmission Control Protocol, TCP) 旨在作为高度可靠的主机到主机协议,用于分组交换计算机通信网络以及互连的此类网络系统。

本文档描述了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 (附录)


核心概念快速参考

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关键特性

特性说明
面向连接通信前必须建立连接 (三次握手)
可靠传输确认、重传、排序机制
字节流将数据视为连续的字节流
流量控制滑动窗口机制
拥塞控制避免网络拥塞
全双工同时双向传输

连接状态

CLOSED → LISTEN → SYN-RECEIVED → ESTABLISHED → FIN-WAIT-1 → ...

主要状态:
- CLOSED: 关闭
- LISTEN: 监听
- SYN-SENT: 已发送SYN
- SYN-RECEIVED: 已接收SYN
- ESTABLISHED: 已建立连接
- FIN-WAIT-1: 第一次FIN等待
- FIN-WAIT-2: 第二次FIN等待
- CLOSE-WAIT: 关闭等待
- CLOSING: 正在关闭
- LAST-ACK: 最后确认
- TIME-WAIT: 时间等待

三次握手 (Three-Way Handshake)

客户端                           服务器
| |
| SYN (seq=x) |
|------------------------------->|
| |
| SYN-ACK (seq=y, ack=x+1) |
|<-------------------------------|
| |
| ACK (ack=y+1) |
|------------------------------->|
| |
| ESTABLISHED |

四次挥手 (Four-Way Handshake)

主动方                           被动方
| |
| 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是互联网传输层的核心协议之一,与IP协议配合,构成了TCP/IP协议栈的基础。它提供了可靠的、面向连接的字节流服务,是HTTP、FTP、SMTP等众多应用协议的基础。