蜜果私塾:http协议学习和总结系列…
来源:互联网 发布:金牛奇迹mac版下载 编辑:程序博客网 时间:2024/04/29 19:26
2. 协议详解篇
2.1 HTTP/1.0和HTTP/1.1的比较
RFC1945定义了HTTP/1.0版本,RFC 2616定义了HTTP/1.1版本。
笔者在blog上提供了这两个RFC中文版的下载地址。
RFC1945下载地址:
http://www.blogjava.net/Files/amigoxie/RFC1945(HTTP)中文版.rar
RFC2616下载地址:
http://www.blogjava.net/Files/amigoxie/RFC2616(HTTP)中文版.rar
2.1.1建立连接方面
HTTP/1.0 每次请求都需要建立新的TCP连接,连接不能复用。HTTP/1.1 新的请求可以在上次请求建立的TCP连接之上发送,连接可以复用。优点是减少重复进行TCP三次握手的开销,提高效率。
注意:在同一个TCP连接中,新的请求需要等上次请求收到响应后,才能发送。
2.1.2Host域
HTTP1.1在Request消息头里头多了一个Host域, HTTP1.0则没有这个域。
Eg:
2.1.3日期时间戳
(接收方向)
无论是HTTP1.0还是HTTP1.1,都要能解析下面三种date/time stamp:
Sunday,
Sun
HTTP1.0要求不能生成第三种asctime格式的date/time stamp;
HTTP1.1则要求只生成RFC1123(第一种)格式的date/time stamp。
2.1.4状态响应码
状态响应码100 (Continue)状态代码的使用,允许客户端在发request消息body之前先用request header试探一下server,看server要不要接收request body,再决定要不要发request body。
客户端在Request头部中包含
另外在HTTP/1.1中还增加了101、203、205等等性状态响应码
2.1.5请求方式
HTTP1.1增加了OPTIONS, PUT,DELETE, TRACE, CONNECT这些Request方法.
2.2 HTTP请求消息
2.2.1请求消息格式
请求消息格式如下所示:
请求行
通用信息头|请求头|实体头
CRLF(回车换行)
实体内容
其中“请求行”为:请求行 = 方法 [空格] 请求URI [空格] 版本号 [回车换行]
请求行实例:
Eg1:
POST http://192.168.2.217:8080/index.jspHTTP/1.1
HTTP请求消息实例:
Accept:
Accept-Language:
Accept-Encoding:
If-Modified-Since:
If-None-Match:
User-Agent:
Host:
Connection:
2.2.2请求方法
q
q
q
q
q
q
q
q
2.3 HTTP响应消息
2.3.1响应消息格式
HTTP响应消息的格式如下所示:
状态行
通用信息头|响应头|实体头
CRLF
实体内容
其中:状态行 = 版本号 [空格] 状态码 [空格] 原因 [回车换行]
状态行举例:
Eg1:
ETag:
Last-Modified:
Content-Type:
Content-Length:
Date:
Server:
2.3.2http的状态响应码
2.3.2.1 1** :请求收到,继续处理
100——客户必须继续发出请求
101——客户要求服务器根据请求转换HTTP协议版本
2.3.2.2 2** :操作成功收到,分析、接受
200——交易成功
201——提示知道新文件的URL
202——接受和处理、但处理未完成
203——返回信息不确定或不完整
204——请求收到,但返回信息为空
205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件
206——服务器已经完成了部分用户的GET请求
2.3.2.3 3** :完成此请求必须进一步处理
300——请求的资源可在多处得到
301——删除请求数据
302——在其他地址发现了请求数据
303——建议客户访问其他URL或访问方式
304——客户端已经执行了GET,但文件未变化
305——请求的资源必须从服务器指定的地址得到
306——前一版本HTTP中使用的代码,现行版本中不再使用
307——申明请求的资源临时性删除
2.3.2.4 4** :请求包含一个错误语法或不能完成
400——错误请求,如语法错误
401——未授权
HTTP 401.1 - 未授权:登录失败
HTTP 401.2 -未授权:服务器配置问题导致登录失败
HTTP 401.3 -ACL 禁止访问资源
HTTP 401.4 -未授权:授权被筛选器拒绝
HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败
402——保留有效ChargeTo头响应
403——禁止访问
HTTP 403.1 禁止访问:禁止可执行访问
HTTP 403.2 -禁止访问:禁止读访问
HTTP 403.3 -禁止访问:禁止写访问
HTTP 403.4 -禁止访问:要求 SSL
HTTP 403.5 -禁止访问:要求 SSL 128
HTTP 403.6 -禁止访问:IP 地址被拒绝
HTTP 403.7 -禁止访问:要求客户证书
HTTP 403.8 -禁止访问:禁止站点访问
HTTP 403.9 -禁止访问:连接的用户过多
HTTP 403.10 -禁止访问:配置无效
HTTP 403.11 -禁止访问:密码更改
HTTP 403.12 -禁止访问:映射器拒绝访问
HTTP 403.13 -禁止访问:客户证书已被吊销
HTTP 403.15 -禁止访问:客户访问许可过多
HTTP 403.16 -禁止访问:客户证书不可信或者无效
HTTP 403.17 - 禁止访问:客户证书已经到期或者尚未生效
404——没有发现文件、查询或URl
405——用户在Request-Line字段定义的方法不允许
406——根据用户发送的Accept拖,请求资源不可访问
407——类似401,用户必须首先在代理服务器上得到授权
408——客户端没有在用户指定的饿时间内完成请求
409——对当前资源状态,请求不能完成
410——服务器上不再有此资源且无进一步的参考地址
411——服务器拒绝用户定义的Content-Length属性请求
412——一个或多个请求头字段在当前请求中错误
413——请求的资源大于服务器允许的大小
414——请求的资源URL长于服务器允许的长度
415——请求资源不支持请求项目格式
416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段
417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求长。
2.3.2.5 5** :服务器执行一个完全有效请求失败
HTTP 500 -内部服务器错误
HTTP 500.100 -内部服务器错误 - ASP 错误
HTTP 500-11服务器关闭
HTTP 500-12应用程序重新启动
HTTP 500-13 -服务器太忙
HTTP 500-14 -应用程序无效
HTTP 500-15 -不允许请求 global.asa
Error 501 -未实现
HTTP 502 -网关错误
2.4 使用telnet进行http测试
接着开始发请求消息,例如发送如下请求消息请求baidu的首页消息,使用的HTTP协议为HTTP/1.1:
可看到返回了200 OK的消息,如下图所示:
connection:
Host:
2.5 常用的请求方式
l
l
1:对现有资源的解释;
2:向电子公告栏、新闻组、邮件列表或类似讨论组发信息;
3:提交数据块;
4:通过附加操作来扩展数据库 。
从上面描述可以看出,Get是向服务器发索取数据的一种请求;而Post是向服务器提交数据的一种请求,要提交的数据位于信息头后面的实体中。
GET与POST方法有以下区别:
(1)
(2)
(3)
(4)
2.6 请求头
HTTP最常见的请求头如下:
l
l
l
l
l
l
l
l
l
l
l
l
l
l
l
2.7 响应头
HTTP最常见的响应头如下所示:
l
l
l
l
l
l
l
l
l
2.8实体头
实体头用坐实体内容的元信息,描述了实体内容的属性,包括实体信息类型,长度,压缩方法,最后一次修改时间,数据有效性等。
l
l
l
l
l
l
l
l
l
l
2.8扩展头
在HTTP消息中,也可以使用一些再HTTP1.1正式规范里没有定义的头字段,这些头字段统称为自定义的HTTP头或者扩展头,他们通常被当作是一种实体头处理。
现在流行的浏览器实际上都支持Cookie,Set-Cookie,Refresh和Content-Disposition等几个常用的扩展头字段。
l
l
l
eg1:Content-Type:application/xml ;
eg2:applicaiton/octet-stream;
Content-Disposition:attachment;filename=aaa.zip。
《HTTP1.1和HTTP1.0的区别》:
http://blog.csdn.net/yanghehong/archive/2009/05/28/4222594.aspx
《HTTP请求(GET和POST区别)和响应》:
http://www.blogjava.net/honeybee/articles/164008.html
《HTTP请求头概述_百度知道》:
http://zhidao.baidu.com/question/32517427.html
《实体头和扩展头》:
http://www.cnblogs.com/tongzhiyong/archive/2008/03/16/1108776.html
- 蜜果私塾:http协议学习和总结系列…
- 蜜果私塾:http协议学习和总结系列…
- 蜜果私塾:http协议学习和总结系列…
- 蜜果私塾:http协议学习和总结系列——协议详解篇
- 蜜果私塾:http协议学习和总结系列--基础概念篇
- 蜜果私塾:http协议学习和总结系列--深入了解篇
- 蜜果私塾:http协议学习系列 ——协议详解篇
- http协议学习和总结系列1
- http协议学习和总结系列
- http协议学习和总结系列
- http协议学习和总结系列--深入了解篇
- http协议学习和总结系列——协议详解篇
- http协议学习和总结系列——协议详解篇
- http协议学习系列(Cookie和Session)
- http协议学习系列
- http协议学习系列
- http协议学习系列
- http协议学习系列
- php安全模式详细介绍
- 生活+工作+学习+社交+玩
- HTTP协议详解
- 蜜果私塾:http协议学习和总结系列…
- 【技术类】ArcGIS影像技术之镶嵌数据集概览
- 蜜果私塾:http协议学习和总结系列…
- 蜜果私塾:http协议学习和总结系列…
- 中国骨干网络设备多数用思科
- 用GDB调试程序
- php webservice实例(转载)
- PHP企业级应用之WebService篇
- 基于OpenCV的PHP图像人脸识别技术
- resin与tomcat使用对比
- PHP模仿请求返回页面的方法