RFC 9293 - Transmission Control Protocol (TCP)
Published: August 2022
Status: Internet Standard
STD: 7
Author: W. Eddy (Ed.), MTI Systems
Obsoletes: RFC 793, 879, 2873, 6093, 6429, 6528, 6691
Updates: RFC 1011, 1122, 5961
Abstract
This document specifies the Transmission Control Protocol (TCP). TCP is an important transport-layer protocol in the Internet protocol stack, and it has continuously evolved over decades of use and growth of the Internet. Over this time, a number of changes have been made to TCP as it was specified in RFC 793, though these have only been documented in a piecemeal fashion. This document collects and brings those changes together with the protocol specification from RFC 793.
This document obsoletes RFC 793, as well as RFCs 879, 2873, 6093, 6429, 6528, and 6691 that updated parts of RFC 793. It updates RFCs 1011 and 1122, and it should be considered as a replacement for the portions of those documents dealing with TCP requirements. It also updates RFC 5961 by adding a small clarification in reset handling while in the SYN-RECEIVED state. The TCP header control bits from RFC 793 have also been updated based on RFC 3168.
Table of Contents
- 1. Purpose and Scope
- 2. Introduction
- 2.1 Requirements Language
- 2.2 Key TCP Concepts
- 3. Functional Specification
- 3.1 Header Format
- 3.2 Specific Option Definitions
- 3.3 TCP Terminology Overview
- 3.4 Sequence Numbers
- 3.5 Establishing a Connection
- 3.6 Closing a Connection
- 3.7 Segmentation
- 3.8 Data Communication
- 3.9 Interfaces
- 3.10 Event Processing
- 4. Glossary
- 5. Changes from RFC 793
- 6. Security Considerations
- 7. IANA Considerations
- 8. References
- 8.1 Normative References
- 8.2 Informative References
Appendices
- Appendix A. TCP Connection State Diagram
- Appendix B. TCP Requirement Summary
- Appendix C. TCP Verification
Related Resources
- Official Text: RFC 9293
- Official Page: RFC 9293 DataTracker
- Errata: RFC Editor Errata
- STD 7: This document is part of Internet Standard 7
Quick Reference
What is TCP?
TCP (Transmission Control Protocol) is a core transport-layer protocol in the Internet protocol stack, providing:
- Connection-Oriented - Establishes connection before communication
- Reliable Transmission - Ensures data arrives correctly
- Ordered Delivery - Receives data in the order sent
- Flow Control - Prevents receiver overload
- Congestion Control - Avoids network congestion
Core Features
- ✅ Three-Way Handshake - Connection establishment
- ✅ Sequence Number Mechanism - Ensures order and reliability
- ✅ Acknowledgment - Data arrival confirmation
- ✅ Timeout Retransmission - Handles packet loss
- ✅ Sliding Window - Flow control
- ✅ Congestion Control - Network stability
TCP vs UDP
| Feature | TCP | UDP |
|---|---|---|
| Connection | Connection-oriented | Connectionless |
| Reliability | Reliable | Unreliable |
| Ordering | Guaranteed | Not guaranteed |
| Speed | Slower | Faster |
| Overhead | Higher | Lower |
| Use Cases | HTTP, SMTP, FTP, SSH | DNS, Video streaming, Gaming |
Importance of RFC 9293
RFC 9293 vs RFC 793:
- RFC 793 (1981) - Original TCP specification
- RFC 9293 (2022) - Latest standard, consolidating 40 years of evolution
- Obsoletes RFC 793 and several updates
- Clarifies modern TCP implementation requirements
- Updates security and performance best practices
Major Improvements:
- Consolidates all TCP extensions and errata
- Clarifies must-support options
- Updates congestion control requirements
- Enhances security considerations
- Reflects modern network environment
Common TCP Ports
- HTTP: 80
- HTTPS: 443
- SMTP: 25
- FTP: 20, 21
- SSH: 22
- Telnet: 23
- POP3: 110
- IMAP: 143
Related RFCs:
- RFC 768 - UDP (User Datagram Protocol)
- RFC 791 - IP (Internet Protocol)
- RFC 5681 - TCP Congestion Control
- RFC 7323 - TCP Extensions (Window Scaling, Timestamps)
- RFC 7413 - TCP Fast Open
- RFC 8200 - IPv6 Specification