preface

This paper briefly summarizes the process from the proposal of the first version of TCP to the generation of the TCP/IP protocol family.

TCPv1 put forward

Following the publication of the paper “A Protocol for Packet Network Intercommunication” in May 1974, Vinton Cerf published RFC675 in December 1974. In RFC, the author proposed the first version of TCP based on the suggestions of the paper and others, but at this time TCP was still short for Transmission Control Program. According to the paper, the goal of TCP is to provide a mechanism for data exchange between different networks, and to achieve this goal TCP decomposed into two sub-problems: to provide an end-to-end data transfer control program, and to provide a mechanism for addressing and routing between networks.

In RFC, the author describes the address specification of TCP, the definition of user interface, some upper-layer protocols used with TCP (including log, FTP, etc.), TCP packet header protocol format, and some implementation ideas of TCP (including three-way handshake, sliding window mechanism, I/O processing, packet segmentation, etc.).

Historic turning point: IEN2

In 1977, TCP had moved to version V2, and at this point the evolution of TCP came to an important turn, namely Jon Postel’s comments about TCP in August 1977, It was later known as IEN2 (Internet Engineering Note Number 2). In this comment Jon points out:

We are screwing up in our design of internet protocols by violating the principle of layering. Specifically we are trying to use TCP to do two things: serve as a host level end to end protocol, and to serve as an internet packaging and routing protocol. These two things should be provided in a layered and modular way. I suggest that a new distinct internetwork protocol is needed, and that TCP be used strictly as a host level end to end protocol.

In short, Jon Postel’s idea that TCP was trying to do too much, and that the two problems TCP was trying to solve should be split into two layers of protocols, was apparently taken up by TCP’s publishers, and led to the creation of the TCP/IP stack. Transmission Control Program (TCP) is split into two protocols: Internet Protol (IP) and Transmission Control Protocol (TCP) work at layer 3 and layer 4 of the TCP/IP stack (OSI 7-layer protocol), respectively. TCP then changed its name to “TCP/IP”. This split began with TCPv3 in 1978, with TCPv4, eventually published in 1980, being the first official standard, and the corresponding RFC was published by Jon Postel in 1981.

In addition, In IEN2, Jon Postel briefly describes the fields and formats (identifier, TOS, fragmentation, One important type of Service is TOS. The TOS field identifies how the upper-layer protocol wants the IP protocol to process the data carried by it to support the different requirements of different upper-layer protocols on transmission reliability and speed. The TOS specification and definition are not described in detail in IEN2, but are described and regulated in more detail in RFC791 in 1981.

The introduction of TCP/IP V4

The first formal TCP/IP protocol specification was described in detail in the RFCS of TCP/IP V4, published in 1981. It proposed the four-tier TCP/IP stack that came to be familiar to us. TCP worked at Layer 3 (transport layer), UDP at layer 3, IP at layer 2 (network layer), and ICMP. ICMP is the Internet Control Message Protocol. It runs on the IP Protocol and is used to send Control messages over IP.

In addition to the TCP/IP protocol stack, there is also an OSI seven-layer model, and there are many online comparisons between the two, which will not be listed in detail here. It is important to note that the OSI seven-tier model is really just a reference standard, and that what we actually encounter is more of a TCP/IP four-tier protocol.

TCP/IP protocol

The introduction of the IP protocol is located in RFC791. RCF791 describes the application scenario of the IP protocol: providing the necessary functionality for two hosts to exchange binary packets (called Internet Datagram) over different network connections. The IP protocol does not guarantee the availability of data transmission, nor does it provide common functions of end-to-end communication such as flow control (which are provided by TCP). It also standardizes the format of the IP data header that we are now familiar with.

To transfer data between networks, the IP protocol provides two important functions: Addressing and fragmentation. In addressing, there are three important concepts: name, Address, and routes. The IP protocol addresses address, while name and routes are handled by upper-layer and lower-layer protocols.

In RFC, IP addresses are defined as fixed-length (32bit) integers. IP addresses consist of two parts: network segment and host segment. According to the first few digits of an IP address, IP addresses are classified into ABC types.

Since packets are transmitted between different networks, it is possible to split packets into different segments due to network constraints. The protocol support required for segmentation is described in RFC in detail. These fields include packet identification, fragment Flag (DF and MF), and fragment offset.

There is a TTL field in the packet header of an IP packet, which identifies the remaining time of the packet. The purpose of this field is to allow the intermediate device to discard the expired packet. This field was originally designed to indicate the number of seconds remaining, but has now been changed to indicate how many routers a packet can still be forwarded, commonly known as the hop count.

TOS

RFC describes the COMPOSITION and values of the TOS field in detail. Upper-layer protocols can specify data priorities, latency, throughput, and reliability. The specific formats are not listed here.

TCP protocol

The RFC of TCP is RFC793, which describes that the goal of TCP is to provide reliable interprocess communication for hosts with different network connections. The familiar TCP header format is standardized in RFC. Addressing information only preserves source port and target port, and the information related to fragmentation is removed, focusing more on the realization of reliable transmission itself.

UDP protocol.

The formal specification of UDP was published along with the proposed TCP/IP protocol family, located in RFC768. RFC describes that UDP runs on the IP protocol and provides a simple message sending and receiving mechanism without the need for other unnecessary preparation steps. Therefore, UDP does not guarantee the order and reliability of messages.

UDP and TCP both run at layer 3 of the TCP/IP stack and are the two most familiar transport-layer protocols today. The specific comparison is not introduced here.

other

TCP/IP is not the only network protocol today, but it is definitely the most important one. TCP/IP’s success is unrepeatable for many different reasons, both technical (complexity, scalability, etc.) and historical (taking advantage of the Internet, open standards-setting and development processes, etc.).