

Wireshark (前称Ethereal) 是一款免费开源的协议解析器,是目前世界范围内应用最广泛的网络协议解析软件之一。在GNUGPL 通用许可证的保障范围内,使用者可以免费取得该软件及其源代码,并可以根据自身的需要对Wireshark 进行定制或扩展。它使用WinPCAP 作为接口,直接与网卡进行数据报文交换。
Wireshark 工作界面是可视化的图形界面,分为上、中、下三部分:上部分列出所有捕获到的数据包,可以看到各个数据包较详尽的总结性信息;中间部分为数据包协议信息,用来显示某个指定数据包经过网络各层使用的协议信息:工作界面下部分是显示指定数据包的内容,该内容以十六进制形式显示,也就是数据在物理层上传送时的最后形式。
WireShark 能够在网卡接口处捕捉数据包、并实时显示包的详细协议信息:能够打开/保存捕捉的包、导入导出其他捕捉程序支持的包数据格式:能够在网卡处有选择性捕捉数据包、在捕捉到的包中也可以有选择性的显示不同条件的数据包:还可以显示多种统计分析结果(比如TCP , UDP 流、各个协议层统计信息等) ,同时扩展了大量的Ethereal(Wireshark 前身)既不支持的协议,支持在UNIX 和Windows 平台下进行开发。其系统结构如图6-7 所示。

Wireshark 系统结构的6 个功能模块如下:
( GTK 1/2: 图形窗口编程工具。
② Core: 将其他模块连接起来,起到综合调度的作用。
③Epan: Wireshark 对协议的具体解析,其中协议解析器的开发包括内置(built-in)和插件(在plugin)的方式。
④ Win-/libpcap: 底层抓包工具,提供了一整套的抓包函数库。
⑤ Capture: 抓包引擎。
⑥ Wiretap: 向磁盘读写包文件,包括libpcap 和其他格式的包文件。
Wireshark 的结构主要由Capture Core 、win-/libpcap 、WireTap 、Dissector 几个核心模块构成。综合调度模块Capture Core 调用底层抓包工具win-/libpcap 获得网络数据,并调用磁盘读写包模块WireTap 写入本地磁盘。因为数据是二进制文件,所以必须谓用解析器模块Dissector 对二进制数据进行协议解读,并把协议部分的各个字殷信息进行详细地呈现。解析器Dissector 的核心工作就在于数据包详细内容窗口部分的树影结构的维护,并结合过滤器、数据包列表等部分,进行筛选与信息的呈现。当用户需要对新协议进行开发,实质上就是对Dissector 进行拓展, Dissector 可以是内置形式的(Buí1d-间,也可以是插件形式的(plug-in) ,所以,基于Wireshark的协议解析器开发有两种模式,即:Build-in、Plug-in 。
| 各省软考办 | ||||||||||