The Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols was developed as part of the research done by the Defense Advanced Research Projects Agency (DARPA). Later, TCP/IP was included with the Berkeley Software Distribution of UNIX.

The Internet protocols can be used to communicate across any set of interconnected networks. They are equally well suited for both LAN and WAN communication.

The TCP/IP Protocol Stack

The TCP/IP protocol stack maps closely to the OSI reference model in the lower layers. All standard physical and data-link protocols are supported

Application layer Application protocols exist for file transfer, e-mail, and remote login. Network management is also supported at the application layer.

Transport Layer Transport services allow users to segment and reassemble several upper-layer applications onto the same transport-layer data stream. The transport layer performs two functions:

  • Flow control provided by sliding windows
  • Reliability provided by sequence numbers and acknowledgments

Two protocols are provided at the transport layer: TCP and UDP . TCP is a connection-oriented, reliable protocol located in the transport layer of the TCP/IP Protocol Stack. UDP is a TCP/IP Transport Layer protocol designed for applications that provide their own error recovery process. It trades reliability for speed.

Internet Layer Several protocols operate at the TCP/IP Internet layer, which corresponds to the OSI network layer:

  • IP provides connectionless, best-effort delivery routing of datagrams. It is not concerned with the content of the datagrams. Instead, it looks for a way to move the datagrams to their destination.
  • ICMP provides control and messaging capabilities.
  • ARP determines the data link layer address for known IP addresses.
  • RARP determines network addresses when data link layer addresses are known.

TCP Connection Establishment
TCP is connection oriented, so it requires connection establishment before data transfer begins.

For a connection to be established or initialized, the two hosts must synchronize on each other&qt;&qt;s Initial Sequence Numbers (ISN) . Synchronization is done in an exchange of connection establishing segments carrying a control bit called SYN (for synchronize) and the initial sequence numbers. As a shorthand, segments carrying the SYN bit are also called "SYNs." Hence, the solution requires a suitable mechanism for picking an initial sequence number and a slightly involved handshake to exchange the ISNs.

Three-Way Handshake
The synchronization requires each side to send its own initial sequence number and to receive a confirmation of it in acknowledgement (ACK) from the other side. Each side must also receive the other side&qt;&qt;s initial sequence number and send a confirming ACK. This exchange is called the three-way handshake

TCP Simple Acknowledgment
The window size determines how much data the receiving station can accept at one time. With a window size of one, each segment must be acknowledged before another segment is transmitted, which results in inefficient use of bandwidth by the hosts.

Flow Control
To govern the flow of data between devices, TCP uses a flow control mechanism. The receiving TCP reports a "window" to the sending TCP. This window specifies the number of octets, starting with the acknowledgement number, that the receiving TCP is currently prepared to receive.

Window Sizes
TCP window sizes are variable during the lifetime of a connection. Each acknowledgement contains a window advertisement that indicates how many bytes the receiver can accept. TCP also maintains a congestion control window, which is normally the same size as the receiver&qt;&qt;s window, but is cut in half when a segment is lost (for example, when there is congestion). This approach permits the window to be expanded or contracted as necessary to manage bufferspace and processing. A larger window size allows more data to be processed.