Transmission Control Protocol. TCP was first described in 1974. The current version was defined in 1981 by RFC 793.

TCP provides reliable, ordered, and error-checked delivery data between applications running on computers (or other devices) communicating over an IP network.

Major Internet Applications such as the World Wide Web, email, remote administration, Internet banking and file transfer rely on TCP. It is best suited to applications where the most important thing is accuracy of the delivered data.

At the lower levels of the protocol stack, due to network congestion, traffic load balancing, or other unpredictable network behavior, IP packets may be lost, duplicated, or delivered out of order.

TCP detects these problems, requests retransmission of lost data, rearranges out-of-order data, and even helps minimize network congestion by reducing the sending speed when congestion is occurring, to reduce the occurrence of the other problems. It also sends at a speed that the receiver can cope with.

If the data still remains undelivered, its source is notified of this failure.

Once the TCP receiver has reassembled the sequence of bytes originally transmitted, it passes them to the receiving application. Thus, TCP abstracts the application’s communication from the underlying networking details.

It is not suited to real time data, such as audio and video, because all the chat between the sender and the receiver (sometimes called handshaking) takes time. It is especially slow over what are sometimes called Long Fat Networks – networks with a reasonably high data rate, but a long delay end to end. This can pose challenges when using FTP over TCP to send large media files.

See UDP, IP