The definition of a protocol was "a set of rules governing the format, timing and error control of messages exchanged between communication entities in a network". This section examines the timing or flow control.

The encoded data can be sent using either parallel or serial transmission. Over long distances, though, the cost of providing multiple lines for transmitting a word at a time is prohibitive. Thus the data is normally transmitted one bit at a time - serial data transfer.

When the data transfer is serial there needs to be some method of recognising the start and finish of each character or block of data. This can be achieved by synchronous and asynchronous transmission.

When two parties are communicating, the receiver has to do something with the data blocks it is receiving. Occasions can arise when it has not completed its tasks before the next data block arrives or it may be that different blocks are sent by different routes and therefore arrive in the wrong order. Thus blocks require sequence numbers in order to ensure that the receiver can reconstruct the messages regardless of the order the blocks were received. The sequence numbers allow the receiver to identify to the transmitter any blocks that were corrupted during transmission. Yet if a substantial message, consisting of a large number of blocks is to be transmitted these sequence numbers could potentially get extremely large and thus require a large number of additional bits to be transmitted.

Therefore in order to limit the size of sequence numbers they can be incremented using an algorithm which enables them to cycle around a limited number of integers.

It is important to make sure a new block is not given the same sequence number as a previous block which has not been acknowledged. Obviously, since this also implies a limit on the storage requirements for blocks this restriction is handled by an appropriate flow control mechanism - two common methods are X-on/X-off and the window mechanism. 1