A Simple HTTP ExampleThe browser says:
GET / HTTP/1.0 Host: www.boutell.comAnd the server replies:
HTTP/1.0 200 OK Content-Type: text/html <head> <title>Welcome to Boutell.Com, Inc.!</title> </head> <body> The rest of Boutell.Com's home page appears here </body>The first line of the browser's request,
GET / HTTP/1.0, indicates that the browser wants to see the home page of the site, and that the browser is using version 1.0 of the HTTP protocol. The second line,
Host: www.boutell.com, indicates the website that the browser is asking for. This is required because many websites may share the same IP address on the Internet and be hosted by a single computer. The
Host:line was added a few years after the original release of HTTP 1.0 in order to accommodate this.
The first line of the server's reply,
HTTP/1.0 200 OK,
indicates that the server is also speaking version 1.0 of the
HTTP protocol, and that the request was successful. If the page
the browser asked for did not exist, the response would
HTTP/1.0 404 Not Found. The second line of the
Content-Type: text/html, tells the browser that
the object it is about to receive is a web page. This is how the
browser knows what to do with the response from the server.
If this line were
the browser would know to expect a PNG image file rather than a
web page, and would display it accordingly.
A modern web browser would say a bit more using the HTTP 1.1 protocol, and a modern web server would respond with a bit more information, but the differences are not dramatic and the above transaction is still perfectly valid; if a browser made a request exactly like the one above today, it would still be accepted by any web server, and the response above would still be accepted by any browser. This simplicity is typical of most of the protocols that grew up around the Internet.
Human Beings Can Speak HTTPIn fact, you can try being a web browser yourself, if you are a patient typist. If you are using Windows, click the Start menu, select "Run," and type "telnet www.mywebsitename.com 80" in the dialog that appears. Then click OK. Users of other operating systems can do the same thing; just start your own
telnetprogram and connect to your website as the host and 80 as the port number. When the connection is made, type:
GET / HTTP/1.0 Host: www.mywebsitename.comMake sure you press ENTER twice after the Host: line to end your HTTP headers. Your telnet program probably will not show you what you are typing, but after you press ENTER the second time, you should receive your website's home page in HTML after a short pause. Congratulations, you have carried out your very own simple HTTP transaction.
HTTP 1.1 DifferencesOriginally, web browsers made a separate HTTP request like this for each and every page, and for each and every image or other component of the page. While this is still often the case, most web servers and browsers now support HTTP 1.1 and can negotiate to keep the connection open and transfer all of the page components without hanging up and opening new connections. For the complete HTTP 1.1 specification, see the W3C Consortium's HTTP-related pages.
HTTP itself is "layered" on top of another protocol, TCP. For more information, see the article what is TCP/IP?
Got a LiveJournal account? Keep up with the latest articles in this FAQ by adding our syndicated feed to your friends list!