2024年4月24日发(作者:)

WiresharkXX络协议解析原理与新协议添加方法(全文)

AXX:16727800(2021)012021503

第七二二研究所工程师,研究方向为计算机软件;张春芳(1980-),女,湖北武汉人,中国

船舶重工集团公司第七二二研究所助理工程师,研究方向为软件测试。

0引言

XX络协议分析器(network analyzer)是对通用协议的数据包进行解码,并以人可读的格式

显示XX络流量内容的软件或设备。由于XX络协议种类繁多,各种新协议层出不穷,因此分析

器必须具有良好的可扩展性,可方便地支持新的协议。

Wireshark是一款免费开源的协议分析器,是目前应用最广泛的XX络协议分析软件之一。

本文介绍了WireSharkXX络协议解析的原理与新协议添加的方法,并分析了向WireShark中

添加新协议解析器的两种方法,并对自定义的XX络协议给出添加步骤。

1Wireshark系统结构

WireShark的系统结构如图1所示,主要功能模块如下:①GTK 1/2:图形窗口工具,操

控所有的用户输入/输出界面;②Core:将其它模块连接起来,起到综合调度的作用;③Epan:

Wireshark协议解析器;④Capture:数据包捕获引擎,依赖于底层库WinPcap/libpcap库;

⑤Wiretap:从磁盘读写数据包文件的引擎。

- 1 -

2数据包协议解析原理

2.1协议树

基于OSI的7层协议模型,协议数据是从上到下封装后发送的,而对于协议解析需要从下

至上进行。首先对XX络层的协议识别后进行组包还原,然后脱去XX络层协议头,将里面的数

据交给传输层分析,这样一直进行下去,直到应用层。

由于XX络协议种类很多,就Wireshark所识别的500多种协议来说,为使协议和协议间

层次关系明晰,从而对数据流中各层次的协议能够逐层处理,Wireshark系统采用了协议树的方

式,如图2中所示。图2中UDP协议的所有数据都是封装在IP协议中的,那么UDP协议就

是IP协议的一个协议子节点,具有相同父节点的协议成为兄弟节点,如TCP与UDP节点。

图1Wireshark的系统结构图图2一个简单的协议树

Wireshark采用协议的特征字来识别拥有同样父协议的兄弟节点协议。每个协议注册自己

的特征字,这些特征字给子节点协议提供可以互相区分开来的标识。在Wireshark中注册一个

协议解析器首先需要指出它的父协议是什么,另外还需指出自己区别于父节点下所有兄弟节点

协议的特征字。

由于采用了协议树加特征字的设计,Wireshark在协议解析上具备了很强的扩展性,增加

一个协议只需要将该协议相关的解析函数挂到协议树上相应的节点即可。

2.2添加协议解析器的方式

- 2 -