经理
业务
您现在的位置:首页 >> 网站管理 >> 内容

Http Message结构学习总结

最近做的东西需要更深入地了解Http协议,故死磕了一下RFC2616-HTTP/1.1协议,主要是了解Http Message结构及每部分含义,在此总结一下,并打算写一个模拟发送HTTP请求的工具,明天写完再附上来:>

(注:下面如“(14.1)”表示是在RFC2616第14章第1节有更详细的介绍)

一.Http Message结构

    了解Http Message先看下图:


Http Message包含3个部分:

(1).请求行/状态行

(2).消息头(Message Header),分为4类:常规头,请求头,响应头和实体头,下面会详细介绍,一个Message里可以有多个消息头。

(3).消息体(Message Body),这个是可选的。

二.Http Message分两类:

1.请求消息(Request Message)

Request Message结构如下:


(1).请求行(Request-Line)结构(5.1):


Http方法(Http Method):主要有8类:GET,POST......下面会介绍。

Request-URI:请求操作的资源。

Http-Version:Http的版本,如:Http/1.0,Http/1.1

(2).消息头:

请求消息(Request Message)不应包含响应头。

2.响应消息(Response Message)

Response Message结构如下:


(1).状态行(Status-Line)结构:


Http-Version:Http的版本,如:Http/1.0,Http/1.1

Status-Code(状态码):状态码是一个三位数字,我对状态码的理解是:对请求(request)做出响应的类型/结果。

状态码第一位数字定义了响应类型,这里分为5种:

-1XX:Informational,请求接收到了,正在进一步的处理中(Request received, continuing process)。

-2XX:Success,表示用户请求被正确接收(The action was successfully received,understood, and accepted),这里典型的是:200 OK

-3XX:Redirection,表示请求没有成功,客户必须采取进一步的动作 (Further action must be taken in order to complete the request.)

-4XX:Client Error,表示客户端提交的请求有错误(The request contains bad syntax or cannot be fulfilled),典型的有:404 Not Found

-5XX:Server Error,表示服务器不能完成对请求的处理 (The server failed to fulfill an apparently valid request),典型的是:503 Service Unavailable

(注:详细的状态码会在文章的最后列出)

(2).消息头:

响应消息(Response Message)不应包含请求头。

三.Http消息头包括4类:

Http消息头(Message Header),主要是带上一些处理HTTP消息所需的辅助信息。

Http消息头结构如下:


1.Field-Name:下面提到的,如:Cache-Control,Date...等,这些就是Field-Name,在RFC文档中Field-Name的数量是有限的,只有43个,而你自己可以增加自定义的Field-Name,但由于浏览器是按照RFC规范实施的(当然它们也有它们自定义的消息头),所以除非是自己实现服务器和客户端,否则,自定义的Field-Name一般没用。

2.Field-Vlaue:根据Field-Name的不同,会有不同的Field-Value

  • 九维软件科技有限公司 © 2010 版权所有 All Rights Resverved 未经授权,禁止复制、转播本站信息,经授权的引用必须注明出自本站 。
    Email:deuv@163.com 电话:0513-85338199 苏ICP备10045045号