Application Layer
The first five chapters move data reliably from one machine to the matching port on another. But “delivered” is not the goal — what users want is a working service: opening a web page, sending an email, synchronising a file. This layer is where those concrete services are built.
This chapter picks three representative protocols. DNS solves the mapping from names to addresses; it is itself a distributed database, so the difference between recursive and iterative queries, the role of caching, and the risk of stale entries all matter. HTTP is the foundation of the Web, and you need to understand that it is stateless — which is exactly why cookies exist to supply a missing notion of “session” — as well as how head-of-line blocking in HTTP/1.1 gave rise to the multiplexing of HTTP/2. SMTP and POP3/IMAP contrast the two ways of accessing mail, “pushing” and “pulling”.
After this chapter you should be able to explain: why can a DNS query start at the root servers? If HTTP is stateless, how does a website “remember” you?
