From an email I sent to the Chugalug group:
I think actually knowing what's going on behind the scenes might be helpful, here's a few things to try. First is "host". Type "host www.flutterby.com", hit enter. Do the same thing for a few other sites. Note that "host flutterby.com", "host www.flutterby.com", "host www.flutterby.net" and "host flutterby.net" return the same address.
Now try talking HTTP directly (Yes, this really wows people when you web browse from a terminal without a browser...). Type:
telnet 66.18.53.209 80
Note that you can substitute "flutterby.com", "www.flutterby.com", "flutterby.net" or a number of other addresses in there, they all resolve to 66.18.53.209. That "80" out the end is the port you're connecting to, the default for HTTP. There are other ports where HTTP is often used but you have to specificy the port separately, you may see 631, for instance, when talking to CUPS.
When it connects, type:
GET / HTTP/1.1 Host: flutterby.com
And hit "enter" twice. It sends back a response which is of type "302" (4xx, as in 404, are "not found", 3xx are moved, with varying semantics, 2xx are "found and here's your document"), a "Location: ..." header with where you can find the document, and a sample document just in case your web browser doesn't know what to do with 3xx responses (And a whoops on my part, I really mean a 301 there, if you try to bookmark http://flutterby.com/ it should be telling your browser "no, he really means http://www.flutterby.com/". I should fix that. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html for a description of the different 3xx returns.).
So you see that the real document is at www.flutterby.com. You can do the same thing there:
telnet 66.18.53.209 80 GET / HTTP/1.1 Host: www.flutterby.com
"enter" twice and, sure enough, you get header information and my whole freakin' front page back.
If you just want the header information, you can send a HEAD request:
telnet 66.18.53.209 80 HEAD / HTTP/1.1 Host: www.flutterby.com
And you can request other documents off the server:
telnet 66.18.53.209 80 GET /archives/index.html HTTP/1.1 Host: www.flutterby.com
to mix it up a little, try that previous thing for a different host:
telnet 66.18.53.209 80 GET /archives/index.html HTTP/1.1 Host: www.flutterby.net
Note that "host www.flutterby.com" and "host www.flutterby.net" both resolve to 66.18.53.209, so the only way Apache can tell them apart is the "Host:" header that you're sending.