Computer networks primarily offer two types of services to the applications. They are
i) a reliable connection oriented service byte stream service –
- In this type of service, the network offers a reliable byte streamed logical pipe between the sending and the receiving computers (similar to a registered post service offered by the postal department).
- By reliability, it means that every byte/bit sent via. the logical pipe from the sender is guaranteed to be received a) in-order as it was sent b) without a single bit/byte loss and c) without corruption of a single bit/byte even though the data travels over an underlying unreliable and erroneous media.
- By byte-oriented, it means that the basic unit of transfer is a byte.
- TCP (transmission control protocol) is the primary reliable protocol provided by computer networks for applications.
ii) an unreliable message oriented best effort service –
- In this type of service, the network offers an unreliable best effort message oriented logical pipe (similar to the ordinary post service) between the source and the receiving computers.
- By best effort, it means that the network would try its best to deliver data between the end points, but it cannot provide a guaranteed assurance that every bit/byte sent by a sender is received intact at the receiver.
- By unreliable, it means that if data packets are lost due to the erroneous nature of the underlying transmission channels (wired/wireless telecommunication links), then the network would not make any effort to detect such losses and take appropriate corrective action.
- By message-oriented, it means that the basic unit of transfer is a sequence of variable length bytes termed as a message
- UDP (User Datagram protocol) is the primary unreliable best effort service protocol provided by computer networks for applications.
There are other variations of these two primary types like a message oriented reliable service (e.g. Streamed Control Transport Protocol (SCTP)), but this discussion confines to the two primary types.
The table given below lists out the differences between the two types of service described above:
Some of the points given in the above table are explained below:
- Flow control is the ability of the sender to dynamically control the sending rate/speed based on the receiver’s buffering/processing capability, so as to prevent loss of data at the receiver.
- Congestion control is the ability of the sender to control the sending rate/speed based on the underlying network’s bandwidth/processing capability (which may vary instantaneously), so as to prevent loss of data inside the network.
- Real time applications are those applications that cannot tolerate variable delays during transmission between the sending and the receiving computers. Examples are audio, video conferencing, voice transmissions etc.
- Non-Real time applications are those applications that are not affected by variable delays during transmission between the sending and the receiving computers. Examples are file transfer, email etc.