HTTP 消息结构

栏目: 后端 · 前端 · 发布时间: 7年前

内容简介:HTTP 消息结构

HTTP 是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。一个 HTTP “客户端”是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个 HTTP 的请求的目的。

一个 HTTP “服务器”同样也是一个应用程序(通常是一个 Web 服务,如 Apache Web 服务器或 IIS 服务器等),通过接收客户端的请求并向客户端发送 HTTP 响应数据。

HTTP 使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。一旦建立连接后,数据消息就通过类似 Internet 邮件所使用的格式 [RFC5322] 和多用途 Internet 邮件扩展(MIME)[RFC2045] 来传送。

客户端请求消息

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(方法-URI-协议/版本)、请求头部、空行和请求数据四个部分组成,下面是一个HTTP请求包(GET)的例子:

GET /index.php HTTP/1.1
Accept-Language: zh-cn
Connection: Keep-Alive
Host: 192.168.0.106
Content-Length: 37

userName=new_andy&password=new_andy
  • 请求包的第一行是方法-URI-协议/版本:GET 就是请求方法,根据 HTTP 标准,HTTP 请求可以使用多种请求方法。HTTP 1.1支持七种请求方法:GET、POST、HEAD、OPTIONS、PUT、delete 和 TRACE 等,常用的为请求方法是 GET 和 POST

  • /index.php 表示 URI, URI 指定了要访问的网络资源

  • HTTP/1.1 是协议和协议的版本

  • 最后一行 userName=new_andy&password=new_andy 为正文,正文与 HTTP 头部有一个空行(\r\n)分隔。这里需要说明的一点,其中 Content-Length 说明正文的长度,有的正文长度没有在头部说明,只是标明 Transfer-Encoding: chunked

请求包的头部还会包含许多有关客户端环境和请求正文的有用信息,这里不再描述,下图给出了请求报文的一般格式:

HTTP 消息结构

服务器响应消息

HTTP响应也由四个部分组成,分别是:状态行(协议-状态代码-描述)、响应头、空行和响应正文。下面是一个 HTTP 应答的例子:

HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Date: Mon, 3 Jan 2005 13:13:33 GMT
Content-Type: text/html
Last-Modified: Mon, 11 Jan 2004 13:23:42 GMT
Content-Length: 90

<html>
<head>
<title>解读HTTP包示例</title>
</head>
<body>
Hello WORLD!
</body>
</html>

HTTP 应答包的第一行类似于 HTTP 请求的第一行,表示所用的协议是 HTTP 1.1,服务器处理请求的状态码 200。

应答头也和请求头一样包含许多有用的信息,例如服务器类型、日期时间、内容类型和长度等。应答的正文就是服务器返回的 HTML 页面。应答头和正文之间也用 CRLF 分隔,看下图分析:

HTTP 消息结构

HTTP 响应报文的主要特点

每一个请求报文发出后,都能收到一个响应报文,响应报文的第一行就是状态行。状态行包含三项内容:HTTP 的版本,状态码,以及解释状态码的简单语句。状态码都是三位数字的,分为 5 大类共 33 种。例如:

  • 1xx : 表示通知信息的,如请求收到了或正在进行处理

  • 2xx : 表示成功,如接受或是知道了

  • 3xx : 表示重定向,如要完成请求还必须采取下一步的行动

  • 4xx : 表示客户的差错,如请求中有错误的语法或不能完成

  • 5xx : 表示服务器的差错,如服务器失效无法完成请求


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ruby原理剖析

Ruby原理剖析

[美] Patrick Shaughnessy / 张汉东、秦凡鹏 / 华中科技大学出版社 / 2016-12-1 / 78.80元

《Ruby原理剖析》解开Ruby编程语言的魔法面纱。全书图文并茂、深入浅出地剖析了Ruby编程语言的核心工作原理。作者本着科学实证的精神,设计了一系列实验,帮助读者轻松了解这门编程语言的工作奥秘,包括Ruby如何用虚拟机执行代码,Ruby的垃圾回收算法,以及类和模块在Ruby内部的关系等。一起来看看 《Ruby原理剖析》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具