Internet Engineering Task Force W. Eddy Internet-Draft MTI Systems Obsoletes: 793 (if approved) A. Oppermann Intended status: Standards Track Expires: April 24, 2014 October 21, 2013 Transmission Control Protocol Specification draft-eddy-rfc793bis-00 Abstract This document specifies the Internet's Transmission Control Protocol (TCP). TCP is an important transport layer protocol in the Internet stack, and has continuously evolved over decades of use and growth of the Internet. In this time, a number of changes have been made to TCP as it was specified in RFC 793, though these are only 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 and several other RFCs (TODO: list actual RFCs). Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [1]. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on April 24, 2014. Copyright Notice Eddy & Oppermann Expires April 24, 2014 [Page 1] Internet-Draft TCP Specification October 2013 Copyright (c) 2013 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. This document may contain material from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008. The person(s) controlling the copyright in some of this material may not have granted the IETF Trust the right to allow modifications of such material outside the IETF Standards Process. Without obtaining an adequate license from the person(s) controlling the copyright in such materials, this document may not be modified outside the IETF Standards Process, and derivative works of it may not be created outside the IETF Standards Process, except to format it for publication as an RFC or to translate it into languages other than English. Table of Contents 1. Purpose and Scope . . . . . . . . . . . . . . . . . . . . . . 2 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Functional Specification . . . . . . . . . . . . . . . . . . 3 3.1. Segment Format . . . . . . . . . . . . . . . . . . . . . 3 3.2. State Machine . . . . . . . . . . . . . . . . . . . . . . 4 3.3. Event Processing . . . . . . . . . . . . . . . . . . . . 4 4. Changes from RFC 793 . . . . . . . . . . . . . . . . . . . . 4 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 4 6. Security Considerations . . . . . . . . . . . . . . . . . . . 5 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 5 7.1. Normative References . . . . . . . . . . . . . . . . . . 5 7.2. Informative References . . . . . . . . . . . . . . . . . 5 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 5 1. Purpose and Scope In 1983, RFC 793 [2] was released, documenting the Transmission Control Protocol (TCP), and replacing earlier specifications for TCP that had been published in the past. Eddy & Oppermann Expires April 24, 2014 [Page 2] Internet-Draft TCP Specification October 2013 Since that time, TCP has been implemented many times, and has been used as a transport protocol for numerous applications on the Internet. For several decades, RFC 793 plus a number of other documents have combined to serve as the specification for TCP [3]. Over time, errata have been identified on RFC 793, as well as deficiencies in security, performance, and other aspects. A number of enhancements has grown and been documented separately. The purpose of this document is to bring together all of the IETF Standards Track changes that have been made to the TCP specification and adopt them into an update of the RFC 793 protocol specification. In addition to the protocol specification that descibes the TCP segment format, generation, and processing rules that are to be implemented in code, RFC 793 and other updates also contain informative and descriptive text for human readers to understand aspects of the protocol design and operation. This document does not attempt to alter or update those parts of RFC 793, and is focused only on updating the normative protocol specification. 2. Introduction RFC 793 contains a discussion of the TCP design goals and provides examples of its operation, including examples of connection establishment, closing connections, and retransmitting packets to repair losses. This document describes the functionality expected in modern implementations of TCP, and replaces the protocol specification in RFC 793. It does not replicate or attempt to update the examples and other discussion in RFC 793. Other documents are referenced to provide explanation of the theory of operation, rationale, and detailed discussion of design decisions. This document only focuses on the normative behavior of the protocol. TODO: describe the subsequent structure of the document to-be (e.g. will it follow the newtcp BSD implementation?), and mention that a list of changes from RFC 793 will be kept in the final section 3. Functional Specification TODO 3.1. Segment Format TODO Eddy & Oppermann Expires April 24, 2014 [Page 3] Internet-Draft TCP Specification October 2013 3.2. State Machine TODO 3.3. Event Processing TODO 4. Changes from RFC 793 TODO: Incomplete list of changes - these need to be added to and made more specific, as the document proceeds: 1. incorporate the accepted errata 2. incorporate 1122 additions 3. point to major additional docs like 1323bis and 5681 4. incorporate relevant parts of 3168 (ECN) 5. incorporate 6093 (urgent pointer) 6. incorporate 6528 (sequence number) 7. incorporate Fernando's new number-checking fixes (if past the IESG in time) 8. point to PMTUD? 9. point to 5461 (soft errors) 10. mention 5961 state machine option 11. mention 6161 (reducing TIME-WAIT) 12. incorporate 6429 (ZWP/persist) 13. incorporate 6691 (MSS) 5. IANA Considerations This memo includes no request to IANA. Existing IANA registries for TCP parameters are sufficient. TODO: check whether entries pointing to 793 and other documents obsoleted by this one should be updated to point to this one instead. Eddy & Oppermann Expires April 24, 2014 [Page 4] Internet-Draft TCP Specification October 2013 6. Security Considerations TODO 7. References 7.1. Normative References [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. 7.2. Informative References [2] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, September 1981. [3] Duke, M., Braden, R., Eddy, W., Blanton, E., and A. Zimmermann, "A Roadmap for Transmission Control Protocol (TCP) Specification Documents", draft-ietf-tcpm-tcp- rfc4614bis-00 (work in progress), August 2013. Authors' Addresses Wesley M. Eddy MTI Systems US Email: wes@mti-systems.com Andre Oppermann Email: andre@freebsd.org Eddy & Oppermann Expires April 24, 2014 [Page 5]