Transmission Control
Protocol
RFC:
793
The Transmission Control Protocol (TCP) is intended for
use as a highly reliable host-to-host protocol between hosts in packet-switched
computer communication networks, and in interconnected systems of such networks.
TCP and IP were developed by a
Department of Defense (DOD) research project to connect a number different
networks designed by different vendors into a network of networks (the "Internet").
It was initially successful because it delivered a few basic services that
everyone needs (file transfer, electronic mail, remote logon) across a very
large number of client and server systems. Several computers in a small department
can use TCP/IP (along with other protocols) on a single LAN. The IP component
provides routing from the department to the enterprise
network, then to regional networks, and finally to the global Internet.
On the battlefield a communications network will sustain damage, so the DOD
designed TCP/IP to be robust and automatically recover from any node
or phone line failure. This design allows the construction of very large networks
with less central management. However, because of the automatic recovery,
network problems can go undiagnosed and uncorrected for long periods of time.
As with all other communications protocol, TCP/IP is
composed of layers:
IP -
is responsible for moving packet of data from node to node. IP forwards each
packet based on a four byte destination address (the IP number).
The Internet authorities assign ranges of numbers to different
organizations. The organizations assign groups of their numbers to departments.
IP operates on gateway machines that move data from department
to organization to region and then around the world.
TCP
- is responsible for verifying the correct delivery of data from client
to server. Data can be lost in the intermediate network. TCP adds support
to detect errors or lost data and to trigger retransmission until the
data is correctly and completely received.
Protocol Layering
+---------------------+
| higher-level |
+---------------------+
| TCP
|
+---------------------+
| internet protocol |
+---------------------+
| communication network|
+---------------------+
Addresses
Each technology has its own convention for transmitting
messages between two machines within the same network. On a LAN, messages
are sent between machines by supplying the six byte unique identifier (the
"MAC" address). In an SNA network, every machine has Logical Units with their
own network address. DECNET, Appletalk, and Novell IPX all have a scheme for
assigning numbers to each local network and to each workstation attached to
the network.
On top of these local or vendor specific network addresses,
TCP/IP assigns a unique number to every workstation in the world. This "IP
number" is a four byte value that, by convention, is expressed by converting
each byte into a decimal number (0 to 255) and separating the bytes with a
period. For example, the PC Lube and Tune server is 130.132.59.234.
An organization begins by sending electronic mail to
Hostmaster@INTERNIC.NET requesting assignment of a network number. It is
still possible for almost anyone to get assignment of a number for a small
"Class C" network in which the first three bytes identify the network and
the last byte identifies the individual computer. The author followed this
procedure and was assigned the numbers 192.35.91.* for a network of computers
at his house. Larger organizations can get a "Class B" network where the
first two bytes identify the network and the last two bytes identify each
of up to 64 thousand individual workstations. Yale's Class B network is 130.132,
so all computers with IP address 130.132.*.* are connected through Yale.