Transmission Control Protocol (TCP) is a connection-oriented, reliable delivery byte-stream transport layer protocol currently documented in IETFRFC 793 [1].
In the TCP/IP model, TCP provides an interface between a network layer below and an application layer above. Applications most often need stream-like connections to each other (e. g. the connection between a web browser and web server), whereas the design of the Internet Protocol does not immediately provide such streams but packages. This is why TCP exists: Applications send streams of 8-bitbytes to TCP for delivery onto the network and TCP delineates the byte stream into appropriately sized segments, usually defined by a maximum transmission unit (MTU) size used by the data link layer below.
While it is possible for a pair of end hosts to initiate a connection between themselves simultaneously, typically one end opens a socket and listens passively for a connection from the other. This is commonly referred to as a passive open, and it designates the server-side of a connection. The client-side of a connection initiates an active open by sending an initial SYN segment to the server as part of the 3-way handshake. The server-side should respond to a valid SYN request with a SYN/ACK. Finally, the client-side should respond to the server with an ACK, completing the 3-way handshake and connection establishment phase.
A 16-bit checksum, consisting of a one's complement sum of the contents of the TCP segment header and data, is computed by a sender, and included in a segment transmission. The TCP receiver recomputes the checksum on the received TCP header and data. If the receiver's computed checksum matches the received checksum, the segment is assumed to have arrived intact and without error.
The TCP checksum is a quite weak check by modern standards. Data Link Layers with a high probability of bit error rates may require additional link error correction/detection capabilities. If TCP was to be redesigned today, it would most probably have a 32-bit cyclic redundancy check specified as an error check instead of the current checksum. The weak checksum is partially compensated for by the common use of a CRC or better integrity check at layer 2, below both TCP and IP, such as is used in PPP or the Ethernet frame. However, this does not mean that the 16-bit TCP checksum is redundant: remarkably, surveys of Internet traffic have shown that software and hardware errors that introduce errors in packets between CRC-protected hops are common, and that the end-to-end 16-bit TCP checksum catches most of these simple errors. This is the end-to-end principle at work.
Acknowlegements for data sent, or lack of acknowlegements, are used by senders to implicity interpret network conditions between the TCP sender and receiver. Coupled with timers, TCP senders and receivers can alter the behavior of the flow of data. This is more generally referred to as flow control, congestion control and/or congestion avoidance. TCP uses a number of mechanisms to achieve both robustness and high performance. These mechanisms include the use of a sliding window, the slow-start algorithm, the congestion avoidance algorithm, the fast retransmit and fast recovery algorithms, and more. Enhancing TCP to reliably handle loss, minimize errors, manage congestion and go fast in very high-speed environments are ongoing areas of research and standards development.
Recently, a new protocol compatible with conventional TCP has been developed called FAST TCP (Fast Active queue management Scalable Transmission Control Protocol) by scientists at CALTECH. It uses up to 10 parallel routes to transmit data and can be thousands of times faster than traditional TCP.