As we saw in the previous few chapters, two hosts in a network exchange bytes, either in a stream or in discrete packets. It is often up to a higher-level application to process those bytes to something that makes sense to the application. These applications define a new layer of protocol over the transport layer, often called application layer protocols. In this chapter, we will look into some of those protocols.
There are a number of important considerations for designing application layer protocols. An implementation needs to know at least the following details:
- Is the communication broadcast or point-to-point? In the first case, the underlying transport protocol must be UDP. In the second case, it can be either TCP or UDP.
- Does the protocol need a reliable transport? If yes, TCP is the only option. Otherwise, UDP might be suitable, too.
- Does the...