Transport Layer Standards

Transport services are defined by the ISO 8072 and CCITT X.214 standards. ISO 8073 and CCITT X.224 define the transport protocol, and were
the basis of the descriptions in Section 5.2. Below we will look at TCP- a de facto
transport layer standard that has gained considerable acceptance in the industry.

TCP

The Transmission Control Protocol (TCP) originated in ARPANET, and was designed to cope with Type C networks. Consequently, the CCITT Class 4 protocol
has borrowed many of its concepts. TCP sits directly on top of IP and
is well suited to internetworking. The combination is commonly referred to as TCP/IP.

TCP accepts arbitrary size messages from a service user and, if necessary, segments them into smaller blocks. The block is constructed in two stages. First, a TCP header is added to user data; this header is essentially a transport-layer-style header. Next, a datagram header is added to the result to prepare it for a datagram network service.

Given the unreliable network service expectations of TCP (Type C), blocks may be corrupted, lost, duplicated, or out of sequence. TCP uses sequence numbers and
resequences blocks when necessary. Unlike other protocols, sequencing is performed
on an octet rather than block basis. The sequence numbers for the octets in a block are
determined by the Sequence Number and the Total Length fields. Flow control is also
octet-oriented. It is based on a credit-style sliding window, where the window size
determines how many octets may be transmitted.

Corrupted and lost blocks are retransmitted (the T1 timer is used for detecting lost blocks). Delayed duplicate control blocks for establishing connections are dealt with
using the three-way handshake method. In this method, to establish a connection
between A and B, when A requests a connection and receives a confirmation from B,
it must acknowledge (and therefore finalize) the connection as intended. Should B
receive a delayed duplicate connection request and confirm it, A will know that this is
due to a duplicate message and reject the connection on that basis.