HTTP协议各个版本的介绍和特点
2013-05-16 21:42
459 查看
超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
HTTP/1.0与HTTP/1.1的区别:
Persistent Connection(持久连接)
HTTP1.0中,每对Request/Response都使用一个新的连接。
HTTP 1.1则支持Persistent Connection,并且默认使用persistent connection.
Host域
HTTP1.1 在Request消息头里头多了一个Host域,比如:
GET /index HTTP/1.1
Host: www.fesxp.com
HTTP1.0 则没有这个域,建立TCP连接的时候已经指定了IP地址。
HTTP1.0 默认一个IP地址只对应一个主机名,IP地址上只有一个host。
带宽优化:
HTTP/1.1中在请求消息中引入了range头域,它允许只请求资源的某个部分。在响应消息中Content-Range头域声明了返回的这部分对象的偏移值和长度。如果服务器相应地返回了对象所请求范围的内容,则响应码为206(Partial Content),它可以防止Cache将响应误以为是完整的一个对象。
请求消息中如果包含比较大的实体内容,但不确定服务器是否能够接收该请求(如是否有权限),此时若贸然发出带实体的请求,如果被拒绝也会浪费带宽。HTTP/1.1加入了一个新的状态码100(Continue)。客户端事先发送一个只带头域的请求,如果服务器因为权限拒绝了请求,就回送响应码401(Unauthorized);如果服务器接收此请求就回送响应码100,客户端就可以继续发送带实体的完整请求了。注意,HTTP/1.0的客户端不支持100响应码。
节省带宽资源的一个非常有效的做法就是压缩要传送的数据。Content-Encoding是对消息进行端到端(end-to-end)的编码,它可能是资源在服务器上保存的固有格式(如jpeg图片格式);在请求消息中加入Accept-Encoding头域,它可以告诉服务器客户端能够解码的编码方式。而Transfer-Encoding是逐段式(hop-by-hop)的编码,如Chunked编码。在请求消息中加入TE头 域用来告诉服务器能够接收的transfer-coding方式。
请求方法和状态码上的增加:
HTTP1.1增加了OPTIONS, PUT, DELETE, TRACE, CONNECT这些Request方法.
HTTP/1.0中只定义了16个状态响应码,对错误或警告的提示不够具体。HTTP/1.1引入了一个Warning头域,增加对错误或警告信息的描述。
在HTTP/1.1中新增了24个状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
内容协商:
为了满足互联网使用不同母语和字符集的用户,一些网络资源有不同的语言版本(如中文版、英文版)。HTTP/1.0定义了内容协商(contentnegotiation)的概念,也就是说客户端可以告诉服务器自己可以接收以何种语言(或字符集)表示的资源。例如如果服务器不能明确客户端需要何种类型的资源,会返回300(Multiple Choices),并包含一个列表,用来声明该资源的不同可用版本,然后客户端在请求消息中包含Accept-Language和Accept-Charset头域指定需要的版本。
状态码:
100~199:信息状态码,表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程
100(continue)继续发送
200~299:成功状态码,表示成功接收请求并已完成整个处理过程,常用200(OK)成功接收
300~399:重定向状态码,例如,请求的资源已经移动一个新地址,常用302、307和304
400~499:客户端的请求有错误,常用404(Not Found),403(Fobidden)
500~599:服务器端出现错误,常用 500
HTTP请求报文格式:
本文出自 “大工软院的技术生活” 博客,请务必保留此出处http://webcrawler.blog.51cto.com/3663163/1202149
HTTP/0.9
只接受GET一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持POST方法,因此客户端无法向服务器传递太多信息。HTTP/1.0
这是第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用,特别是在代理服务器中。HTTP/1.1
当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度。HTTP/1.0与HTTP/1.1的区别:
Persistent Connection(持久连接)
HTTP1.0中,每对Request/Response都使用一个新的连接。
HTTP 1.1则支持Persistent Connection,并且默认使用persistent connection.
Host域
HTTP1.1 在Request消息头里头多了一个Host域,比如:
GET /index HTTP/1.1
Host: www.fesxp.com
HTTP1.0 则没有这个域,建立TCP连接的时候已经指定了IP地址。
HTTP1.0 默认一个IP地址只对应一个主机名,IP地址上只有一个host。
带宽优化:
HTTP/1.1中在请求消息中引入了range头域,它允许只请求资源的某个部分。在响应消息中Content-Range头域声明了返回的这部分对象的偏移值和长度。如果服务器相应地返回了对象所请求范围的内容,则响应码为206(Partial Content),它可以防止Cache将响应误以为是完整的一个对象。
请求消息中如果包含比较大的实体内容,但不确定服务器是否能够接收该请求(如是否有权限),此时若贸然发出带实体的请求,如果被拒绝也会浪费带宽。HTTP/1.1加入了一个新的状态码100(Continue)。客户端事先发送一个只带头域的请求,如果服务器因为权限拒绝了请求,就回送响应码401(Unauthorized);如果服务器接收此请求就回送响应码100,客户端就可以继续发送带实体的完整请求了。注意,HTTP/1.0的客户端不支持100响应码。
节省带宽资源的一个非常有效的做法就是压缩要传送的数据。Content-Encoding是对消息进行端到端(end-to-end)的编码,它可能是资源在服务器上保存的固有格式(如jpeg图片格式);在请求消息中加入Accept-Encoding头域,它可以告诉服务器客户端能够解码的编码方式。而Transfer-Encoding是逐段式(hop-by-hop)的编码,如Chunked编码。在请求消息中加入TE头 域用来告诉服务器能够接收的transfer-coding方式。
请求方法和状态码上的增加:
HTTP1.1增加了OPTIONS, PUT, DELETE, TRACE, CONNECT这些Request方法.
HTTP/1.0中只定义了16个状态响应码,对错误或警告的提示不够具体。HTTP/1.1引入了一个Warning头域,增加对错误或警告信息的描述。
在HTTP/1.1中新增了24个状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
内容协商:
为了满足互联网使用不同母语和字符集的用户,一些网络资源有不同的语言版本(如中文版、英文版)。HTTP/1.0定义了内容协商(contentnegotiation)的概念,也就是说客户端可以告诉服务器自己可以接收以何种语言(或字符集)表示的资源。例如如果服务器不能明确客户端需要何种类型的资源,会返回300(Multiple Choices),并包含一个列表,用来声明该资源的不同可用版本,然后客户端在请求消息中包含Accept-Language和Accept-Charset头域指定需要的版本。
100~199:信息状态码,表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程
100(continue)继续发送
200~299:成功状态码,表示成功接收请求并已完成整个处理过程,常用200(OK)成功接收
300~399:重定向状态码,例如,请求的资源已经移动一个新地址,常用302、307和304
400~499:客户端的请求有错误,常用404(Not Found),403(Fobidden)
500~599:服务器端出现错误,常用 500
HTTP请求报文格式:
GET / HTTP/1.1 Host: www.fesxp.com Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.33 (KHTML, like Gecko) Chrome/27.0.1438.7 Safari/537.33 Accept-Encoding: gzip,deflate,sdch Accept-Language: zh-CN,zh;q=0.8 Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3 Cookie: PHPSESSID=e763b654190c7ec19321af078a22063aHTTP响应报文格式:
HTTP/1.1 200 OK Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Length: 13672 Content-Type: text/html Expires: Thu, 19 Nov 1981 08:52:00 GMT Server: Microsoft-IIS/7.0 X-Powered-By: PHP/5.2.6 X-Powered-By: ASP.NET Date: Fri, 17 May 2013 02:38:23 GMT Connection: close
本文出自 “大工软院的技术生活” 博客,请务必保留此出处http://webcrawler.blog.51cto.com/3663163/1202149
相关文章推荐
- HTTP协议各个版本的介绍和特点
- kafka0.8--0.11各个版本特性预览介绍
- kafka0.8--0.11各个版本特性预览介绍
- kafka0.8--0.11各个版本特性预览介绍
- OpenCV(2.3.1)版本各个组件的功能简单介绍
- 程序员软件开发最好的IDE集成工具eclipse各个版本的详细介绍。详细介绍,送给初学者的朋友
- Ubuntu各个版本的介绍
- kafka0.8--0.11各个版本特性预览介绍
- kafka0.8--0.11各个版本特性预览介绍
- kafka0.8--0.11各个版本特性预览介绍
- Linux、GUN/Linux、GUN、GPL以及各个发行版本详细介绍
- RichEdit 各个版本介绍
- kafka0.8--0.11各个版本特性预览介绍
- vs2008安装失败 以及各个版本的介绍!
- kafka0.8--0.11各个版本特性预览介绍
- iOS各个版本的特点
- kafka0.8--0.11各个版本特性预览介绍
- 【转载】Linux起源、GNU简介、发行版本介绍及特点
- 详尽介绍VISTA的各个版本
- RHCE课程-RH033Linux基础笔记一之Linux起源、GNU简介、发行版本介绍及特点