RFC 793 - 传输控制协议 (TRANSMISSION CONTROL PROTOCOL)
- 状态: Internet Standard
- 发布日期: September 1981
- Stream: Legacy
- 废弃了: RFC761
- 被废弃: RFC9293
- 勘误: 无勘误
本备忘录的状态 (Status of this Memo)
本 RFC 为 DARPA 互联网社区规定了一项标准. DARPA 互联网上的主机应采用并实现此标准.
摘要 (Abstract)
传输控制协议 (Transmission Control Protocol, TCP) 旨在用作分组交换计算机通信网络中主机之间, 以及此类网络互联系统中的高可靠性主机到主机协议.
本文档描述了传输控制协议所执行的功能, 实现它的程序, 以及它与需要其服务的程序或用户的接口. TCP 提供面向连接的、可靠的字节流服务.
目录 (Table of Contents)
前言 (Preface)
1. 简介 (Introduction)
- 1. 简介
- 1.1 动机 (Motivation)
- 1.2 范围 (Scope)
- 1.3 关于本文档 (About This Document)
- 1.4 接口 (Interfaces)
- 1.5 操作 (Operation)
2. 设计哲学 (Philosophy)
- 2. 设计哲学
- 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. 功能规范
- 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 首部格式 (TCP Header Format)
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 关键特性 (Key TCP Features)
| 特性 | 描述 |
|---|---|
| 面向连接 (Connection-Oriented) | 通信前必须建立连接 (三次握手) |
| 可靠传输 (Reliable Transmission) | 确认、重传和排序机制 |
| 字节流 (Byte Stream) | 将数据视为连续的字节流 |
| 流量控制 (Flow Control) | 滑动窗口机制 |
| 拥塞控制 (Congestion Control) | 防止网络拥塞 |
| 全双工 (Full-Duplex) | 同时双向传输 |
连接状态 (Connection States)
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)
客户端 (Client) 服务端 (Server)
| |
| SYN (seq=x) |
|------------------------------->|
| |
| SYN-ACK (seq=y, ack=x+1) |
|<-------------------------------|
| |
| ACK (ack=y+1) |
|------------------------------->|
| |
| ESTABLISHED |
四次挥手 (Four-Way Handshake, 连接终止)
主动方 (Active Side) 被动方 (Passive Side)
| |
| FIN (seq=x) |
|------------------------------->|
| |
| ACK (ack=x+1) |
|<-------------------------------|
| |
| FIN (seq=y) |
|<-------------------------------|
| |
| ACK (ack=y+1) |
|------------------------------->|
| |
| CLOSED |
TCP 与 UDP 对比 (TCP vs UDP Comparison)
| 特性 | TCP | UDP |
|---|---|---|
| 连接 | 面向连接 | 无连接 |
| 可靠性 | 可靠 | 不可靠 |
| 顺序 | 保证顺序 | 不保证 |
| 速度 | 较慢 | 快速 |
| 开销 | 高 (20-60 字节首部) | 低 (8 字节首部) |
| 流量控制 | 有 | 无 |
| 拥塞控制 | 有 | 无 |
| 使用场景 | HTTP, FTP, 电子邮件 | 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 是互联网传输层的核心协议之一. 与 IP 协议共同构成 TCP/IP 协议栈的基础, 提供可靠的、面向连接的字节流服务, 是 HTTP, FTP, SMTP 等众多应用协议的基础.