HTTP协议基础及报文抓包分析

发布者:admin 发布时间:2019-10-29 08:04 浏览次数:

  从事性能测试必不可绕过的就是协议,对基本知识的了解,还是深入掌握协议的机制,都能让你在从事性能测试实施时显得更加顺手。

  重点分享性能测试实施过程中必须掌握的关键技术、工具。更细节的请参考HTTP相关书籍或RFC文档。

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

  Web Client可以是浏览器、搜索引擎、机器人等等一切基于HTTP协议发起http请求的工具。Web Server可以是任何的能解析HTTP请求,并返回给Web Client可识别的响应的服务,常见的有apache、nginx、IIS等等web服务器。浓缩就是精华,看下最简洁的HTTP交互图:

  由请求方法字段、URL字段、协议版本字段三部分构成,它们之间由空格隔开。常用的请求方法有:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。

  请求头由key/value对组成,每行为一对,key和value之间通过冒号(:)分割。请求头的作用主要用于通知服务端有关于客户端的请求信息。

  Accept:客户端可识别的响应内容类型列表;星号*用于按范围将类型分组。*/*表示可接受全部类型,type/*表示可接受type类型的所有子类型。

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

  请求内容主要用于POST请求,与POST请求方法配套的请求头一般有Content-Type(标识请求内容的类型)和Content-Length(标识请求内容的长度)

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

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

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

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

  对于请求端来讲:close是告诉服务端,断开连接,不用等待后续的求请了。keeplive则是告诉服务端,在完成本次请求的响应后,保持连接,等待本次连接后的后续请求。

  对于响应端来讲:close表示连接已经关闭。keeplive则表示连接保持中,可以继续处理后续请求。Keep-Alive表示如果请求端保持连接,则该请求头部信息表明期望服务端保持连接多长时间(秒),例如300秒,应该这样写Keep-Alive: 300

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

  在这里我们在Firefox下用firebug随意抓取一个HTTP包和上文的报文结构做下一一对应关系图,以便大家了解实际的包和标准报文结构的对应关系。

  对于HTTP协议的交互过程这里就不再进行说明了,大家可以搜索下相关的资料进行学习,上述的内容请务必熟练掌握、深刻了解。更详细的内容推荐大家学习RFC 2616(http协议1.1版本,有中文版本)


上一篇:HTTP基础知识:HTTP简介、S的使用及报文讲解    下一篇:IP报文头详解