http协议是互联网上应用最为广泛的一种网络协议,它工作在应用层,由请求和响应构成,是一个标准的客户端服务器模型,http是无状态的协议。我们接下来要做的,是通过网络嗅探工具来捕获网络中传输的http包,从分析数据包的角度来学习http协议。
1、获取wireshark
https://www.wireshark.org/
2、筛选HTTP流量
1、基于名称的写法
#筛选指定域名
http.hsot == "www.51cto.com"
#筛选指定字符串
http.host contains"51cto"
#筛选指定referer头部
http.referer == "http://www.51cto.com"
2、基于请求方法
#GET
http.request.method == GET
#筛选所有http请求
http.request
#筛选所有http响应
http.response
#筛选指定url的http请求
http.request.uri == "im.taobao.com"
3、基于HTTP状态码
#筛选客户端错误包
http.response.code >= 400 and http.response.code <= 499
#筛选服务器端错误包
http.response.code >= 500 and http.response.code <= 599
3、初步观察
到这一步,我们已经通过wireshark捕获到浏览器或客户端访问服务器端的数据包,并筛选出具体的HTTP包,接下来,我们来看看HTTP协议在数据包中体现的交互过程。
1、 客户端向DNS服务器请求服务器地址
2、 DNS服务器响应客户端请求
3、 客户端与服务器端建立连接,TCP三次握手
4、 服务器与客户端一系列交互(GET,POST,PUT,HEAD。。。)
5、 用来承载HTTP数据的TCP包
6、 结束通信,TCP四次握手
知道了大体的流程,下面来看看具体数据包的实例,以旺信PC版为例,仅作学习之用。
1、获取DNS
2、返回域名以及IP
3、根据域名或IP筛选出具体的流量
4、对这股大流量另存后再次筛选并追踪流
5、具体分析
1、http信息分解
GET //wwxb.5.13?cache=10155&nick= HTTP/1.1\r\n
#请求的类型,URL,HTTP版本信息
Accept:image/gif
#请求的资源类型
User-Agent : SimpleHttpFetch
#执行http请求的客户端类型
Host:gm.mmstat.com
#客户端访问的主机名
Cookie:cna.......
#cookie信息
HTTP /1.1 200 OK
#协议版本,响应状态码
Content-Type:
#响应的资源类型
Connection:Keep-Alive
#长链
Set-Cookie:
#设置与页面关联的cookie
更多详见:http://www.runoob.com/http/http-header-fields.html
2、Content-Type(常见)
1、文件类型text/plain、text/html、text/javascript:表示通过HTTP访问的文件类型为文本文件
2、文件类型text/jpeg、image/gif:表示通过HTTP访问的文件类型为图片
3、文件类型application/json、application/javascript等,表示通过HTTP访问的文件类型为应用程序
Content-Type有很多,这里只列出几种,更多详见:http://www.runoob.com/http/http-content-type.html
3、响应状态码(常见)
200:成功
301:临时重定向
302:永久重定向
404:资源未找到
。。。
更多详见:http://www.runoob.com/http/http-status-codes.html
1、服务器域名可以通过DNS响应找到
2、服务器IP可以通过nslookup 域名 找到
3、域名确认可以whois查询
4、域名功能可以通过请求方法以及响应头信息看出
原文地址:http://blog.51cto.com/jiayimeng/2073578