HTTP协议用于客户端和服务器之间的通讯,请求访问的一段是客户端,提供资源响应的一段是服务器端。html
HTTP通讯是采用请求应答的方式来进行的,客户端发出请求,服务器响应。若是没有客户端的请求,服务器端是不进行任何响应的。HTTP通讯机制是在一次完整的HTTP通讯过程当中,Web浏览器与Web服务器之间将完成下列4个步骤:浏览器
(1)创建TCP链接服务器
在HTTP工做开始以前,Web浏览器首先要经过网络与Web服务器创建链接,该链接是经过TCP /IP完成,这是在网络层进行的。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议创建以后才能,才能进行更层协议的链接,所以,首先要创建TCP链接,通常TCP链接的端口号是80。网络
(2)Web浏览器向Web服务器发送请求命令spa
一旦创建了TCP链接,Web浏览器就会向Web服务器发送请求命令,以下所示,其中GET表示请求服务的类型,随后的字符串/index.html指明了请求访问的资源对象,也叫作请求URI。最后的HTTP/1.1表示HTTP的版本号。综合来看,请求报文包括请求方法、请求URI、协议版本、可选的请求首部字段和内容实体。代理
GET /index.htm HTTP/1.1htm
Host:hackr.jp对象
(3)Web服务器应答ci
客户机向服务器发出请求后,服务器会客户机回送应答,以下所示。开头的HTTP/1.1表示服务器对应的版本号,接下来的200 OK表示请求处理的处理结果的状态码和缘由短语。接下来是响应首部字段。资源
HTTP/1.1 200 OK
Date:Tue ,10 July 2016 08:33:16 GMT
Content-Length:362
Conten-Type:text/html
<html>
……
(4)Web服务器关闭TCP链接
通常状况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP链接,而后若是浏览器或者服务器在其头信息加入了这行代码
Connection:keep-alive
TCP链接在发送后将仍然保持打开状态,因而,浏览器能够继续经过相同的链接发送请求。保持链接节省了为每一个请求创建新链接所需的时间,还节约了网络带宽。
在HTTP的请求服务类型主要有如下八种:
GET:获取资源
GET方法用来请求访问已经被URI识别的资源,具体的请求与响应的例子以下:
请求 |
GET /indexhtml HTTP/1.1 Host:www.hackr.jp |
响应 |
返回index.html的页面资源 |
POST:传输实体主体,具体的请求响应例子以下:
请求 |
POST /submit.cgi HTTP/1.1 Host:www.hackr.jp Content-Length:1560(1560字节的数据) |
响应 |
返回submit.cgi接收数据的处理结果 |
PUT:传输文件,具体的请求响应例子以下:
请求 |
PUT /example.html HTTP/1.1 Host:www.hackr.jp Content-type:text/html Content-Length:1560(1560字节的数据) |
响应 |
返回状态码 |
HEAD:得到保温首部
请求 |
HEAD /indexhtml HTTP/1.1 Host:www.hackr.jp |
响应 |
返回index.html有关的响应首部 |
DELETE:删除文件
请求 |
DELETE /example.html HTTP/1.1 Host:www.hackr.jp |
响应 |
返回状态码 |
OPTIONS:询问支持的方法
请求 |
OPTIONS* HTTP/1.1 Host:www.hackr.jp |
响应 |
HTTP/1.1 200 OK Allow:GET,POST,HEAD,OPTIONS (返回服务器支持的方法) |
TRACE:追踪路径
请求 |
TRACE HTTP/1.1 Host:www.hackr.jp Max-Forwards:2 |
响应 |
HTTP/1.1 200 OK Content-type:message/http Content-Length:1024
TRACE HTTP/1.1 Host:www.hackr.jp Max-Forwards:2 |
CONNECT:要求用隧道协议连接代理
请求 |
CONNECT proxy.hackr.jp:8080 HTTP/1.1 Host:proxy.hackr.jp |
响应 |
HTTP/1.1 200 OK(以后进入网络隧道) |