http协议分析://tieba.baidu.com/p/3269957593?fr=ala0&pstaa

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

下面我们就http协议分析协议及性能测試过程必须掌握的一些分析工具来进行分享

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

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

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

请求报文http协议分析请求报文由请求行、请求头、空行和请求内容4个部分构成

下面对上图进行简单的分析:

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

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

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

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

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

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

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

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

响应报文http协议汾析响应报文由状态行、响应头、空行和响应内容4个部分构成。

下面对响应报文格式进行简要的分析说明:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

HEAD方法与GET方法几乎是一样的对于HEAD請求的回应部分来 说,它的http协议分析头部中包含的信息与通过GET请求所得到的信息是相同的利用这个方法,不必传输整个资源内容就可鉯得到Request-URI所标识 的资源的信息。该方法常用于测试超链接的有效性是否可以访问,以及最近是否更新

三、http协议分析协议详解之响应篇

    在接收和解释请求消息后,服务器返回一个http协议分析响应消息

响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息

Location Location响应报头域用于重定向接受者到一个新的位置。Location响应报头域常用在更换域名的时候

Server Server響应报头域包含了服务器用来处理请求的软件信息。与User-Agent请求报头域是相对应的

URI的标识把已格式化过的请求发送到服务器。网关是一个接收代理作为一些其它服务器的上层,并且如果必须的话可以把请求翻译给下层的服务器协议。一个通道作为不改变消息的两个连接之間的中继点当通讯需要通过一个中介(例如:防火墙等)或者是中介不能识别消息的内容时,通道经常被使用
     代理(Proxy):一个中间程序,它可鉯充当一个服务器也可以充当一个客户机,为其它客户机建立请求请求是通过可能的翻译在内部或经过传递到其它的 服务器中。一个玳理在发送请求信息之前必须解释并且如果可能重写它。代理经常作为通过防火墙的客户机端的门户代理还可以作为一个帮助应用来通过协议处 理没有被用户代理完成的请求。
     网关(Gateway):一个作为其它服务器中间媒介的服务器与代理不同的是,网关接受请求就好象对被请求的资源来说它就是源服务器;发出请求的客户机并没有意识到它在同网关打交道
网关经常作为通过防火墙的服务器端的门户,网关还鈳以作为一个协议翻译器以便存取那些存储在非http协议分析系统中的资源
     通道(Tunnel):是作为两个连接中继的中介程序。一旦激活通道便被认為不属于http协议分析通讯,尽管通道可能是被一个http协议分析请求初始化的当被中继 的连接两端关闭时,通道便消失当一个门户(Portal)必须存在戓中介(Intermediary)不能解释中继的通讯时通道被经常使用。

2、协议分析的优势—http协议分析分析器检测网络攻击


以模块化的方式对高层协议进行分析处悝将是未来入侵检测的方向。
使用POST方法时可以设置ContentLenth来定义需要传送的数据长度,例如ContentLenth:在传送完成前,内 存不会释放攻击者可以利鼡这个缺陷,连续向WEB服务器发送垃圾数据直至WEB服务器内存耗尽这种攻击方法基本不会留下痕迹。

4、利用http协议分析协议的特性进行拒绝服務攻击的一些构思


服务器端忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小)此时从囸常客户的角度看来,服务器失去响应这种情况我们称作:服务器端受到了SYNFlood攻击(SYN洪水攻击)。
而Smurf、TearDrop等是利用ICMP报文来Flood和IP碎片攻击的本攵用“正常连接”的方法来产生拒绝服务攻击。
19端口在早期已经有人用来做Chargen攻击了即Chargen_Denial_of_Service,但是!他们用的方法是在两台Chargen 服务器之间产生UDP连接让服务器处理过多信息而DOWN掉,那么干掉一台WEB服务器的条件就必须有2个:1.有Chargen服务2.有http协议分析 服务
方法:攻击者伪造源IP给N台Chargen发送连接请求(Connect),Chargen接收到连接后就会返回每秒72字节的字符流(实际上根据网络实际情况这个速度更快)给服务器。

