TCP/IP Explained

The Transmission Control Protocol (TCP) is a Connection Oriented, End-to-End Reliable protocol. It is not designed to interface with underlying network technologies since it does not provide any means to address other, distant, hosts. Similarly, it provides no methods for fragmentation or reassembly, nor for the transport through intermediate routers, or for specifying precedence. The Internet Protocol, as we have already seen, performs these tasks on behalf of the upper layers, in this case TCP. The protocol makes few assumptions as to the reliability of underlying protocols, making it general purpose in nature. [1] Upper layers, such as application processes, need not implement further mechanisms aimed at increasing reliability, since TCP dictates that all data sent be acknowledged within specified timeout periods. Where such acknowledgements fail to arrive, TCP will re-send data, thus overcoming the potentially unreliable nature of lower level protocols such as IP.

TCP is designed to support multiple network applications. We shall see in this chapter that the protocol, as described by RFC 793, provides a method of reliably interfacing with multiple application processes (such as Telnet, FTP, etc.) through the use of Sockets. [2] This makes TCP a reliable, process-to-process service, and is therefore in use as an interface between our application process and IP itself. An application will pass data to the TCP module for eventual transmission onto the local network, and ultimate delivery to a destination host. The TCP module will, in turn, call...