The TCP/IP reference model is a specification for a networking stack on a computer. It exists to provide a common ground for network developers. This allows easier interconnection of the different vendor supplied networks, reducing the cost of installing completely new networks in order for one to work with another.
The most popular implementation of the transport layer in the reference model is the Transmission Control Protocol (TCP). This is a connection-oriented protocol. Another popular implementation is the User Datagram Protocol (UDP), which is a connectionless protocol.
Both of these protocols have advantages and disadvantages. The two main aspects of the protocols make them useful in different areas. UDP is a connectionless protocol. UDP always assumes that the data was received correctly. The application layer above it looks after error detection and recovery. Even though UDP is unreliable, it is quite fast, and is useful for applications such as DNS [10] (Domain Name System), where speed is preferred over reliability. TCP on the other hand, is a reliable, connection oriented protocol. It looks after error detection and recovery. Retransmission of data is done automatically if a problem is detected. As a result of being more reliable, TCP is a slower protocol than UDP.
In recent years, with the explosion of the Internet, a need for a new specification arose. The current transport protocols were either too verbose or not reliable enough. A protocol was needed that was faster than TCP but more reliable than UDP. These protocols lie at either end of the scale in taking into account speed and reliability. TCP has reliability at the cost of speed, whereas UDP has speed at the cost of reliability. A standard was needed, that could allow the reliable transmission of data at a faster rate than the current TCP standard. This new protocol could reduce bandwidth and increase the speed of transmission of data that is very much needed at the moment.
TCP for Transactions (T/TCP) is envisioned as the successor to both TCP and UDP in certain applications. T/TCP is a transaction-oriented protocol, it is based on a minimum transfer of segments so it does not have the speed problems associated with TCP. By building on TCP, it does not have the unreliability problems associated with UDP.
With this in mind, RFC1379 [4] was published in November 1992. It discussed the concepts involved in extending the TCP protocol to allow for a transaction-oriented service, as opposed to a connection-oriented service for TCP and a connectionless service for UDP. Some of the main points that the RFC discussed was the bypassing of the 3-Way Handshake and the shortening of the TIME-WAIT state from 240 seconds to 12 seconds. T/TCP cuts out much of the unnecessary handshaking and error detection of the current TCP protocol and as a result increases the speed of connection, and reduces the bandwidth necessary. Eighteen months later, RFC1644 [3] was published, with the specification for Transaction TCP.
T/TCP has already been implemented in BSD Unix 4.2. This project implements the protocol in Linux and analyses the pros and cons of T/TCP in relation to the original TCP specification. As part of the testing of the protocol, an application is modified to allow for T/TCP use in order to assess the workload involved in adapting the applications.
Chapter 2 describes the TCP/IP reference model. This is the model used in the implementation of Linux, and indeed much of the Internet. T/TCP is a transport layer protocol that will fit into the model.
Chapter 3 gives an overview of UDP and TCP. These are transport layer protocols that were defined in the original TCP/IP reference model. Currently most applications use these protocols for network access. T/TCP sits alongside TCP and UDP in the transport layer and can be used as an alternative protocol by applications.
In chapter 4, the operation of T/TCP that differs from TCP is explained. The philosophy behind T/TCP and transactions is also explained.
Chapter 5 describes the Linux operating system in relation to the design and implementation of the networking stack. The working of this stack has to be modified to handle T/TCP.
Chapter 6 documents the ideas behind some of the decisions taken in the implementation of T/TCP for Linux while chapter 7 details the testing and analysis of the T/TCP protocol. The operation of this implementation is verified and the performance of the protocol in comparison to normal TCP is investigated. The protocol is then analysed and some problems described.
An application of T/TCP in the real world is explained in chapter 8. The World Wide Web is probably the most obvious implementation of T/TCP. With increased access to many people, some means of reducing network load has to be introduced. The impact T/TCP can have on the performance of the World Wide Web is described.