I've been at two on-site interviews at Google, and that was the most exciting experience, especially the first time. Now I know how proper technical interviews should be done. In general, I realized how much more I'm able to do, compared to what I was doing at my place of work.
The general approach is to figure out how the candidate is able to think in a structured and analytical way. It doesn't matter if the candidate doesn't know something -- much more important is to see how he or she is developing the answers during the interview. Of course, the questions should also allow such freedom.
Also useful, is not to ask for definitions of something, but for difference: how A differs from B and why? Then you clearly see if the candidate understands what's behind it, even if they have forgotten some little details.
I absolutely agree that the main aim of an interview is to determine if a candidate is able to think in a structured and analytical way. I'm much more interested in talking about situations when you might choose UDP over TCP, rather than being able to recite the details of a particular HTTP specification
Besides, you can dig deeper in any direction, depending on the candidate profile. For a network engineer, understanding on the packet level is important. For a web programmer, the interaction between server and client is important (HTTP headers, MIME types etc, webserver scalability etc.). For a sysadmin, understanding of processes and interaction of applications and OS is important. All those can be derived just from a simple question -- what happens when you click on a link
besides, you can silently participate in the interview, or review the sound recording afterwards.