`
free9277
  • 浏览: 104715 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

HTTP协议之HTTP消息

    博客分类:
  • Http
阅读更多
HTTP消息

1 消息类型

HTTP消息由客户端到服务器的请求消息和服务器到客户端的响应消息组成。请求消息和响应消息都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头(可选),空行(只有CRLF的行),消息正文(可选)组成。

2 请求消息

    Request 消息分为4部分:

    1、 请求行(Request-Line

    2、 消息报头(Header

    3、 CRLF

    4、 请求正文(Entity-Body

结构如下所示:

2.1 请求行

第一行中的Method表示请求方法,比如"POST""GET"Path-to-resoure表示请求的资源, Http/version-number 表示HTTP协议的版本号。

请求方法(所有方法全为大写)有多种,各个方法的解释如下: 

名字

内容

GET

请求获取Request-URI所标识的资源

POST

Request-URI所标识的资源后附加新的数据

HEAD

请求获取由Request-URI所标识的资源的响应消息报头

PUT 

请求服务器存储一个资源,并用Request-URI作为其标识

DELETE

请求服务器删除Request-URI所标识的资源

TRACE

请求服务器回送收到的请求信息,主要用于测试或诊断

CONNECT

保留将来使用

OPTIONS

请求查询服务器的性能,或者查询与资源相关的选项和需求

 

2.2 请求报头

请求头域允许客户端传递请求的附加信息和客户端自己的附加信息给服务器。这些头域作为请求的修饰,这和程序语言方法调用的参数语义是等价的。

请求头(request-header=

Accept

|Accept-Charset

|Accept-Encoding 

|Accept-Language 

|Authorization 

|Expect

|From

|Host

|If-Match

|If-Modified-Since 

|If-None-Match 

|If-Range

|If-Unmodified-Since

|Max-Forwards

|Proxy-Authorization 

|Range

|Referer 

|TE

|User-Agent

请求头域的名字是能被扩展,但只能随协议版本改变而被扩展。然而新的或实践性的头域可以给定请求头域语义,如果所有通信方都把它看作请求头域。不能识别的头域会被看作实体头域(entity-header)。

2.3 应用举例


3 响应消息

 HTTP Response消息的结构和Request消息的结构基本一样。 同样也分为三部分。

    1、 状态行(Request line

    2、 消息报头(request header

    3、 CRLF

    4、 响应正文(body

结构如下图:


3.1 状态行

状态行格式如下:HTTP-Version Status-Code Reason-Phrase CRLF其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。

Status-Code元素是一个试图理解和满足请求的三位数字整数码。原因短语(Reason-Phrase)是为了给出关于状态码的简单的文本描述。状态码用于控制,而原因短语(Reason-Phrase)是让用户便于阅读。客户端不需要检查和显示原因短语。

状态码的第一位数字定义响应类别。后两位数字没有任何分类角色。第一位数字有五种值:

-1xx :报告的,请求被接收到,继续处理。

-2xx :成功,被成功地接收(received),理解(understood),接受(accepted)的动作 。

-3xx :重发 ,为了完成请求必须采取进一步的动作。

-4xx :客户端出错 ,请求包括错的语法或不能被满足。

-5xx :服务器出错,-服务器无法完成显然有效的请求。

常见的状态码:

状态码

状态描述

说明

200

OK

客户端请求成功

400

Bad Request

客户端请求有语法错误,不能被服务器所理解

401

Unauthorized

请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

403

Forbidden

服务器收到请求,但是拒绝提供服务

404

Not Found

没有发现文件、查询或URl

500

Internal Server Error

内部服务器错误

503

Server Unavailable

服务器当前不能处理客户端的请求,一段时间后可能恢复正常

 

3.2 响应报头

响应头域允许服务器传送响应的附加信息,这些信息不能放在状态行(Status-Line)里.。这些头域给出有关服务器的信息以及请求URIRequest-URI)指定资源的更进一步访问信息。

response-header = 

Accept-Ranges

|Age

|Etag

|Location

|Proxy-Autenticate 

|Retry-After

|Server

|Vary 

|WWW-Authenticate

响应头域的名字能依赖于协议版本的变化而扩展。然而,新的或者实践性的头域可能会给予响应头域的语义如果通信所有成员都能识别他们并把他们看作响应头域。不被识别的头域被看作实体头域。

3.3 应用举例

4 实体(Entity

如果不被请求方法或响应状态码所限制,请求和响应消息都可以传输实体。实体包括实体头域(entity-header)与实体主体(entity-body),而有些响应只包括实体头域(entity-header)。

在本节中的发送者和接收者是否是客户端或服务器,这依赖于谁发送或谁接收此实体。

4.1 实体头域(Entity Header Fields)

实体(entity-header)头域定义了关于实体主体的的元信息,或在无主体的情况下定义了请求的资源的元信息。有些元信息是可选的;一些是必须的。

entity-header = Allow

| Content-Encoding

| Content-Language

| Content-Length

| Content-Location

| Content-MD5

| Content-Range

| Content-Type

| Expires

| Last-Modified

| extension-header

extension-header = message-header

扩展头机制允许在不改变协议的前提下定义额外的实体头域,但不保证这些域在接收端能够被识别。未被识别的头域应当被接收者忽略,且必须被透明代理(transparent proxy)转发。

4.2 实体主体(Entity Body)

HTTP请求或响应发送的实体主体(如果存在的话)的格式与编码方式应由实体的头域决定

Entity-body= *OCTET

实体主体(entity-body)只有当消息主体存在时时才存在。实体主体(entity-body)从消息主体根据传输译码头域(Transfer-Encoding)解码得到,传输译码用于确保消息的安全和合适传输。

4.3 类型(Type)

当消息包含实体主体(entity-body)时,主体的数据类型由实体头域的Content-TypeContent-Encoding头域确定。这些头域定义了两层顺序的编码模型:

Entity-body=Content-Encoding Content-Type data) )

Content-Type指定了下层数据的媒体类型。Content-Encoding可能被用来指定附加的应用于数据的内容编码,经常用于数据压缩的目的,内容编码是请求资源的属性。没有缺省的编码。

任一包含了实体主体的HTTP/1.1消息都应包括Content-Type头域以定义实体主体的媒体类型。如果只有媒体类型没有被Content-Type头域指定时,接收者可能会尝试猜测媒体类型,这通过观察实体主体的内容并且/或者通过观察URI指定资源的扩展名。如果媒体类型仍然不知道,接收者应该把类型看作”application/octec-stream”

4.4 实体主体长度(Entity Length)

消息的实体主体长度指的是消息主体在被应用于传输编码(transfer-coding)之前的长度。

  • 大小: 11.1 KB
  • 大小: 11 KB
  • 大小: 9.4 KB
  • 大小: 5.6 KB
8
3
分享到:
评论
1 楼 shangql 2013-05-01  
看了 感觉很有帮助 以前对这个 是 一知半解的 现在 了解了

相关推荐

    HTTP协议之消息报头

    详细介绍了HTTP协议之消息报头中各个属性。

    Java向苹果服务器推送消息(Java实现HTTP/2协议发送APNS)

    Java APNS推送消息 HTTP/2协议, 基于JDK 11及以上

    HTTP协议-中文版

    超文本传输协议(HTTP)是一种为分布式,合作式,多媒体信息系统服务,面向应用层的 协议。在1990年WWW全球信息刚刚起步的时候HTTP就得到了应用。HTTP的第一个版本叫做HTTP/0.9,是一种为互联网原始数据传输服务的...

    http协议学习总结协议格式消息头消息体等[参照].pdf

    http协议学习总结协议格式消息头消息体等[参照].pdf

    HTTP协议响应消息的常用状态码

    HTTP协议响应消息的常用状态码

    HTTP协议完整中文版

    HTTP协议完整中文版,初学协议者可以参考下。 协议参数 HTTP消息 请求 响应 实体

    http协议.pptx

    HTTP协议概述 HTTP协议主要特点 HTTP工作原理 HTTP协议详解之URL篇 HTTP协议之请求篇 请求行 消息报头 空行 请求主体 HTTP协议之响应篇 ...消息报头 ...HTTP协议之消息报头篇 普通报头 请求报头 响应报头 实体报头

    http协议学习总结协议格式消息头消息体等知识.pdf

    http协议学习总结协议格式消息头消息体等知识.pdf

    http 协议

    http协议头 HTTP 请求和 HTTP 响应都使用头发送有关 HTTP 消息的信息。头由一系列行组成,每行都包含名称,然后依次是冒号、空格、值。字段可按任何顺序排列

    基于Http协议的Web服务端程序

    基于HTTP协议的WEB服务器,简易版的Tomcat.服务端读取配置文件完成对服务 器的初始化,并通过Socket网络编程架构服务器端.浏览器作为客户端,向服务器发送请求.服务端接受请求并将其封装为一个HTTPRequest对象,并对其...

    http协议抓包

    HttpWatch是强大的网页数据分析工具.集成在Internet Explorer工具栏.包括网页摘要.Cookies管理....每一个HTTP记录都可以详细的分析其 Cookies、消息头、字符查询等信息。支持HTTPS及分析报告输出为XML、CSV等格式。

    Http协议错误码(状态消息).pdf

    技术分享:Http协议错误码(状态消息),从1xx到5xxx详细表格排版解释

    HTTP协议详解

    4 HTTP消息 4.1 消息类型(Message Types) 4.2 消息头 (Message Headers) 4.3 消息主体 (Message Body) 4.4 消息的长度(Message Length) 4.5 常用头域(General Header Fields) 5 请求(Request) 5.1 请求...

    clj-wamp, web socket应用消息传递协议( 宋体) 用于Clojure和HTTP工具包.zip

    clj-wamp, web socket应用消息传递协议( 宋体) 用于Clojure和HTTP工具包 clj-wampweb socket应用程序消息传递协议( v1 )的Clojure实现,用于HTTP包服务器。提供常见的web socket消息传递模式和错误处理( RPC,PubSub...

    http协议学习系列

    2.2 HTTP请求消息 12 2.3 HTTP响应消息 13 2.4 使用telnet进行http测试 16 2.5 常用的请求方式 17 2.6 请求头 18 2.7 响应头 19 2.8实体头 21 2.8扩展头 21 3. 深入了解篇 22 3.1 Cookie和Session 22 3.2 缓存的实现...

    http协议基础

    通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个 起始行,一个或者多个头域,一个只是头域结束的空行和可 选的消息体组成。HTTP的头域包括通用头,请求 头,响应头和...

    微信公众平台http协议模拟登录

    微信公众平台http协议模拟登录,自动群发消息。

    HTTP协议.emmx

    HTP协议概念的思维导图,从协议版本、请求消息数据格式和响应消息数据格式的角度对HTTP协议进行解。

    http协议请求响应详解

    http协议请求响应详解 HTTP1.0的基本运行方式 特点 HTTP请求消息 HTTP响应消息 GET方式的特点 等

Global site tag (gtag.js) - Google Analytics