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, so 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) [RFC793]. 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. It is up to the layer above it, the application layer, to look after error detection and recovery. Even though UDP is unreliable, it is quite fast, and is useful for applications such and DNS (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. 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 medium was needed between the two, that could allow the reliable transmission of data at a faster rate than the current TCP standard. This newer 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. T/TCP is a transaction oriented protocol, so it does not have the speed problems associated with TCP or the unreliability problems associated with UDP.
With this in mind, RFC1379 [RFC1379] 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 and as a result increases the speed of connection, and reduces the bandwidth necessary. Eighteen months later, RFC1644 [RFC1644] was published, with the specification for Transaction TCP.
T/TCP has already been implemented in BSD Unix 4.2, and this project will implement the protocol in Linux.