您的位置:首页 > 理论基础 > 计算机网络

HTTP学习笔记——报文格式

2016-06-21 21:29 239 查看

HTTP报文的分类:(请求报文和响应报文):

HTTP报文分为两类:

+ 请求报文: 从Web客户端发往Web服务器

+ 响应报文: 从Web服务器发往Web客户端

请求报文格式:

<method> <request URL> <version>
<headers>

<entity-body>


响应报文格式:

<version> <status> <reason phrase>
<headers>

<entity-body>


请求报文和响应报文的格式区别只在于起始行,·

Http报文的组成部分

从前面请求报文和响应报文的格式中,我们可以HTTP报文主要可能涉及到一下元件:

+ 方法(method): 客户端希望服务器对资源执行的动作,如GET、HEAD、POST。

+ 请求URL(Requset-URL): 要请求的资源的URL, 如资源在服务器上的绝对路径。

+ 版本(version): HTTP 版本(分为主版本号、次版本号)。 格式为:
HTTP/<major>,<minor>.


+ 状态码(status-code): 描述资源请求过程中所发生的情况。

+ 原因短语(reason-phrase):数字状态吗的可读版本。

+ 首部: 一些“名字:值”的组合。首部以一个空行结束。

+ 实体的主体(entity-body): 包含一个任意数据组成的数据块。(可选)

根据HTTP报文的结构,我们将HTTP报文分为一下三部分:

1. 起始行: 报文第一行, 请求报文的起始行用来说明要做什么, 响应报文的起始行用于说明出现了什么情况。结构话文本。(方法、请求URL、版本、状态码、原因短语都属于起始行的范畴)。

2. 首部字段: (0个或多个), 每个首部字段包含一个名字和值,用冒号:分隔,首部以空行结束。结构化文本。

3. 主体: 包含所有类型的(发往对端的)数据。非结构化,也不一定是文本(可以是视频音频等)。

起始行和首部是一些有行分隔的ASCII文本,每一行都以一个由两个字符组成的行终止符(回车符+换行符)作为结束。

起始行

我们前面提到HTTP报文的请求报文和响应报文格式区别在起始行, 一般我们称请求报文的起始行为请求行,响应报文的起始行为响应行。

方法(method)

请求报文的起始行以方法作为开始,方法用于告知服务器要执行哪一些动作。有些方法的HTTP请求报文包含主体、有些方法的请求报文则不包含主体。

下面是常用的HTTP方法:

方法描述是否包含主体
GET从服务器获取一份文档
HEAD只从服务器获取文档的首部
POST向服务器发送需要处理的数据
PUT将请求的主题部分存储在服务器上
TRACE对可能经过代理服务器传送到服务器的报文进行追踪
OPTIONS决定服务器上执行哪些方法
DELETE从服务器上删除一份文档
+ GET:

GET 是最常用的方法,它是一种安全方法(安全方法:安全方法不会在服务器上发生动作。GET和HEAD都是安全方法)。

GET方法用于请求服务器上的某项资源

+ HEAD:

HEAD方法与GET方法类似,但服务器在响应HEAD方法时,只返回首部,不返回实体部分。

HEAD方法可以用于实现以下功能:

(1)在不获取资源的情况下,了解资源的状况,如判断资源的类型

(2)通过响应中的状态码,查看资源是否存在

(3)通过查看首部,测试资源是否被修改。

对于服务器而言,HEAD响应的首部与GET响应的首部应该一致。

+ PUT:

PUT方法用于向服务器写入/替换资源。

+ POST:

用于向服务器输入数据。现在,POST通常用于支持HTML表单。表单中会填写要传送给服务器的数据,然后服务器想数据发送到它应该去的地方。

+ TRACE:

TRACE用于客户端对发起的请求进行诊断。

+ OPTIONS:

OPTION用于请求服务器支持的功能。

+ DELETE:

删除所请求的URL对应的资源。

+ *拓展方法:

状态码

状态吗用来告诉客户端发生了什么事。

下面是状态码的分类:

状态吗范围已定义范围分类
100~199100~101信息提示
200~299200~206成功
300~399300~305重定向
400~499400~415客户端错误
500~599500~505服务器错误

原因短语

原因短语为状态码提供可读解释, 原因短语与状态码是成对的。

首部

HTTP首部 向请求报文和响应报文中添加了一些附加信息。

首部一般是依稀”名字:值“对,每个首部一般占用一行,有些首部可能被分成多行,在这种情况下延续行必须以空格或制表符作为行首(以区别新首部)。

首部分类

TypeDescription
通用首部既可以出现在请求报文,也可以出现在响应报文。
请求首部提供共夺请求报文相关的信息
响应首部提供更多有关响应的信息。
实体首部提供主体的长度和内容,或者资源自身。
拓展首部规范中未定义的新首部。
下面以通用首部为例,简单描述下一些首部的功能。

首部描述
Connection允许客户端和服务器指定与请求/响应连接有关的选项
Date提供日期和时间标志, 说明文本的创建时间
MIME-Version给出了发送端使用的MIME版本
Trailer与分块传输编码相关
Transfer-Encoding告知接收端,为保证报文的可靠传输,对报文采取了什么编码方式。
Update给出了发送端可能要“升级”使用新版本或协议
Via显示了报文经过的中间节点 (代理、网关)
Cache-Control用于随报文传送缓存指示
Pragma另一种随报文传送指示的方式,但并不专于缓存

实体

HTTP报文第三部分是可选的实体主体部分。即HTTP报文的负载。 实体部分可以是文本、图片、视频等各种形式的数据。

整理自网络与《HTTP权威指南》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: