What is Transmission Control Protocol (TCP)?
Transmission Control Protocol (TCP) is a standard that defines how to establish and maintain a network conversation by which applications can exchange data.
TCP works with the Internet Protocol (IP), which defines how computers send packets of data to each other. Together, TCP and IP are the basic rules that define the internet. The Internet Engineering Task Force (IETF) defines TCP in the Request for Comment (RFC) standards document number 793.
How Transmission Control Protocol works
TCP is a connection-oriented protocol, which means a connection is established and maintained until the applications at each end have finished exchanging messages.
TCP performs the following actions:
- determines how to break application data into packets that networks can deliver;
- sends packets to, and accepts packets from, the network layer;
- manages flow control;
- handles retransmission of dropped or garbled packets, as it's meant to provide error-free data transmission; and
- acknowledges all packets that arrive.
In the Open Systems Interconnection (OSI) communication model, TCP covers parts of Layer 4, the transport layer, and parts of Layer 5, the session layer.
When a web server sends an HTML file to a client, it uses the hypertext transfer protocol (HTTP) to do so. The HTTP program layer asks the TCP layer to set up the connection and send the file. The TCP stack divides the file into data packets, numbers them and then forwards them individually to the IP layer for delivery.
Although each packet in the transmission has the same source and destination IP address, packets may be sent along multiple routes. The TCP program layer in the client computer waits until all packets have arrived. It then acknowledges those it receives and asks for the retransmission of any it does not, based on missing packet numbers. The TCP layer then assembles the packets into a file and delivers the file to the receiving application.
TCP vs. UDP
This process of error detection, in which TCP retransmits and reorders packets after they arrive, can introduce latency in a TCP stream. Highly time-sensitive applications, such as voice over IP (VoIP), streaming video and gaming, generally rely on a transport process such as User Datagram Protocol (UDP), because it reduces latency and jitter by not reordering packets or retransmitting missing data.
UDP is classified as a datagram protocol, or connectionless protocol, because it has no way of detecting whether both applications have finished their back-and-forth communication. Instead of correcting invalid data packets, as TCP does, UDP discards those packets and defers to the application layer for more detailed error detection.
The header of a UDP datagram contains far less information than a TCP segment header. The UDP header also goes through much less processing at the transport layer in the interest of reduced latency.
What TCP is used for
TCP is used for organizing data in a way that ensures the secure transmission between the server and client. It guarantees the integrity of data sent over the network, regardless of the amount. For this reason, it is used to transmit data from other higher-level protocols that require all transmitted data to arrive.
Examples of these protocols include the following:
- Secure Shell (SSH), File Transfer Protocol (FTP), Telnet: For peer-to-peer file sharing, and, in Telnet's case, logging into another user's computer to access a file.
- Simple Mail Transfer Protocol (SMTP), Post Office Protocol (POP), Internet Message Access Protocol (IMAP): For sending and receiving email.
- HTTP: For web access.
These examples all exist at the application layer of the TCP/IP stack and send data downwards to TCP on the transport layer.
Why TCP is important
TCP is important because it establishes the rules and standard procedures for the way information is communicated over the internet. It is the foundation for the internet as it currently exists and ensures that data transmission is carried out uniformly, regardless of the location, hardware or software involved.
TCP is flexible and highly scalable, meaning new protocols can be introduced to it, and it will accommodate them. It is also nonproprietary, meaning no one person or company owns it.
Location in the TCP/IP stack
The TCP/IP stack is a model that represents how data is organized and exchanged over networks using the TCP/IP protocol. It depicts a series of layers that represent the way data is handled and packaged by a series of protocols as it makes its way from client to server and vice versa.
TCP exists in the transport layer with other protocols, such as UDP. Protocols in this layer ensure the error free transmission of data to the source, except for UDP because it has more limited error checking capability.
Like the OSI model, the TCP/IP stack is a conceptual model for data exchange standards. Data is repackaged at each layer based on its functionality and transport protocols.
Requests come down to the server through the stack, starting at the application layer as data. From there, the information is broken into packets of different types at each layer. The data moves the following ways:
- from the application to the transport layer, where it is sorted into TCP segments;
- to the internet layer where it becomes a datagram;
- to the network interface layer where it breaks apart again into bits and frames; and
- as the server responds, it travels up through the stack to arrive at the application layer as data.
TCP/IP vs. OSI model
The main difference between the TCP/IP model and OSI model is the level of specificity.
The OSI model is a more abstract representation of the way data is exchanged, and not specific to any protocol. It is a framework for general networking systems. The TCP/IP stack is more specific and comprises the dominant set of protocols used to exchange data.
The OSI model is abstract and based more on functionality, while the TCP/IP stack is concrete and protocol-based. Further, the OSI model has seven layers, whereas the TCP/IP model has only four.