这篇文章主要介绍一下 Wireshark 抓包工具获取到的 HTTP协议 相关的数据,然后对这些数据进行简单的分析,主要目的是更深入的理解 HTTP协议,然后了解一下网络为什么要分层, OSI模型和TCP/IP模型的区别。
1.HTTP 协议抓包实战(Wireshark)
1.1 打开 Wireshark 工具,选中正在使用的网卡 以太网4(以自己电脑实际使用为准),点击 捕获,然后选择 选项:
1.2 在新窗口中的过滤栏中输入 port 80:
Tips:输入
port 80之后点击开始即可开始捕获,port 80表示筛选出和80端口相关的数据请求。
1.3 打开 Telnet 工具模拟 HTTP 请求:
telnet singwa666.com 80 GET /themes/simpleboot3/portal/public/assets/css/moco.css HTTP/1.1 Host: singwa666.com
如下图所示:
1.4 Telnet 模拟 HTTP 请求之后,点击左上角红色 按钮停止抓取报文:
1.5 找到 WireShark 中抓取到的该条 HTTP 请求的相关报文:
Tips:找到
Telnet中模拟请求的那条数据双击。
1.6 双击该条HTTP 请求数据:
Tips:如图所示看到的报文信息都是符合基于
ABNF描述的HTTP协议格式规范的。
2.Chrome 抓包:Network 面板分析
2.1 Network 示意图
Tips:从
概要可以看出,29 requests表示29个请求,46.9 kB transferred表示通过网络传输了46.9KB数据,960 kB resources表示页面加载了960KB的资源,Finish: 421 ms表示总共完成花了421 ms时间,DOMContentLoaded: 201 ms表示DOM内容加载总共消耗201 ms,Load: 376表示DOM加载消耗了376 ms。
2.2 Network 面板说明
- 控制器:控制面板的外观和功能
- 过滤器:过滤请求列表中显示的资源(按住 Ctrl 可以选择过滤多个条件)
- 概览:显示
HTTP请求、响应的时间轴 - 请求列表:默认时间排序,可选择显示列
- 概要:请求总数、总数据量、总花费时间
2.3 控制器说明
- 开始抓包
- 停止抓包
- 清除请求
- 要跨页面加载保存请求,比如某个网站页面有跳转时想保留原来的请求列表,可选择该项
- 停止使用缓存
- 离线模拟:
- 模拟其他网速连接:,其中包含了自定义网速
- 隐藏 Filter 窗格
- 手动清除缓存:右键点击请求选择
Clear Browser Cache
2.4 过滤器说明
- 过滤
All、XHR、JS、CSS、Img、Media、Font、Doc、WS(WebSocket)、Manifest、Other类型。 - 按住 Ctrl 可以选择过滤多个条件。
- 按时间过滤:概览面板,拖动滚动条。
Hide Data URLs:domain:
2.5 请求列表
- 默认是时间排序
- 按列排序
- 按照活动时间排序,
Start Time发出的第一个请求位于顶部,Response Time开始下载的第一个请求位于顶部,End Time完成的第一个请求位于顶部,Total Duration连接设置时间和请求/响应时间最短的请求位于顶部,Latency等待时间最短响应的请求位于顶部 Names:资源名称Status:HTTP状态码Type:请求的资源的MIME类型Initiator:发起请求的对象或进程,Parser(解析器)表示Chrome的HTML解析器发起了请求,Redirect(重定向)表示HTTP重定向启动了请求,Script(脚本):脚本启动了请求,Other(其他):一些其他进程或动作发起请求,例如用户点击链接跳转到页面或在地址栏中输入网址
3. OSI 模型
OSI (Open System Interconnection Reference Model)模型是一种理论概念模型,并未真正被实现过,但是在实现网络协议需要参考这种模型,才能更好的去理解网络中的协议和分层:
Tips:
应用层解决的是业务问题,表示层负责把网络中的消息转化为应用层可以读写的消息(如TLS/SSL),会话层负责建立会话、握手、维持连接、关闭,传输层解决进程与进程之间的通信,网络层负责ip地址之间建立连接,数据链路层负责局域网中连接MAC地址连接到中交换机、路由器等,物理层主要负责信号是如何传递的。
4.TCP/IP 模型
实际在因特网中使用的是 TCP/IP 模型,在 TCP/IP 模型中对 OSI 模型做了很多简化,比如应用层没有对 表示层、会话层做严格的区分,数据链路层和 物理层也没有做严格的区分:
Tips:网络分层中各层只需要负责各层自己所做的事情,不用关心其它层的工作,但会增加额外的数据处理延迟。
5.报文头部
6.抓包分析
下载一个抓包演示用的报文文件,地址 http://www.singwa666.com/demo.pcapng:
6.1 首先用 WireShark 打开报文文件,并且用 http 过滤:
6.2 点开其中的一条进行分析:
6.3 点开 Ethernet II 可以看到数据链路层相关的数据:
Tips:以太网层展示了
MAC地址相关信息。
6.4 点开 Internet Protocol ... 可以看到 IP层 相关的数据:
6.5 点开 Transmission Control Protocol ... 可以看到 TCP层 相关的数据:
6.6 点开 Hypertext Transfer Protocol 可以看到 应用层 HTTP 相关的数据:

























