HTTP报文格式及WireShark抓包分析

HTTP请求报文格式

在这个请求格式之中空行是必不可少的一行。空行之后是请求实体。一个具体的HTTP请求报文格式如下:

GET /su?wd=www.&action=opensearch&ie=UTF-8 HTTP/1.1

Host: suggestion.baidu.com

Connection: keep-alive

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9

Cookie: BAIDUID=C2208EC4A287F1C78E1868E06C12C32F:FG=1; BIDUPSID=B7762029AFC604941206D91099D1D897; PSTM=1545827421; BDUSS=WFMRW5qRVBQRDhxNDN0UEpSMlJzZWhJTklITGY3eUVmLTFFeX5iNzY3RDQ1MHRjQVFBQUFBJCQAAAAAAAAAAAEAAACOM48~1tzR9DEyMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPhaJFz4WiRcd; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=1468_27209_21093_18559_28328_28131_26350_28266_27245; PSINO=7; delPer=0

请求格式之中的方法是指GET,PSOT,HEAD等方法。

  • get方法是获取URL指定资源。使用GET 方法时,可以将请求参数和对应的值附加在 URI 后面,利用一个问号(“?”)将资源的URI和请求参数隔开,参数之间使用与符号(“&”)隔开。一般适合于请求信息比较短的场合。使用URL请求也会把信息暴露出来。
  • post请求一般是客户端提交给服务器的表单数据。当然,如果是上传文件,也应当使用post请求。post请求还可以较get请求更好的隐藏信息。
  • head方法与get用法相同,但没有响应实体。

URI是Uniform Resource Identifiers的缩写,它是URL的一种扩展,我们在HTTP协议中使用的URI其实都是URL。

版本是指HTTP协议的版本,例如上面访问百度时的HTTP协议版本就是HTTP1.1。

  • Host是指接受请求的服务器地址,一般可以是IP地址,域名的形式。
  • Connection是连接属性,这里和百度建立的是“长连接”。
  • User-Agent是指发出请求的应用程序。实际使用的是Chrome浏览器。
  • Accept-Encoding表示客户端可以接受的压缩格式。
  • Accept-Language表示客户端接受的语言类型。
  • Cookie常用来表示请求者的身份。

HTTP响应报文格式

当客户端发出HTTP请求,服务端接收后,就会向客户端发送响应信息。响应报文的格式如下:

HTTP/1.1 200 OK
Date: Sat, 19 Jan 2019 07:34:02 GMT
Server: suggestion.baidu.zbb.df
Content-Length: 99
Content-Type: text/javascript; charset=UTF-8
Cache-Control: private
Expires: Sat, 19 Jan 2019 08:34:02 GMT
Content-Encoding: gzip
Connection: Keep-Alive

响应报文的第一行包含了一个非常重要的信息,那就是HTTP的状态码。比如上面的HTTP/1.1 200 OK,其中这个200就是服务器返回给客户端的状态码,200表示成功。HTTP协议中状态码由3位数字组成,第一位数字对状态进行了分类,有以下5类。

  • 1XX:信息提示。表示请求已被服务器接受,但需要继续处理,范围为100~101。
  • 2XX:请求成功。服务器成功处理了请求。范围为200~206。
  • 3XX:客户端重定向。重定向状态码用于告诉客户端浏览器,它们访问的资源已被移动,并告诉客户端新的资源位置。客户端收到重定向会重新对新资源发起请求。范围为300~305。
  • 4XX:客户端信息错误。客户端可能发送了服务器无法处理的东西,比如请求的格式错误,或者请求了一个不存在的资源。范围为400~415。
  • 5XX:服务器出错。客户端发送了有效的请求,但是服务器自身出现错误,比如Web程序运行出错。范围是500~505。

常见的一些状态码如下:

200:请求成功

404:请求资源不存在

400:请求不能被服务器解读

500:服务器内部错误

  • Server:服务器所使用的Web服务器名称。攻击者可以通过查看该头信息,来探测Web服务器名称。所以一般服务器端会对该头信息进行修改。就行百度的这个一样。
  • Cache-Control指定客户端对网页的缓存策略。

请求信息和相应信息可以通过wireshark来抓包获取,具体方法如下。

wireshark可以在网上下载,随便哪个版本都可以。下载安装好以后,打开软件。我的可以看到如下界面:

界面中显示波动变化的就是你访问网络的方式,比如我的就是WLAN。这个根据自己的情况自行选择。双击你选择的那个。然后会弹出如下界面:

在应用显示过滤器这里输入http,然后在你的浏览器上打开一个网站,比如百度。然后你就能在下面的列表中找到http连接。然后点击界面上的那个红色方块,停止抓取。如下:

 然后任意选取一个,然后右键,按照下图所示操作:

 然后就会弹出如下窗口,红色的部分就是请求格式,蓝色的就是响应格式。

 

原文地址:https://www.cnblogs.com/zy666/p/10504258.html