C++课程设计(论文)-数据包捕获与分析.doc
《C++课程设计(论文)-数据包捕获与分析.doc》由会员分享,可在线阅读,更多相关《C++课程设计(论文)-数据包捕获与分析.doc(33页珍藏版)》请在三一文库上搜索。
1、数据包捕获与分析摘 要 本课程设计通过Ethereal捕捉实时网络数据包,并根据网络协议分析流程对数据包在TCP/IP各层协议中进行实际解包分析,让网络研究人员对数据包的认识上升到一个感性的层面,为网络协议分析提供技术手段。最后根据Ethereal的工作原理,用Visual C编写一个简单的数据包捕获与分析软件。关键词 协议分析;Ethereal;数据包;Visual C1引言本课程设计通过技术手段捕获数据包并加以分析,追踪数据包在TCP/IP各层的封装过程,对于网络协议的研究具有重要的意义。Ethereal是当前较为流行的图形用户接口的抓包软件,是一个可以用来监视所有在网络上被传送的包,并分
2、析其内容的程序。它通常被用来检查网络工作情况,或是用来发现网络程序的bugs。通过ethereal对TCP、UDP、SMTP、telnet和FTP等常用协议进行分析,非常有助于网络故障修复、分析以及软件和协议开发。,它以开源、免费、操作界面友好等优点广为世界各地网络研究人员使用为网络协议分析搭建了一个良好的研究平台。1.1课程设计的内容(1)掌握数据包捕获和数据包分析的相关知识;(2)掌握Ethreal软件的安装、启动,并熟悉用它进行局域网数据捕获和分析的功能;(3)设计一个简单的数据包捕获与分析软件。1.2课程设计的要求(1)按要求编写课程设计报告书,能正确阐述设计结果。(2)通过课程设计培
3、养学生严谨的科学态度,认真的工作作风和团队协作精神。(3)学会文献检索的基本方法和综合运用文献的能力。(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。1.3课程设计平台Windows XP;Ethereal;Visual C2使用Ethereal对数据包进行捕获与分析2.1软件Ethereal 简介Ethereal (Ethereal:A Network Packet Sniffing Tool)是当前较为流行的一种计算机网络调试和数据包嗅探软件。Ethereal 基本类似于tcpdump,但Ethereal 还具有设计完美的 GUI 和众多分类信息及过滤选项。用户通过 Ethe
4、real,同时将网卡插入混合模式,可以查看到网络中发送的所有通信流量。 Ethereal 应用于故障修复、分析、软件和协议开发以及教育领域。它具有用户对协议分析器所期望的所有标准特征,并具有其它同类产品所不具备的有关特征。Ethereal 主要具有以下特征: 在实时时间内,从网络连接处捕获数据,或者从被捕获文件处读取数据;Ethereal 可以读取从 tcpdump(libpcap)、网络通用嗅探器(被压缩和未被压缩)、SnifferTM 专业版、NetXrayTM、Sun snoop 和 atmsnoop、Shomiti/Finisar 测试员、AIX 的 iptrace、Microsoft
5、 的网络监控器、Novell 的 LANalyzer、RADCOM 的 WAN/LAN 分析器、 ISDN4BSD 项目的 HP-UX nettl 和 i4btrace、Cisco 安全 IDS iplog 和 pppd 日志( pppdump 格式)、WildPacket 的 EtherPeek/TokenPeek/AiroPeek 或者可视网络的可视 UpTime 处捕获的文件。此外 Ethereal 也能从 Lucent/Ascend WAN 路由器和 Toshiba ISDN 路由器中读取跟踪报告,还能从 VMS 的 TCPIP 读取输出文本和 DBS Etherwatch。 从以太网
6、、FDDI、PPP、令牌环、IEEE 802.11、ATM 上的 IP 和回路接口(至少是某些系统,不是所有系统都支持这些类型)上读取实时数据。 通过 GUI 或 TTY 模式 tethereal 程序,可以访问被捕获的网络数据。通过 editcap 程序的命令行交换机,有计划地编辑或修改被捕获文件。 当前602协议可被分割。 输出文件可以被保存或打印为纯文本或 PostScript格式。 通过显示过滤器精确显示数据。 显示过滤器也可以选择性地用于高亮区和颜色包摘要信息。所有或部分被捕获的网络跟踪报告都会保存到磁盘中1。2.2 利用Ethereal捕获数据包安装完Ethereal后,单击Cap
7、ture下的Option菜单,打开捕获选项对话框,设置好捕捉接口(interface)和过滤器(capture filter),设置混杂模式(promiscuous mode)选项(此选项使得网卡并不检验数据帧的目的地址,用以截获网上的任何帧),其他选项可采用默认设置如图2-1,再单击Start按钮即可实时截获数据包。用Ethereal的捕获窗口如图2-2,捕获到的实时网络数据包的部分截图见图2-3。所截获的数据包分别在包列表(PackList)、包细节(Packet Details)和包字节(PackeBytes)三栏窗口中显示。其中上栏的包列表窗口按截获的时间顺序显示出数据包的基本信息:编
8、号(代表收到数据包的次序)、时间、源地址、目的地址协议名称以及关于此数据包的摘要信息;中间栏的包细节窗口以树形显示当前数据包在各协议层的封装细节,包括首部和数据;下栏的包字节窗口则以十六进制和ASCII码显示被截获数据包的详细内容左边一栏显示偏移量,中间一栏显示十六进制数值,右边一栏显示解码后相对应的字符(控制字符示为1个点)。图2-1Ethereal的设置图2-2捕获状态窗口图2-3捕获的数据包2.2 利用Ethereal对捕获数据包进行分析Ethereal是当前较为流行的一种计算机网络调试和数据包嗅探软件,是一个可以用来监视所有在网络上被传送的包,并分析其内容的程序。它通常被用来检查网络工
9、作情况,或是用来发现网络程序的bugs。通过ethereal对TCP、UDP、SMTP、telnet和FTP等常用协议进行分析,非常有助于网络故障修复、分析以及软件和协议开发。(1)ARP协议分析ARP,全称Address Resolution Protocol,地址解析协1它工作在数据链路层,在本层和硬件接口联系,同时对上压供服务。TP数据包常通过以太网发送,以太网设备并不识别32IP地址,它们是以48位以太网地址传输以太网数据包。必须把IP目的地址转换成以太网目的地址。因此,在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?
10、它就是通过地址解析协议获得的。图2-4就是对ARP捕获的状态窗口。ARP协议用于将网络中的IP地址解析为的硬件地址(MAC地址),以保证通信的顺利进行。网络当中经常会使用到ARP协议,所以可以使用Ethereal抓取网络中的ARP数据包,如图2-5,从图2-5中看到,已经捕获到了一些ARP的数据包,每个数据包占一行,比如第1个ARP数据包,从它的info信息里面可以看到对于这个数据包的简要的说明:Who has 10.28.23.140? Tell 10.28.23.250。这个info表明ARP协议的主要功能:通过IP地址找对方的MAC地址。针对ARP协议还可以具体分析它的结构,以往的教学中
11、学生只能从课本上看到ARP协议的图,如图6,学生容易产生疑问,难道真的是这样吗?在我们可以通过分析抓取到的数据包来切切实实地看一下它的结构到底是什.么样的,对照图2-6看一下到底是不是一致。随便找一个ARP的数据包,将其展开可以看到图2-7的结构,对比图2-7中框部分与图2-6中框部分,可以发现两者是一致的,通过对比学生就会对ARP的结构有更深刻的认识2。图2-4ARP捕获状态窗口图2-5捕获的ARP数据包图2-6ARP报文结构图2-7ARP结构(2)利用Ethereal分析TCP/IP机制TCP是一种面向连接的、可靠的传输层协议,TCP数据传(只有连接建立后才可进行数据传输)需要通过在客户端
12、和服端建立特定的虚电路连接来完成,该过程通常被称为“三次握手”,如图2-8,即发送方先发送连接请求,然后接受方进行连接确认,最发送方对接受方再次进确认。下面就以Ethereal捕获的建TCP连接过程的三个数据包为例对TCP/IP协议进行分析。图2-8三次握手示意图为了能够捕获到“三次握手”过程中的数据包,首先让Ethereal一直保持捕获状态(图2-9),因为是通过TCP来建立的,可以将Ethereal的过滤器设置为TCP,此时只捕获所有经过计算机的TCP协议数据包。图2-9TCP捕获状态窗口在保持捕获的状态下,打开一个新的网页,如http:/,由于访问网页首先需要通过“三次握手”建立连接,然
13、后才能进行数据的传输,此时,Ethereal就可以捕获到在访问网页过程中建立连接的TCP数据包(图2-10)图2-10 TCP捕获状态窗口在捕获状态窗口中点击停止,将所有捕获到的数抿所显示出图2-11显示的就是所捕到的前4个数据包,从图中可以看到1号数据包一3号数据包是连接建立过程中的数据包,4号数据包是在连接建立完成以后开始传输数据。图2-11捕获到的数据包客户端发送连接请求,从图2-12可以看出,该数据包封装了三个头信息:以太网(Eth-ernet)帧、IP数据报(IP数据报首部格式如图2-12)和TCP报文段(TCP报文段固定首部格式如图2-13)。在物理链路层,数据以帧的方式进行传输。
14、以太网帧头信息中,描述了该数据包的接收方MAC(MAC的结构如图2-14)地址为00:03:0f:00:0c:4b发起连接请求的源主机MAC为00:03:0d:a4:0f:72,在帧中封装的协议类型type值为0x0800,即IP数据报。在网络层,加工的主要数据对象是IP数据报。IP协议是TCPIP协议族中的核心协议之一,所有的TCP、UDP、ICMP数据都以IP数据报格式传输。从以上请求数据包的IP首部可以看出,此IP数据报版本号(version)为4(即这个数据报为IPv4),首部(head length)为20bytes,服务类型(services field)为0x00,数据报总长(t
15、otal length,即IP首部+数据载荷)为48,标识(identification)为0x96b53,标志(flags)为0x04表示报文不分段,段偏移(fragmen offset)为0,生存时间(time to live)为128,数据报中上层协议类型protocol值为0x06 (即TCP报文段),头部校验和0x1206表示正确,请求主机的IP地址为10.10.23.226,目的主机的IP地址为58.248.245.40。在运输层,主要数据对象是TCP报文。在以上的TCP报文段中,描述了请求方源端口号(source port)为1615;目的端口号(destination port
16、)为80,其中0是HTTP协议的保留端口号;序列号SEQ是本次连接的初始序号,因此在连接请求时相对初始值是0,其实际值是24 68 15 a1;确认号是00 00 00 70;头部长度(header length)为28bytes;标志位(flags)为Ox0002,指示ACK标志为0表明确认号被忽略,SYN=1表示正在进行连接请求,通过SYN和ACK也可以用来区分Connection Request和Connection Accepted,在连接请求中,SYN=1、ACK=0,连接响应时,SYN=1、ACK=1;PSH为0;窗口字段(window size)指示发送方想要接收的最大字节数为6
17、5535;校验和(checksum)为0xf6a表明正确;最后是8bytes的选项字段3。比特0 4 8 16 19 24 31图2-12 IP数据报首部格式比特 0 8 16 24 31图2-13 TCP报文段固定首部格式字节 6 6 2 46-105 4 图2-14以太网V2 MAC帧格式图2-15发送方发出的连接请求数据包对此数据包的具体分析过程如图2-12,在此我们仅涉及连接的过程中一些重要地方的变化:数据包由服务端58.248.245.40发至客户端10.10.23.226。在响应TCP报文段中,源端口和目的端口地址相对改变,相应数据包的起始序列号SEQ为ef 84 c8 9b,确认
18、号为24 68 17 a2 (实际上是请求数据的起始序号加1,也表示下一个希望接收的数据的起始位置),标志位0x0010指示ACK标志为1表明确认号有效、SYN仍然为1。图2-16服务端响应数据包客户端连接确认在TCP连接建立的最后阶段如图2-17,客户端对接受到的服务器相应进行确认,到此为止建立完整的TCP连接,开始全双工模式的数据传输过程。图2-17客户端确认数据包在确认阶段,数据包由客户端10.10.23.226发送至服务端58.248.245.40,TCP中的序列号为24 68 15 a2(即上次服务器响应报文的确认号),报文段中的本次确认号为73 ff 17 ff(即上次的序列号加1
19、)表示客户端下一次希望从主机接收的数据的起始位置;标志位Ox0010指示ACK标志为1表明确认号有效,SYN置为0表示连接建立结束。通过上述利用Ethereal对TCP连接过程的三个数据包的分析,可以看出TCP/IP协议的Three-way handshaking过程如下:第一步,客户端发出连接请求,TCP数据为:SEQ=24 68 15 a2,ACKNUM=00 00 00 00,SYN=1,ACK=0。第二步,服务端确认可以连接,TCP数据为:SEQ=ef 84 c8 9b,ACKNUM=24 68 15 a2,SYN=1,ACK=1。第三步,客户端建立连接,TCP数据为:SEQ=24 6
20、8 15 a2,ACKNUM=ef 84 c8 9b,SYN=0,ACK=1。TCP/IP协议是一个协议族,包含大小上百个协议和标准。通过以上对TCP连接过程的分析,只是提出了使用Ethereal进行协议分析的思路和方法,使用Ethereal也可方便地对其它协议进行分析,例如分析HTTP协议的客户端请求与服务器应答过程及它们的头部格式,分析ICMP协议的错误报告和信息反馈机制等,具体分析方法与上面的分析相似,这里不再赘述4。图2-17客户端确认数据包3用Visual C设计一个简单的数据包捕获和分析软件3.1 Visual C+简介Visual C即VC,微软公司出品的高级可视化计算机程序开发
21、工具。他提供了一套开发环境:Visual Studio,Visual Studio本身包括一个文本编辑器、资源编辑器、工程编译工具、一个增量连接器、源代码浏览器、集成调试工具,以及一套联机文档,借助这套工具,用户可以随心所欲地开发出各种功能的应用软件以及借助OpenGL和DirectX技术开发游戏软件。Visual C+可以识别C/C+并编译,支持MFC类库,并提供了一系列模板,常用的MFC AppWizard(EXE/DLL),MFC ActiveXControlWizard,Win32Application,Win32ConsoleApplication,ATLCOMAppWizard。这
22、种可视化编程环境可以令程序员花更多精力在程序功能的实现上,而不是底层的建设上,这就大大加快了程序开发速度和效率,这也是Visual C+一个显著的特点。利用Visual C+编译出的程序空间小,运行快,比其他的编译工具编译出的软件占据较多优势。现在常用的版本有Visual C+ 6.0/.Net/20055。3.2WinPcap简介WinPcap是一个在Windows操作系统下的免费、公开的用于直接访问网络的开发工具包(编程API)。大多数Windows网络应用程序都是通过Winsock API(Windows套接口)这类高级编程接口访问网络的。这种方法允许在网络上进行简单的数据传送,因为操作
23、系统的TCP/IP协议栈实现软件会处理底层细节(协议操作、流程重组等等),并提供一个类似于读写文件的函数接口。然而,有时候“简便方法”并不能满足实际需要。有些程序希望绕过TCP/IP协议栈,直接处理底层网络中的通信数据,它们需要对网络进行底层进行直接访问,即在没有类似协议栈(TCP/IP协议栈)的实体介入条件下对网络进行原始访问。基于Winsock API编程,应用程序是通过调用操作系统提供的编程接口访问TCP/IP协议栈实现网络通信的。基于WinPcap编程,网络程序实际上是绕开操作系统的TCP/IP协议栈直接通过底层网络发送数据,因此网络程序可以实现一些更低级、更灵活的功能6。3.3建立工
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 论文 数据包 捕获 分析
链接地址:https://www.31doc.com/p-3901776.html