本节列举了一个普通的web事务的例子,以便显示HTTP是如果在客户端和服务器端程序之中进行交互的。
1.2.1 请求
考虑下面这个URL:http://hypothetical.ora.com:80/
浏览器这样来解释该URL:
http:// 表示使用了HTTP协议
hypothetical.ora,.com 访问网络上的一台机器,其主机名为hypothetical.ora.com
:80 访问该机器的80端口。该端口号在1到65535中都应该是有效的,当然,如果本项省略掉了,端口号就是HTTP的默认端口号,即80(假设所使用的是IPv4)
/ 在主机名和可选的端口号之后的所有内容,都是文件路径,本例中的文件路径是 /
于是浏览器使用HTTP协议连接了hypothetical.ora.com的80端口,并发出了如下的请求信息:
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)
Host: hypothetical.ora.com
Connection: Keep-Alive
让我们看一看上面这些信息都表达了什么含义。
1.请求信息中的第一行(GET/ HTTP/1.1)表示,请求服务器下的/目录(即根目录)下的文件。 HTTP/1.1是说明浏览器所使用的HTTP协议版本。
2.第二行告诉服务器,浏览器支持哪些种类的文件。
3.第三行表明英语是首选语言。头文件允许客户端定制一种或多种语言,服务器也拥有多语言的文件。
4.第四行表明只要采取gzip算法或是deflate算法来打包服务器的响应,客户端是知道如何解释该响应的。
5.第五行,使用User-Agent开头,客户端标识自己是Mozilla浏览器,4.0版本,运行在Windows NT的计算机上,括号中它提到,这其实是Microsoft的IE 5.01版。
6.第六行告诉服务器,它认为服务器的主机名是什么。