To really focus on the pieces of the request-processing puzzle, we need to look first at the deceptively simple and pretty picture and then zoom in on the ugly details. Let's consider an example where a client requests and receives data from a server. We won't assume anything about client/server proximity. In fact, we'll consider the worst case—that they're not in the same address space (like threads in a common program) and communicate over a network.
For this example, consider a client that makes a simple request of a server: Return all of the pizza restaurants in Chicago. Figure 6-1 represents the “pretty picture” view of this request. In contrast, Figure 6-2 illustrates the ugly details.