What Is TCP (Transmission Control Protocol)? [MiniTool Wiki]
What is TCP? This post will introduce TCP from four aspects. And since it is one of the main protocols of the Internet protocol suite, so if you want to know more information about other Internet protocols, you should go to the MiniTool website.
Related post: Full Guide to Fix DNS Server Unavailable in Windows 10
What is TCP’s definition? It is the abbreviation of the Transmission Control Protocol. Because it originated from the initial network implementation and complemented the Internet Protocol (IP), the entire suite is often called TCP/IP.
TCP offers reliable, ordered, and error-checked delivery of a stream of octets (bytes) between applications running on hosts that communicate over IP networks. Major Internet applications (such as e-mail, remote management, and file transfer) depend on TCP, which is part of the Transport Layer of the TCP/IP suite. SSL/TLS usually runs on top of TCP.
Related post: SSH VS SSL: Differences and Similarities Between Them
TCP is connection-oriented and can establish a connection between the client and server before sending data. Before establishing a connection, the server must be listening (passive open) for connection requests from the client. Three-way handshake (active open), retransmission, and error-detection can increase reliability but will extend the latency.
Applications that do not need reliable data stream service can use User Datagram Protocol (UDP), which provides connectionless datagram services that prioritize time over reliability. TCP uses a method to avoid network congestion.
However, TCP has some vulnerabilities, including denial of service, connection hijacking, TCP veto, and reset attacks. For network security, monitoring, and debugging, a packet sniffer can be used to intercept and log TCP traffic.
What is TCP’s network function? TCP provides communication services at the intermediate level between application programs and the Internet Protocol. It provides a host-to-host connection at the transport layer of the Internet model.
At the lower level of the protocol stack, due to network congestion, traffic load balancing, or unpredictable network behavior, IP packets may be lost, sent repeatedly, or out of order. TCP detects these problems, requests to retransmit lost data, rearranges out-of-order data, and even helps minimize network congestion to reduce the occurrence of other problems.
TCP is optimized for accurate delivery rather than timely delivery and will cause a long delay (a few seconds) when waiting for out-of-order messages or retransmission of lost messages. Therefore, it is not suitable for real-time applications.
TCP is a reliable stream delivery service that ensures that all bytes received are in the same order as the bytes sent. Because the transmission of data packets by many networks is unreliable, TCP uses a technique called positive acknowledgement with re-transmission to achieve this goal.
When IP handles the actual data transfer, TCP will track the segment - the message is divided into various units of data transmission for efficient routing through the network.
TCP and UDP use port numbers to identify the sending and receiving application endpoints on the host (commonly called Internet sockets). Each end of the TCP connection has an associated 16-bit unsigned port number (0-65535), reserved by the sending or receiving application.
The TCP packet that arrives through its socket is identified as belonging to a specific TCP connection, that is, a combination of source host address, source port, destination host address, and destination port. This means that the server computer can provide multiple services to multiple clients at the same time, as long as the client is responsible for initiating any simultaneous connections from different source ports to a target port.
Port numbers are divided into three categories: well-known, registered, and dynamic/private. Well-known ports are allocated by the Internet Assigned Numbers Authority (IANA) and are usually used by system-level or root processes. Well-known applications that run as servers and passively listen for connections usually use these ports.
End-user applications usually use the registered ports as temporary source ports when contacting the server, but they can also identify named services that have been registered by third parties. End-user applications can also use dynamic/private ports, but this is rare. Dynamic/dedicated ports do not contain any meaning beyond any specific TCP connection.
To learn more detailed information about TCP, read this post - Transmission Control Protocol.