HTTP协议原理及重点分析
整个HTTP协议请求的工作流程如下:
1) 终端客户在web浏览器地址栏输入访问地址
2) Web浏览器请求DNS服务器把域名www.sohu.com 转换成web服务器的IP地址(DNS解析流程在下方讲解)
3) Web浏览器讲端口号(默认为80)从访问地址URL中解析出来
4) Web浏览器通过解析后的IP地址及端口号与web服务器之间建立一条TCP连接
5) 建立TCP连接后,web浏览器向web服务器发送一条HTTP请求报文(请求报文的内容格式及信息细节在下方讲解)
6) Web服务器相应并读取浏览器的请求信息,然后返回一条HTTP响应报文(响应报文的内容格式及信息细节在下方讲解)
7) Web服务器关闭HTTP连接,关闭TCP连接,web浏览器显示访问的网站内容
l HTTP协议位于OSI模型中的第7层应用层
l HTTP协议的重要应用是WWW服务
l DNS解析流程
网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能认识域名。我们无法记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出IP地址所对应的网页。
什么是DNS?
DNS( Domain NameSystem)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”,它的基本工作原理可用下图来表示。
l 请求报文的内容
一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成。
HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。
其中get实例:
GET /search?hl=zh-CN&source=hp&q=domety&aq=f&oq= HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint,
application/msword, application/x-silverlight, application/x-shockwave-flash, */*
Referer: <a href="http://www.google.cn/">http://www.google.cn/</a>
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: <a href="http://www.google.cn">www.google.cn</a>
Connection: Keep-Alive
Cookie: PREF=ID=80a06da87be9ae3c:U=f7167333e2c3b714:NW=1:TM=1261551909:LM=1261551917:S=ybYcq2wpfefs4V9g;
NID=31=ojj8d-IygaEtSxLgaJmqSjVhCspkviJrB6omjamNrSm8lZhKy_yMfO2M4QMRKcH1g0iQv9u-2hfBW7bUFwVh7pGaRUb0RnHcJU37y-
FxlRugatx63JLv7CWMD6UB_O_r
l HTTP相应报文
HTTP响应也由三个部分组成,分别是:状态行、消息报头、响应正文。
相应报文实例:
HTTP/1.1 200 OK
Date: Sat, 31 Dec 2005 23:59:59 GMT
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 122
<html>
<head>
<title>Wrox Homepage</title>
</head>
<body>
<!-- body goes here -->
</body>
</html>