摘要:利用Ethereal抓包软件捕捉实时的数据包,继而根据网络协议分析流程对数据包进行实际解包分析,使研究人员能对数据包的抓包解包流程和方法有一个更具体的认知,为网络协议的分析提供了技术手段。 关键词:网络协议分析 数据包 ethereal
0.引言
Ethereal是当前较为流行的一种计算机网络调试和数据包嗅探软件。Ethereal是一个开放源码的网络分析系统,也是是目前最好的开放源码的网络协议分析器,支持Linux和windows平台。用户通过 Ethereal,同时将网卡插入混合模式,可以查看到网络中发送的所有通信流量。 Ethereal 应用于故障修复、分析、软件和协议开发以及教育领域。它具有用户对协议分析器所期望的所有标准特征,并具有其它同类产品所不具备的有关特征。通过应用Ethereal软件抓获数据包并加以分析,对于网络协议的分析有非常大的意义。
1. 抓捕实时数据包
1.1Ethereal软件简介
图1 Ethereal操作界面
Ethereal软件操作界面如图1所示,整个界面分为三个三个窗口。分别为包列表(Packet
List)、 包细节(Packet Details)和包字节(PacketBytes)三栏窗口。在包列表窗口,可以对已抓取的包根据抓包时间、源地址、目标地址、协议等进行排序,以便查找研究所需要的包。包细节窗口以树型结构显示协议各层次信息。包字节窗口以十六进制和ASCII码显示信息包的具体数据。
Ethereal软件的菜单主要有File、Edit、View、Go、Capture、Analyze、Statistics、Help。其中File菜单包括了文件的打开、保存、打印以及系统的退出等等。Edit菜单有对数据包搜索标记等功能。View菜单主要有对数据包视图显示效果改变的功能。Go菜单有前进后退跳转等功能。Capture菜单可进行开始或停止抓包的操作并可以对抓包要求进行设置。Analyze菜单和Statistics菜单负责分析和统计的功能。Help菜单包括用户指南等功能。
1.2利用Ethereal抓包
先通过Capture菜单下的子菜单Options进行抓包设置。
图2 Capture-Options 界面
Interfaces:指定在哪个网卡上抓包。一般情况下都是单网卡,所以使用缺省的就可以了。Capture packets in promiscuous mode:是否打开混杂模式。如果打开,抓取所有的数据包。一般情况下只需要监听本机收到或者发出的包,因此应该关闭这个选项。Limit each packet:限制每个包的大小,缺省情况不限制。Filter:过滤器。只抓取满足过滤规则的包。File:如果需要将抓到的包写到文件中,在这里输入文件名称。ring buffer: 是否使用循环缓冲。缺省情况下不使用,即一直抓包。注意,循环缓冲只有在写文件的时候才有效。如果使用了循环缓冲,还需要设置文件的数目,文件多大时回卷。其他项:选择缺省的就可以了。设置后点击Start即开始抓包。图3即为所抓部分数据包的截图。
图3 所抓获部分数据包
2. 网络协议分析
数据包是TCP/IP协议通信传输中的基本数据单位,在不同的协议层,将根据所采用的协议封装成相应协议数据单元。协议分析流程见图4。
以太帧判断网络层协议标志0806 APR协议分析 IP协议分析 11 0800 判断传输层协议标志UDP协议分析 TCP协议分析 ICMP协议分析 06 RARP0835 协议分析 01 20/21 FTP协议分析 判断应HTTP用80 层协议协分析 议标志Telne23 t协议分析 当应用层的报文通过TCP/IP网络协议到达物理层传输时,各层协议都在数据包上封装一个报头。下面以实际捕捉的编号为16的数据包(图3包列表选中的数据包)为例,自底向上分析层的网络协议。
2.1数据链路层
在TCP/IP体系结构中,到数据链路层的数据被封装成MAC帧。最常见的MAC帧是以太网V2的标准,格式如图5所示。从图3的包细节窗口可以查看MAC帧的首部信息,以16进制表示为:
08 9e 01 14 77 0e 1c aff7 c2 eb 60 08 00
图5 以太网V2 MAC帧格式
对照图5可知:根据数据链路层以太网协议,可以确定此帧目的MAC地址为089e 01 14 77 0e;源MAC地址为1c aff7 c2 eb 60;帧的类型是0 x 0800,根据网络协议分析流程图可判断网络层采用的是IP协议,也就是说这个帧封装了IP数据报。
2.2网络层
在TCP/IP体系结构中,到达网络层的数据被封装成IP数据报(Packet)。 从图3的包细节窗口中查看IP数据报的首部信息, 用16进制表示为:
45 00 00 34 0000 40 00 31 0677b2 3a cd d634 c0 a8 00 68
IP数据报的首部格式如图6所示:
图4 网络协议分析流程图
图6 IP数据报首部格式
对照图6分析此数据报信息: 版本号为4,即IP层使用的是IPv4的版本; 报头长度5个单位(20字节); 服务类型字段0x 00表示是普通数据报; 数据报总长度字段0x 00 34,为52字节;标识为0x00 00,当数据报需要分片传送时,这个字段用来指出接收到的数据片属于哪一个数据报; 标志字段4表示该报文未分片; 片偏移为0; 生存时间0x 31, 即49 hop;协议字段0x 06,根据图2判断传输层协议标志表明传输层使用的是TCP协议, 即IP层封装了TCP报文段(Segment); 首部校验和字段0x 77 b2,在IP层仅对首部进行检验, 经检验首部数据无误;源IP地址是3acdd6 34(58.205.214.52), 目的IP地址为c0a80068(192.168.0.104)。
2.3传输层
通过对网络层的分析,可判断出数据包在传输层使用了TCP协议。从图3的包细节窗口中查看TCP报文段的首部信息,用16进制表示为:
00 50 c8 22 f327 e7 89 44 a2 c6 b4 80 12 39 08 b5 9d 00 00
TCP报文固定首部格式如图7:
图7 TCP报文段固定首部格式
分析得出: TCP源端口为0x 00 50(80), 端口号80是HTTP协议数据传输的保留端口, 根据图2判断应用层协议标志表明应用层使用的是HTTP协议; 目的端口号0xc822(51234), 此端口是FTP用户端的端口号。报文段序号为0x f3 27 e7 89,包细节窗口显示了相对于建立连接的初始握手序列号的相对值0(图3);确认号为0x44 a2 c6 b4;标志位0x 00 12指示ACK标志为1, 表明确认号有效; 窗口字段为0x39 08,表明接收的最大窗口为14600字节,这个字段用于流量控制。校验和字段0xb59d,用于检验HTTP报文段,目的是为上层提供可靠服务;URG标志为0与紧急指针为0x 00 00,表示该报文段为非紧迫数据。
2.4应用层
因篇幅问题不能全部显示,请点此查看更多更全内容