Ⅰ. 协议分析用途
协议分析(Protocol Analysis), 也称作网络分析(Network Analysis), 是进入网络通信系统, 捕获穿行在网络中的数据, 收集网络统计信息, 将数据包解码为可阅读形式的过程.
本质上讲, 协议分析是在窃听网络通信, 协议分析的同时, 也在揭示不同类型的, 有潜在价值的信息, 甚至能够破坏信息.
协议分析, 需要用到协议分析器. 协议分析器通常用于诊断网络故障, 分析器安装在网络上, 并配置相关文件, 用来抓取存在问题的通信序列, 也能通过读取电缆系统中传输的数据包, 识别出通信过程中存在的缺陷和错误.
例如, 在我们日常生活中, 如果 web 客户端不能连接到指定的 Web 服务器上, 协议分析器就可以用来捕获它们之间的通信. 通过查看通信的内容就可以发现客户端解析 Web 服务器 IP 地址的过程, 定位本地路由器的硬件地址, 查看提交给 Web 服务器的连接请求.
协议分析器也能用来测试网络, 通过侦听不同寻常的通信, 这种方式比较被动, 只有当通信真的出问题时才能侦测出来. 当然, 也可以选择主动的方式来完成侦测, 向网络中发送数据包, 侦测某方面问题.
比如, 假设防火墙被配置为阻塞特定类型的数据流进入本地网络, 为了确定这一功能是否正常实现, 可以有两种方法. 一种是协议分析器从防火墙后侦听数据流, 确定要被阻挡的数据流是否被转发; 另一种方法是, 协议分析器向防火墙发送测试数据包, 以便确定某些不可到达的数据流是否会被防火墙转发.
防火墙作用示意图
协议分析器还能够被用于收集网络性能的趋势数据. 大多数的分析器都有能力跟踪网络数据流的短期和长期趋势变化. 常见的趋势包含网络利用率, 每秒钟数据包的速率, 数据包长度分布以及在用协议等, 我们可以利用这些信息跟踪网络随时间发生的细微变化.
Ⅱ. 协议分析器的基本要素
协议分析器一般要具有如下的一些要素:
. 混杂模式的网卡和驱动程序
. 包过滤器
. 跟踪缓冲区
. 解码功能
. 警报器
. 统计功能
协议分析器构造示意图
1混杂模式的网卡和驱动程序
如要素图所示, 数据包从网络 (分析器使用网卡与之连接) 进入分析器系统. 协议分析器所使用的网卡和驱动程序必须支持混杂模式操作(Promiscuous Mode Operation).
运行在混杂模式下的网卡能够捕获发送给其他设备的广播数据包, 多播数据包, 单播数据包和错误数据包.
我们可以在与混杂模式网卡和驱动程序一起运行的分析器能够看到以太网冲突碎片 (Ethernet collision fragment), 超长数据包, 超短数据包(超短包) 和在非法边界上结束的数据包. 后面的这些类型的数据, 反映了传输错误, 在正常情况下, 非混杂模式的网卡会忽略这些数据.
以太网冲突碎片, 是网络上出现的一种窜改数据流. 当两个数据包几乎同时发送时, 出现相互窜改, 就会产生随即混杂信号. 随着数据流的增大, 相互窜改的冲突出现的频率增加.
超长数据包, 是指数据包大小 (以字节为单位) 超过了所用网络的 MTU(最大传输单元), 表明网卡或驱动程序软件存在某种类型的问题.
超短数据包, 也叫超短包(Runt), 不满足最小数据包长度的要求, 表明发生了某些潜在的硬件或驱动程序问题.
非法边界结束的数据包, 是指没有正确结尾的数据包, 可能是受到硬件或软件问题的影响而被截断.
2包过滤器
包过滤器定义了协议分析器想要捕获的数据包的类型. 假设要抓取网络中穿行的广播 (broadcast) 类型数据包, 可以设置一个仅仅允许广播数据包流入分析器的过滤器.
当过滤器应用到入站数据上时, 通常称为捕获过滤器(Capture Filter), 或者也可以叫作预过滤器(Pre-Filter).
还可以把过滤器应用到已经捕获的一组数据包上. 与捕获全部数据相比, 这种方法可以创建更容易观察的感兴趣的数据包子集.
如果我们已经设立了一个捕获广播数据包的过滤器, 并且已经捕获到了 1000 个广播数据包, 那么就可以用第二个过滤器, 称为显示过滤器(Display Filter), 该过滤器以特定源地址为基准, 构造了一个广播数据包的子集. 该方法能够把要观察的数据包数量减少到一个合理水平.
一般情况下, 都是基于各种数据包特征来设置过滤器:
. 源数据链路地址
. 目的数据链路地址
. 源 IP 地址
. 目的 IP 地址
. 应用程序或进程
3跟踪缓冲区
数据包流入到分析器的跟踪缓冲区中, 跟踪缓冲区是一个用于保存从网络上复制而来的数据包的区域, 可以理解为这是一块为分析器留出的内存区域.
大多数分析器都拥有一个默认为 4MB 的跟踪缓冲区.
4解码功能
解码操作可以用于已捕获并保存在跟踪缓冲区中的数据包, 使得这些数据包以可读方式展示, 给出了数据包的字段并解释其值. 解码其实就是数据包的翻译工具.
解码能够分离数据包首部的所有字段, 定义源 IP 地址和目的 IP 地址, 说明数据包的用途.
5警报器
协议分析器都有一个配置的警报器, 表明非正常的网络事件或错误.
常见警报类型有四种: 广播风暴, 超过利用率阈值, 请求被拒绝和服务器关机.
6统计功能
协议分析器可以显示有关网络性能的统计信息, 我们可以通过这些统计信息识别网络运行中的细微变化, 识别网络模式的峰值突变.
Ⅲ. 协议分析器的实际使用
协议分析器的功能非常强大. 举个实际例子, 我们日常生活中最常用到是交换网络, 即使用交换机连接到的网络上, 分析器在交换网络上可以看到多播数据包, 广播数据包, 专门导向到分析器设备的数据包, 发送到还没有被端口识别的地址的初始数据包.
对交换网络进行分析, 有三种基本方法:
对网络分析常用的三种方法
1端口重定向 (Port Redirection), 交换机可以配置成将通过一个端口的数据包重定向(可以理解为复制) 到另一个端口. 把分析器放置到目标端口, 可以侦听到所有相关端口的通信状况.
这一过程被称为端口跨越 (Port Spanning) 或端口镜像(Port Mirroring).
2远程监控 (Remote Monitoring,RMOM), 使用简单网络协议(SNMP,Simple Network Management Protocol) 在远程交换机上收集数据流数据, 并把数据发送到管理设备, 即分析器.
3集线器分出(Hubbing out/tab Device), 在服务器和交换机之间放置一个集线器, 把分析器连接到集线器上, 就可以浏览到服务器上和从该服务器发出的所有数据流.
在一条网络连接上, 分支器 (Tab) 把某个交换端口的信号拆分, 使所有数据流都有一个备份进入两个端口, 一个是目的端口, 另一个就是协议分析器的端口. 也就是说, 分支器可以吧所有接收 (RX) 和发送 (TX) 通信合成单个接收 (RX) 通道, 把数据流送入分析器的端口.
来源: http://www.jianshu.com/p/57653d2ab80e