http协议

HTTP是一个应用层协议,虽然在2015年已推出HTTP/2版本,并被主要的web浏览器和web服务器支持。但目前使用最广泛的还是HTTP/1.1版本。

  HTTP的主要特点可概括如下:

  • 支持客户端/服务器模式。
  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。为了解决这个问题, Web程序引入了Cookie机制来维护状态。

对于接口测试或者性能测试来说,我们需要去模拟、去实现的是http请求,但是我们又需要结合http响应来处理脚本。在这个过程中,我们能够改变的只是请求。

一般来说,要了解协议,需要结合抓包工具来进行。

  常用的抓包工具:

    • chrome/ firefox/ie的F12(浏览器自带的开发工具)
    • httpwatch  【使用httpwatch可以过滤出动态和静态的资源情况。动态缓存:如jsp后缀、servlet后缀(需要实时向服务器发送请求才可以获取)。静态缓存:如html后缀、css后缀、gif后缀。(暂时存在缓存中)
    • wireshark    【wireshark可以运行在Windows和Mac OS上,能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容。只能查看封包,而不能修改封包的内容,或者发送封包。如果处理TCP,UDP协议就用wireshark
    • charles  【Charles有两种显示模式,stucture 和sequence。stucture是树状视图,比fiddler的列表视图好的地方在于:多次刷新后的请求会被归纳到树里面,更加一目了然。
    • Fiddler  【在windows上运行的程序,专门用来捕获HTTP,HTTPS的,可以修改包的信息
    • network monitor
    • sniffer 

下图为fiddler抓到的包的界面截图:

 http协议是由两个部分构成:http request(请求),http response(响应)。

一、http request:http请求,包括三部分:request line、request header、request body

  • request line:请求行,一般为请求信息的第一行,包含三个信息:
  • request method:常见的请求方法有:get(一般是系统默认使用的方法)、post、delete、header、put、options、trace等;

 关于HTTP请求GET和POST的区别
(1).提交形式:
   GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456.  POST方法是把提交的数据放在HTTP包的Body中.
(2).传输数据的大小:
   HTTP协议本身没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。 而在实际开发中存在的限制主要有:
   GET:特定浏览器和服务器对URL长度有限制,例如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。
   因此对于GET提交时,传输数据就会受到URL长度的限制。
   POST:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。
(3).安全性:
    POST的安全性要比GET的安全性高,具有真正的Security的含义。而且通过GET提交数据,用户名和密码将明文出现在URL上,因为登录页面有可能被浏览器缓存,其他用户浏览历史纪录就可以拿到账号和密码了。

  • request path:请求路径,就是URL中的path部分;
  • protocol/version:使用的协议和版本。
  • request header:请求头,一般是从请求信息第二行开始,到第一个空行为止的部分。请求头是用来传递信息的,包括通信和控制相关的信息。请求头的类型是由http协议规定的,是不能自定义的,每一种信息头都是有其特殊通信意义的。请求头是键与值对应的。
  • request body:请求主体,是请求信息中从第一个空行开始,到请求包结束的部分。一般来说,请求主体是适用于post方法的,不适用于get方法。请求主体传递的内容是由应用或者接口决定。默认是www-form类型(普通的键值对应,通过&连接的字符串);如果不是默认类型,则必须在请求头中添加以下信息头:Content-type(用来告诉服务器,所发送的body数据格式和数据类型)。

 二、http response:http响应,包括三部分:response line、response header、response body

  • response line,包含三个信息:protocol/version、response_code(响应码,也叫状态码,详情请点击此处连接)、response_message,如:“HTTP/1.1   200  OK”。
  • response header,类似于请求头,是服务器返回给客户端的控制、通信信息。
  • response body,响应主体,也是由应用和接口决定的。

 

原文地址:https://www.cnblogs.com/zzp-biog/p/9811258.html