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

理解HTTP协议之报文(一)

2012-12-15 22:59 357 查看

理解HTTP协议之报文(一)

什么是HTTP报文

HTTP报文是在HTTP应用程序之间发送的数据块。这些数据块是以文本形式的元信息开头,这些描述了报文的内容及含义,后面的跟着可选的数据部分。这些报文在客户端、服务器和代理之间流动。术语“流入”、“流出”、“上游”及“下游”都是用来描述报文方向的。

报文流入源端服务器

HTTP流入和流出来描述事务处理的方向。报文流入服务器端,工作完成后,会流回用户的Agent代理中。

报文向下游流动

HTTP报文会像流水一样流动。不管是请求报文还是相应报文,所有报文都会向下游流动。所有报文的发送者都是在接受者的上游。

报文的组成部分

HTTP报文是简单的格式化数据块。每条报文到包含一条来自客户端的请求或一条来自服务器端的相应。他们有三个部分组成:对报文进行描述的起始行、包含属性的首部(header)块,以及可选的、包含数据的主体(body)部分。

报文的语法

所有的HTTP报文都可以分为两类:请求报文(request message)和响应报文(response message)。请求报文会向web服务器请求一个动作。响应报文会将请求的结果返回给客户端。请求和响应的报文基本结构相同。

请求报文的格式:

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

<entity-body>

响应报文的格式:

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

<entity-body>

方法 (method)

客户端希望服务器对资源执行的动作。是一个单独的词,比如GET、HEAD或POST。

请求Url
命名了所请求的资源,或者URL路径组件的完整URL。如果直接与服务器进行对话,只要URL的路径是资源的绝对路径,通常就不会有什么问题---服务器可以假定自己是URL的主机/端口。

版本(version)
报文所使用的HTTP版本,其格式看起来是这样的:
HTTP/<major>.<minor>

状态码(status-code)
这三位数字描述了请求过程中所发生的情况。每个状态码的第一位数字都用于描述状态的一般类型(“成功”、“出错”等)。

原因短语(reason-phrase)
数字状态码的可读版本,包含行终止序列之前的所有文本。

首部(header)
可以有零个或多个首部,每个首部都包含一个名字,后面跟着一个冒号(:),然后是一个可选的空格,接着是一个值,最后是一个CRLF。
首部是由一个空行(CRLF)结束的,

实体的主体部分(entity-body)
实体的主体部分包含一个由任意数据组成的数据块。并不是所有的报文都包含实体的主体部分,有时,报文只是以一个CRLF结束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息