Abstraction Barriers Big and Small

Working on my HTTP server has required me to learn a little more about the technology that makes the web work. At the outset, I had only the vaguest notion of what a socket was, but once I saw a diagram of the TCP/IP layer model, it was clear—a socket is an abstraction. (More on the model here).

I was reminded right away of the diagram in Chapter 2.1 of SICP (the section on building a rational number arithmetic system). It’s not a coincidence: enforcing abstraction between layers is one reason the Internet and TCP/IP are such powerful tools. Any system that does anything interesting is necessarily composed of smaller parts. Whether they’re functions, objects, or sentences, the way they’re put together matters. But equally important is the way they interact, and how they’re separated. (Network protocols give good advice on this, too.)

Comments