Definition TCP (Transmission Control Protocol)

When we want to connect to the Internet, we only need a couple of maneuvers to establish a connection between the router and the computer or the mobile terminal. No further steps are required, as network login is automatic, as is the assignment of an individual Internet address that you need to send and receive data. All this is possible through a series of protocols that are also known as the Internet protocol family. In this context, one of the oldest and most prominent members is the Transmission Control Protocol (TCP). Which stands for Transmission Control Protocol, and is used to determine how the devices gathered on the network should transmit their data.

History

The TCP protocol is a standardized data transmission agreement between different participants in a computer network. The history of this protocol dates back to 1973 when computer scientists Robert E. Kahn and Vinton G. Cerf published their first version as part of their research work. However, it took another eight years for it to become standardized with RFC 793. Many improvements and extensions have been taking place, although the core of the product remains unchanged. The current version, published in RFC 7323, is from 2014.

The current state of development of the TCP protocol makes it possible to establish a connection between two endpoints in a standard computer network that enables a mutual exchange of data. In this process, any data loss is detected and resolved, which is why it is considered a reliable protocol. Within the family of Internet protocols, TCP, together with UDP and SCTP, forms the group of transport protocols. Which, according to the OSI model, are located in the transport layer within the network architecture. As the TCP protocol gets combined in almost all cases with the Internet protocol (IP) and this connection forms the basis of the vast majority of local networks and network services, it is common to speak of the set of TCP / IP protocols. However, in actual reference is made to the Internet protocol family.

How exactly do the connections with the TCP protocol work?

The transmission control protocol allows the transmission of information in both directions. Therefore, computer systems that communicate using TCP can send and receive data simultaneously, as if it were a phone call. In this context, the primary transmission units that the protocol uses are segments (packets) that, apart from the usage data, can also contain control information and are limited to a size of 1500 bytes. The establishment and interruption of connections, which we can classify as terminal-to-terminal connections. As well as the transmission of data itself, is carried out by the TCP software in the network protocol stack of the corresponding operating system.

TCP software is activated by different network applications, such as network browsers or servers, through specific interfaces. Each connection, identified by two defined endpoints (client and server). In this context, which side plays the role of the client and which side of the server is indifferent. What matters is that the TCP software has an ordered pair of IP address and port (also called “2-tuple” or “socket”) at each endpoint.

Triple handshake

Establishing the TCP connection in detail

To set up a TCP connection, both endpoints must have a unique IP address (IPv4 or IPv6) and must have declared and enabled the desired port for data transmission. While the IP address functions as an identifying feature. The port are used by the operating system to assign connections to server and client applications.

The specific sequence to establish a connection with the TCP protocol is as follows:

In the first step, the client wishing to establish the connection sends an SYN packet or SYN segment (synchronize = “synchronize”) with a random and individual sequence number to the server. This number guarantees complete transmission in the right order (without duplicates).

When the server receives the segment, it confirms the connection establishment by sending an SYN-ACK (acknowledgment = “confirmation”) packet, including the client’s sequence number after adding 1. Also, it transmits a customer’s sequence number.

Finally, the client confirms the reception of the SYN-ACK segment by sending its ACK packet. Which in this case, has the server’s sequence number after adding 1. At this point, it can also transmit the first data to the server.