HTTP基本架构

用一张简单的流程图来展示HTTP协议的基本架构,以便先有个基础的了解。

1)Web Client可以是浏览器、搜索引擎等等一切基于HTTP协议发起http请求的工具。

2)Web Server可以是任何的能解析http请求,并返回给Web Client可识别的响应的服务,常见

的有apache、nginx、IIS等等web服务器。

浓缩的都是精华,看下最简洁的HTTP交互图:

HTTP报文结构

  1)请求报文

HTTP请求报文由请求行、请求头、空行和请求内容4个部分构成。

      请求行:

由请求方法字段、URL字段、协议版本字段三部分构成,它们之间由空格隔开。常用

的请求方法有:GET、POST、HEAD、PUT、DELETE等等。

      请求头:

请求头由key/value对组成,每行为一对,key和value之间通过冒号(:)分割。请求头的

作用主要用于通知服务端有关于客户端的请求信息。

典型的请求头有:

User-Agent:生成请求的浏览器类型

Accept:客户端可识别的响应内容类型列表;星号*用于按范围将类型分组。*/*表示可

接受全部类型,type/*表示可接受type类型的所有子类型。

Accept-Language:客户端可接受的自然语言

Accept-Encoding:客户端可接受的的编码压缩格式

Accept-Charset:可接受的字符集

Host:请求的主机名,允许多个域名绑定同一IP地址

connection:连接方式(close或keeplive)

Cookie:存储在客户端的扩展字段

    空行:

最后一个请求头之后就是空行,用于告诉服务端以下内容不再是请求头的内容了。

请求内容:

      请求内容主要用于POST请求,与POST请求方法配套的请求头一般有

Content-Type(标识请求内容的类型)和Content-Length(标识请求内容的长度)

  2)响应报文

      HTTP响应报文由状态行、响应头、空行和响应内容4个部分组成。

状态行:

由HTTP协议版本、状态码、状态码描述三部分构成,它们之间由空格隔开。

状态码由3位数字组成,第一位标识响应的类型,常用的5大类型状态码如下:

1xx:表示服务器已经接收了客户端的请求,客户端可以继续发送请求

2xx:表示服务器已经成功接收到请求并进行处理

3xx:表示服务器要求客户端重定向

4xx:表示客户端的请求有非法内容

5xx:表示服务器未能正常处理客户端的请求而出现意外的错误

常见状态码说明:

200 OK:表示客户端请求成功

400 Bad Request:表示客户端请求有语法错误,不能被服务器端解析

401 Unauthonzed:表示请求未经授权,该状态码必须与WWW-Authenticate报文头一起使用

404 Not Found:请求的资源不存在,例如输入错误的url

500 Internal Server Error:表示服务器发生了不可预期的错误,导致无法完成客户端的请求

503 Service Unavailable:表示服务器当前不能处理客户端的请求,在一段时间后服务器可能恢复正常。

响应头:

一般情况下,响应头会包含以下,甚至更多的信息。

Location:服务器返回给客户端,用于重定向到新的位置

Server:包含服务器用来处理请求的软件信息及版本信息

Vary:标识不可缓存的请求头列表

Connection:连接方式。

对于请求端来讲:close来告诉服务端,断开连接,不用等待后续的请求了。keeplive则是告诉服务端,

在完成本次请求的响应后,保持连接,等待本次连接后的后续请求。

对于响应端来讲:close表示连接已经关闭。keeplive则表示连接保持中,可以继续处理后续请求。

Keep-Alive表示如果请求端保持连接,则该请求头部信息表明期望服务端保持连接多长时间(秒),

例如300秒,应该这样写Keep-Alive:300

空行:

最后一个响应头之后就是空行,用于告诉请求端以下内容不再是响应头的内容了。

  响应内容:

服务端返回给请求端的文本信息。

HTTP报文示例

在Firefox下用firebug随意抓取一个HTTP包和上文的报文结构做下一一对应的关系图,以便了解实际的

包和标准报文结构的对应关系。

接口测试01 - HTTP协议报文结构及示例的更多相关文章

  1. HTTP协议报文结构及示例

    HTTP基本架构 下面我们用一张简单的流程图来展示HTTP协议基本架构,以便大家先有个基本的了解. 9.png Web Client可以是浏览器.搜索引擎.机器人等等一切基于HTTP协议发起http请 ...

  2. HTTP协议图--HTTP 协议报文结构

    1.HTTP 报文 用于 HTTP 协议交互的信息被称为 HTTP 报文.请求端(客户端)的 HTTP 报文叫做请求报文:响应端(服务器端)的叫做响应报文.HTTP 报文本身是由多行(用 CR[car ...

  3. 计算机网络 之 TCP协议报文结构

    前言:上学期实训课,由于要做一个网络通信的应用,期间遇到各种问题,让我深感计算机网络知识的薄弱.于是上网查找大量的资料,期间偶然发现了roc大神的博客,很喜欢他简明易懂的博文风格.本文受roc的< ...

  4. HTTP 协议基础概念和报文结构

    基础概念 1.WWW(World Wide Web,万维网)构建技术有3项: (1)把SGML(Standard Generalized Markup Language,标准通用标记语言)作为页面的文 ...

  5. TCP/IP协议头部结构体(网摘小结)(转)

    源:TCP/IP协议头部结构体(网摘小结) TCP/IP协议头部结构体(转) 网络协议结构体定义 // i386 is little_endian. #ifndef LITTLE_ENDIAN #de ...

  6. modbus tcp数据报文结构

    modbus tcp数据报文结构 请求:00 00 00 00 00 06 09 03 00 00 00 01 响应:00 00 00 00 00 05 09 03 02 12 34 一次modbus ...

  7. TCP/IP协议头部结构体

    TCP/IP协议头部结构体(转) 网络协议结构体定义 // i386 is little_endian. #ifndef LITTLE_ENDIAN #define LITTLE_ENDIAN (1) ...

  8. Django框架01 / http协议、web框架本质

    Django框架01 / http协议.web框架本质 目录 Django框架01 / http协议.web框架本质 1.http协议 1.1 http协议简介 1.2 什么是http协议 1.3 H ...

  9. HCNP Routing&Switching之IS-IS报文结构和类型

    前文我们了解了IS-IS动态路由协议基础相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15249328.html:今天我们来聊一聊IS-IS动态路由协 ...

随机推荐

  1. 你的以太网速度足够快吗?四种更快的速度正在路上&#183;&#183;&#183;&#183;&#183;&#183;

    以太网的未来将远远超越下一个最快速度:为无处不在的网络协议绘制路径的网络project师们正在寻找新版本号来服务于各种应用程序. 在上周六的以太网联盟(一个行业组织,用于促进IEEE以太网标准)会议上 ...

  2. Scaling with Microservices and Vertical Decomposition

    Scaling with Microservices and Vertical Decomposition – dev.otto.de https://dev.otto.de/2014/07/29/s ...

  3. pyspark 连 MongoDB复制集

    解决问题思路: 核心:0-理解pyspark的执行与java jar的关系: 1-看控制台,看日志: 2-jar缺不缺,版本号,放哪里. [root@hadoop1 mylocalRepository ...

  4. 多态、抽象类、接口、区别(java基础知识九)

    1.多态的概述以及代码体现 * A:多态概述 * 事物存在的多种形态 * B:多态前提 * a:要有继承关系. * 一个类是父类,一个类是子类 * b:要有方法重写. * c:要有父类引用指向子类对象 ...

  5. Android 增,删,改,查 通讯录中的联系人

    一.权限 操作通讯录必须在AndroidManifest.xml中先添加2个权限, <uses-permission android:name="android.permission. ...

  6. java8的常用的新特征

    一.Java 8 对接口做了进一步的增强.(默认方法和静态方法) a. 在接口中可以添加使用 default 关键字修饰的非抽象方法.即:默认方法(或扩展方法不用被实现)如:comparator接口. ...

  7. Balancing Act(树的重心)

    传送门 Balancing Act Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14070   Accepted: 593 ...

  8. RDA TDT & TOT

    首先看下面的TS PSI分析图: 注意:TOT UTC与TDT是一致的 TDT下的时间为: UTC+手动TIMEZONE TOT下的时间为: UTC+解析的time_offset time_offes ...

  9. 【转】Chrome headless 模式

    原文地址: http://www.cnblogs.com/fnng/p/7797839.html 我们在通过Selenium运行自动化测试时,必须要启动浏览器,浏览器的启动与关闭必然会影响执行效率,而 ...

  10. margin---bug

    常见的浏览器下margin出现的bug IE6中双边距Bug:发生场合:当给父元素内第一个浮动元素设置margin-left(元素float:left)或margin-right(元素float:ri ...