跳到主要内容

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)

特性TCPUDP
连接面向连接无连接
可靠性可靠不可靠
顺序保证顺序不保证
速度较慢快速
开销高 (20-60 字节首部)低 (8 字节首部)
流量控制
拥塞控制
使用场景HTTP, FTP, 电子邮件DNS, 视频流, 游戏

  • 官方文本: 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 等众多应用协议的基础.