协议分析

6 views
Skip to first unread message

paska

unread,
Mar 15, 2008, 12:48:39 PM3/15/08
to 姚博士的论坛-教学
如何识别捕获的网络数据包是属于哪个协议的呢?这需要了解数据包的封包格式,数据包头部各字段的含义以及各种协议的特点。以以太网中传输的数据包为例,
数据包头是一个以太网头,以太网头部格式是
目的MAC地址(6字节)+源MAC地址(6字节)+类型(2字节)
类型说明了封装的协议类型,比如0800表示封装了TCP/IP包,0806表示封装了ARP包,0835封装了RARP包。

如果类型值是0800,那么以太网头部后面就是IP头部,了解IP头部格式的人都知道IP头部有一个协议字段,它表明了IP层封装的高层协议类型,比如
1代表ICMP协议,2代表IGMP协议,3代表GGP协议,6代表TCP协议,17代表UDP协议等。

TCP、UDP等又服务于了应用层协议,这些协议一般是根据端口号来识别的,比如TCP头部端口字段的值为21时表示FTP协议,80表示HTTP协
议,UDP头部端口字段值为53时表示DNS协议,等等。但是一些应用层协议不使用固定的端口号,我们需要采用其它的方法。比如BT协议,BT数据包是
封装在TCP中传输的,它采用的端口号是随机的,通过学习BT协议文档可以知道,BT的peers在建立连接时的握手阶段,会发送一个包含特征
串“BitTorrent Protocol”的请求连接数据包,建立连接之后,peers之间的数据传输则采用固定的端口号,因此,如果捕获
到“BitTorrent Protocol”这个特征串之后记录下此时的端口号,以后通过这个端口的数据都可以判定为BT数据。

所以,如果想要识别某种协议的数据包,多去看看这些协议的RFC文档吧。


Ethereal对一个非常好的协议分析软件,它是基于Winpcap开发出来的。Ethereal界面包括三部分:第一部分为捕获到的所有数据包的简
单说明;第二部分是对选中的某个数据包的详细说明,它标出了数据包的格式以及每个字段的含义;第三部分是原始数据包的十六进制表示。如果对数据包的格式
不是很了解的话,可以借助这个软件来分析一下。
Reply all
Reply to author
Forward
0 new messages