Recall that a socket is the interface between the application process and the transport-layer protocol. The application
at the sending side pushes messages through the door. At the other side of the door, the transport-layer protocol has
the responsibility of getting the message to the door at the receiving process.
Reliable Data Transfer
Some applications require fully reliable data transfer, that is, no data loss. In particular, a loss of file data,
or data in a financial transaction, can have devastating consequences. Other loss-tolerant applications,
most notably multimedia applications such as real-time audio/video or stored audio/video, can tolerate some amount of data
loss. In these multimedia applications, lost data might result in a small glitch in the played-out audio.video--not
a crucial impairment. The effects of such loss on appliaction quality, and actual amount of tolerable packet loss, will
depend strongly on the application and the coding scheme used.
Bandwidth
Some applications must be able to transmit data at a certain rate in order to be effective. While bandwith-sensitive
applications require a given amoount of bankwidth, elastic applications can make use of as much or as little
bandwidth as happens to be available.
Timing
The final service requirement is that of timing. Interactive real-time applications require thigt timing constraints
on data dilevery in order to be effective. For non-real-time applications, lower delay is always preferable to higher
delay, but no tight constraint is placed on the end-to-end delays.