
The TCP/IP Guide - Version 3.0 (Contents) ` 838 _ © 2001-2005 Charles M. Kozierok. All Rights Reserved.
concept behind the protocol. Having TCP by itself handle both datagram transmissions and
routing (layer three functions) as well as connections, reliability and data flow management
(layer four functions) meant that TCP violated key concepts of protocol layering and
modularity. TCP forced all applications to use the layer four functions in order to use the
layer three functions. This made TCP inflexible, and poorly-suited to the needs of applica-
tions that only need the lower-level functions and not the higher-level ones.
As a result, the decision was made to split TCP into two: the layer four functions were
retained, with TCP renamed the Transmission Control Protocol (as opposed to Program).
The layer three functions became the Internet Protocol. This split was finalized in version 4
of TCP, and so the first IP was given “version 4” as well, for consistency. Version 4 of TCP
was defined in RFC 793, Transmission Control Protocol
, published September 1981, and is
still the current version of the standard.
Even though it is more than 20 years old and is the first version most people have ever
used, version 4 was the result of several years work and many earlier TCP versions tested
on the early Internet. It is therefore a very mature protocol for its age. A precocious protocol,
you could say. (To be fair, many additional features and modifications to how TCP works
have been described in other standards, rather than upgrading the main document.)
Overview of TCP Characteristics and Operation
TCP is a full-featured transport layer protocol that provides all the functions needed by a
typical application for the reliable transportation of data across an arbitrary internetwork. It
provides transport-layer addressing for application processes in the form of TCP ports, and
allows these ports to be used in establishing connections between machines. Once connec-
tions have been created, data can be passed bidirectionally between two devices.
Applications can send data to TCP as a simple stream of bytes, and TCP takes care of
packaging and sending the data as segments that are packaged into IP datagrams. The
receiving device's TCP implementation reverses the process, passing up to the application
the stream of data originally sent.
TCP includes an extensive set of mechanisms to ensure that data gets from source to desti-
nation reliably, consistently and in a timely fashion. The key to its operation in this regard is
the sliding window acknowledgement system, which allows each device to keep track of
which bytes of data have been sent and to confirm receipt of data received from the other
device in the connection. Unacknowledged data is eventually retransmitted automatically,
and the parameters of the system can be adjusted to the needs of the devices and the
connection. This same system also provides buffering and flow control capabilities between
devices, to handle uneven data delivery rates and other problems.
The inclusion of so many capabilities in TCP maximizes the likelihood that just about any
application requiring connection-oriented reliable data delivery will be satisfied by the
protocol. This is a primary goal of TCP, as it means that higher-layer applications don't
individually have to provide these common functions. TCP is the most widely used TCP/IP
transport protocol, employed by the majority of conventional message-passing applications.