应用Wireshark抓取HTTP数据包并分析包内内容

来源:互联网 发布:map java源码 编辑:程序博客网 时间:2024/05/21 15:46

打开Wireshark,选择无线网络连接接口,并在Capture Options的设置中设置Capture Filter为host 加上所要访问的主机的IP地址,这里我选择了host 106.187.38.4然后点击start按钮,如下图1所示:
图片1
那么就开始抓取本主机与目标主机之间的数据包了。然后再浏览器中打开相应的网页,接着在filter中选择http,就把抓到的所有类型的数据包中的http包滤出来了,如下图2所示:
图片2
从图2中可以看到抓到的http数据包,双击其中一个包就可以看到包内的具体内容,如下图3所示:
图片3
还可以右键单击,然后选择Follow TCP Stream,如下图4所示:
图片4
这样就可以看到请求加响应的http报文了,如下图5所示:
图片5
图5中的请求跟响应报文就是我所要分析的http报文。

分析请求报文:

该请求报文中只有起始行和首部,没有主体。起始行中的方法是GET,URL是/u/hanshuangshuang,版本号是HTTP/1.1。
接下来的是7个首部
1、Host:gitlab.hudoumiao.com
说明了服务器主机名是gitlab.hudoumiao.com
2、Connection:keep-alive
说明了客户端与服务器之间的TCP通信连接是持久链接
3、Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp, * / *; q=0.8
说明了客户端所能接收的媒体类型,且q值代表了优先级
4、User-Agent:…………
指明了发起请求的应用程序名称
5、Accept-Encoding:gzip,deflate,sdch
说明了客户端所能接收的编码类型有gzip,deflate和sdch
6、Accept-Language:zh-CN,zh;q=0.8
说明了客户端所能接收的语言,q值说明了语言类型的优先级
7、Cookie:………………..
用户的标签,用来服务器识别请求的用户,在这里有名值

响应报文分析:

该响应报文由起始行、首部和主体三部分组成。起始行中的版本号是HTTP/1.1,状态码是200,原因短语是OK。接下来是十五个首部
1、Server:nginx
标识了服务器软件是ngix
2、Date:Sat,15 Aug 2015 02:31:08 GMT
说明了响应报文产生的时间
3、Content-Type: text/html; charset=utf-8
说明了主体的媒体类型是text/html,字符集是utf-8
4、Transfer-Encoding: chunked
说明了响应报文采用了分块编码的传输编码,这也是首部中没有Content-Length首部的原因
5、Connection: keep-alive
说明了客户端与服务器之间通信是持久连接
6、Status: 200 OK
说明了对请求报文的响应状态
7、X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-UA-Compatible: IE=edge
上面的四个首部是扩展首部
8、Cache-Control: max-age=0, private, must-revalidate
该首部说明了缓存状态,max-age=0说明了服务器请求缓存不要缓存文档,即每次访问的时候都进行刷新,must-revalidate进一步说明了缓存没有跟服务器进行验证的情况下,不能提供这个对象的陈旧副本
9、Set-Cookie:………………………
服务器贴到客户端的标签,该首部中有强制的名值组合,还有path属性,还有该cookie的生存周期
10、X-Request-Id: 76494f45-4f41-4222-be4e-db9dfa0828b5
X-Runtime: 0.470905
这两个首部也是扩展首部
11、Content-Encoding: gzip
说明了主体的编码类型为gzip

至此响应报文的首部全都结束,接下来的是响应报文中的主体,也就是该HTTP报文所传送的真正内容。

0 0
原创粉丝点击