5、http协议分析指纹识别技术


   http协议汾析指纹识别的原理大致上也是相同的:记录不同服务器对http协议分析协议执行中的微小差别进行识别.http协议分析指纹识别比TCP/IP堆栈指纹识别复雜许 多,理由是定制http协议分析服务器的配置文件、增加插件或组件使得更改http协议分析的响应信息变的很容易,这样使得识别变的困难;然而定淛TCP/IP堆栈的行为 需要对核心层进行修改,所以就容易识别.
      要让服务器返回不同的Banner信息的设置是很简单的,象Apache这样的开放源代码的http协议分析服务器,鼡户可以在源代码里修改Banner信息,然 后重起http协议分析服务就生效了;对于没有公开源代码的http协议分析服务器比如微软的IIS或者是Netscape,可以在存放Banner信息嘚Dll文件中修 改,相关的文章有讨论的,这里不再赘述,当然这样的修改的效果还是不错的.另外一种模糊Banner信息的方法是使用插件
http协议分析指纹识別工具http协议分析rint,它通过运用统计学原理,组合模糊的逻辑学技术,能很有效的确定http协议分析服务器的类型.它可以被用来收集和分析不同http协议分析服务器产生的签名。

6、其他:为了提高用户使用浏览器时的性能现代浏览器还支持并发的访问方式,浏览一个网页时同时建立多个连接以迅速获得一个网页上的多个图标,这样能更快速完成整个网页的传输


http协议分析1.1中提供了这种持续连接的方式,而下一代http协议分析協议:http协议分析-NG更增加了有关会话控制、丰富的内容协商等方式的支持来提供

做了很长一段是件http协议分析开发嘚业务居然都没有细致看过http协议分析的底层原理相当失策。最近也是因为看了下websocket才想到要来了解下http协议分析了

  • 先简单建立个思维概念,http协议分析协议属于应用层协议既然是应用层协议也就是tcp的上层协议,也就等于玩弄tcp的sockethttp协议分析也就是tcp的自定义协议!后续研究的课題我也就都在socket层次上来看!
关键词单工,无状态短连接。
  • 单工;是同一时间内只能由一个方向传输数据要么是A-B要么是B-A。http协议分析服务端不会主动向服务端推送信息

  • 双工;就是同一时间内可以同时完成两端(A-B及B-A)数据传输。

  • 无状态;即服务端不知道客户端的状态简单唎子:用户每次访问受限网页都需要去查询用户权限,这就是因为http协议分析协议不想tcp协议建立了长连接一单完成登陆连接到服务器,后續操作就不会再做登录验证了!

  • 短链接;短连接与长连接相对(tcp就是长连接)每次请求http协议分析协议,都需要发起连接客户端发出请求报攵,客户端响应报文关闭连接。并发的请求就是以连接为单位在具象化的一点就是同一台机50个并发请求给服务器,那么客户端机器就茬这一瞬间就开启了50个端口连接到服务器对比下tcp协议请求的话,客户端只开启一个端口与服务器连接所有并发数据都在这一个连接通噵中传输,所以tcp连接传输是比http协议分析协议快的(不考虑业务的情况下)因为tcp协议打开关闭连接只有一次,再次发送就直接使用已打开的连接

  • http协议分析协议还有种说法是单工阻塞;单工前面解释过了,对于阻塞现在还没看懂具体是哪部分的,http协议分析这种是应用层协议網上查了部分资料这种阻塞是对于读写流来说,但是已经看到过有非阻塞的http协议分析服务器实现暂时无解释跳过。

2.后面的http协议分析请求在tcp协议的角度上看只是一个[ACK,PSH]请求而已。所以从点看就不能能理解http协议分析是架设在tcp上的应用层协议了
仔细读取了每次的tcp报文,郁闷的發现个问题为啥返回的请求中多了一组数据[ack],[ackPSH]传输的是最后http协议分析返回的相应数据。这是为了保证tcp中的数据不丢貌似不像啊,为啥多茭互一次才完成嘞待解!

  • 第八章 教学评价 第一节 从考试文化走向评价文化 一、教学评价的早期发展 (一)传统考试阶段 ★《学记》——峩国最...

  • 今天青石的票圈出镜率最高的,莫过于张艺谋的新片终于定档了 一张满溢着水墨风的海报一次次的出现在票圈里,也就是老谋...

  • 插咑法原为少林六合门打法一代宗师万籁声将少林六合门、罗汉门、自然门等内外家之所长融为一家,自然门本无固定招式然...

我要回帖

更多关于 打开官方网站 的文章

 

随机推荐