可能大家对http都不陌生,在我们每次浏览网页的时候都会遇到它。可是我们都没有去注意过http真正做了什么?当然对于大多数人来说也不必去专注这个东西,但如果你是一个web开发人员,去了解和掌握http协议应该说是必不可少的。专业点讲http是一个协议,是一个应用层的协议,全称叫超文本传输协议(Hypertext Transfer Protocol)。通俗点讲http就是一个约定或者说是一个规范,需要通信双方(浏览器和服务器)都去遵守这个约定,如果有一方没有遵守这个约定,那么通信就会失败。
连接
当我们打开浏览器,输入网址准备浏览一个网页的时候,在不知不觉中http协议已经开始了。首先浏览器会根据你输入的网址向目标地址建立一个连接(TCP连接),连接成功之后,紧接着向目标地址发送一个请求(HTTP Request),这个请求需要遵守http协议标准,不然对方看不懂你想要什么东西。当服务端接受到请求之后,会分析你的请求,然后根据你的请求发送响应(HTTP Response)。最后浏览器把接收到的响应内容按照某种规范(比如html规范、css标准等)显示到屏幕上。整个过程如下图所示

这就是我们平时打开一个网站的时候,http在幕后所做的事情。整个过程可能进行的非常快,以至于我们都察觉不到,但这个过程是确确实实存在的。从这个过程中我们也可以知道,http的数据传输主要有两个阶段:请求(HTTP Request)和响应(HTTP Response)。下面就通过一个实例看一下这两个阶段的数据内容格式(报文格式)是什么样的。
HTTP Request 示例
我们以打开本站的主页http://domety.com/为例,通过Httpanalyzer来分析发送的HTTP Request内容
GET / HTTP/1.1 Accept: */* Accept-Language: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; TheWorld) Host: domety.com Connection: Keep-Alive
本文不打算对以上内容的含意进行解释,只是展示一下整个过程的概貌,详细内容将在后续文章进行说明。
HTTP Response 示例
接收到的响应内容如下
HTTP/1.1 200 OK Date: Mon, 18 Jan 2010 07:21:32 GMT Server: Apache/2 X-Powered-By: PHP/5.2.9 X-Pingback: http://domety.com/xmlrpc.php Expires: Wed, 11 Jan 1984 05:00:00 GMT Last-Modified: Mon, 18 Jan 2010 07:21:33 GMT Cache-Control: no-cache, must-revalidate, max-age=0 Pragma: no-cache Vary: Accept-Encoding,User-Agent Content-Encoding: gzip Content-Length: 8702 Keep-Alive: timeout=3, max=100 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Domety : 分享软件、互联网应用技巧以及开发技能</title> (......此处省略网页内容) </body> </html>
我们的浏览器在接收到以上内容之后,根据html规范对内容进行解析,然后显示到屏幕上,就是我们最终看到的网页

从上面的示例中我们可以看出,浏览器的工作原理就是发送和接收http数据,并对接受的数据进行解析。从这方面讲,理论上我们可以开发自己的浏览器……
抚顺房产
2010-01-19 星期二 21:05
vsweb
2010-01-20 星期三 17:43
Firn
2010-01-20 星期三 21:22