计算机网络监听技术设计

上传人:l**** 文档编号:132296779 上传时间:2020-05-14 格式:DOC 页数:67 大小:7.56MB
返回 下载 相关 举报
计算机网络监听技术设计_第1页
第1页 / 共67页
计算机网络监听技术设计_第2页
第2页 / 共67页
计算机网络监听技术设计_第3页
第3页 / 共67页
计算机网络监听技术设计_第4页
第4页 / 共67页
计算机网络监听技术设计_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《计算机网络监听技术设计》由会员分享,可在线阅读,更多相关《计算机网络监听技术设计(67页珍藏版)》请在金锄头文库上搜索。

1、计算机网络监听技术设计系统目标本课设从实际工程应用角度出发,以计算机网络原理为指导,结合当前网络中的一些常用技术和标准,模拟仿真了一组网络实验。为了能够检验实验的结果,我们开发了这个网络监听工具,帮助实验人员对网络中的信息进行实时的监测、分析,诊断网络故障。同时通过该毕业设计的容,让我们了解各种抓包技术,熟练掌握基于Winpcap开发包的编程模式;了解网络监听技术的新发展和网络安全防的新方向;最后能有所体会。1.1 相关理论与技术的简单介绍1.2.1 网络监听原理共享式局域网采用的是广播信道,也就是说每台主机所发出的帧都会被整个网络的所有主机接收到1。接收主机对帧的处理根据网卡的工作模式来实现

2、。一般网卡具有一下4种工作模式:广播模式,多播模式,直播模式和混杂模式。网卡缺省工作模式是工作在广播和直播模式下的,即只能接收发送给自己和广播的帧。正常情况下接收主机的网卡根据帧中所包含的目标MAC地址或是广播MAC地址进行判断,若等于自己的MAC地址或是广播MAC地址,则提交给上层处理程序,否则丢弃此数据包。当网卡处于混杂模式的时候,它不作任何判断直接把接收到的所有帧交给上层处理程序。网络监听技术就是基于这个原理,来捕获网络中所有的数据包,实现网络监测和流量分析的。交换式以太网是基于数据链路层的点到点的信道,所以简单采用应用于共享式以太网的监听技术是完全失效的。本文主要讨论共享式以太网的情况

3、,最后给出交换式以太网监听难题的解决方案。1.2.2 监听技术相关的实现方法l 原始套接字编程模式2:Raw Socket: 原始套接字可以用它来发送和接收 IP 层以上的原始数据包, 如 ICMP, TCP, UDP.1. 创建了一个 Raw Socket int sockRaw=socket(AF_INET, SOCK_RAW, IPPROTO_RAW);2. 把网卡置于混杂模式用 Raw Socket 实现代码如下:setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*)&flag,sizeof(flag); 设置 IP 头操作选项。flag 标志是用来

4、设置 IP 头操作的, bool flag = ture 也就是说要亲自处理 IP 头。bind(sockRaw,(PSOCKADDR)&addrLocal,sizeof(addrLocal); 把 sockRaw 绑定到本地网卡上,addrLocal 为本地地址: SOCKADDR_IN addrLocal。ioctlsocket(sockRaw, SIO_RCVALL, &dwValue); 让 sockRaw 接受所有的数据。dwValue 为输入输出参数, 为 1 时执行, 0 时取消: DWORD dwValue = 1;3. 捕获数据包recv(sockRaw, RecvBuf,

5、BUFFER_SIZE, 0);/接受任意数据包原始套接字编程模式:优点: 实现简单, 不需要做驱动程序就可实现抓包.缺点: 数据不含帧信息, 不能接收到与 IP 同层的其它数据包, 如 ARP, RARP,IPXl IMD中间层驱动编程模式3:中间层驱动(NDIS intermediate driver)1 核级网络驱动介绍:Microsoft Windows 2000支持三种基本的核级网络驱动,这三层driver顺序从下到上依次为:a) Miniport NIC drivers:微端口网卡驱动,位于最底层,直接操纵网卡并且对高层驱动提供接口。b) Intermediate drivers:

6、IMD中间层驱动位于1和3之间。c) Protocol drivers:高层协议驱动,俗称为TDI(传输驱动程序接口),高于前面两层,直接面向用户级,为用户提供网络服务,也就是绝大多数程序所用到的网络接口。2 IMD驱动 IMD中间层,它的实质很简单,即:中间层插入网卡和协议层之间,对上面的协议层表现为一个虚拟的微端口网卡结构,而对下面的网卡则表现为一个协议层的结构。所以,无论是网卡接收并上传的数据报,还是上层要下送至网卡发送的数据报,无一例外地要经过中间层。3 IMD包过滤技术前面我们已经看到,所有的数据报都要经过中间层,所以,我们可以在中间层加入我们想要过滤的数据报的特征,实现基于中间层驱

7、动的核级包过滤。优势:首先,在驱动级别上做过滤,无须组包,速度快,效率自然就高;其次,所有的数据报无一例外,只要网卡上传的数据报均可以截获,避免了用户级无法得到所有数据报的缺点。缺点:IMD包过滤技术也存在其不可避免的缺点,与操作系统版本关系密切,与硬件联系大,可移植性低,调试困难。l Winpcap编程模式Winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发Winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它提供了以下的各项功能:1. 捕获原始数据报,包括在共享式网络上各主机发送/接收的以及相互之间交

8、换的数据报;2. 在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;3. 在网络上发送原始的数据报;4. 收集网络通信过程中的统计信息。不足:Winpcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据报。也就是说,Winpcap不能阻塞,过滤或控制其他应用程序数据报的发收,它仅仅只是监听共享网络上传送的数据报。因此,它不能用于QoS调度程序或个人防火墙。目前,Winpcap开发的主要对象是windows NT/2000/XP,这主要是因为在使用Winpcap的用户中只有一小部分是仅使用windows 95/98/Me,并且M$也已经放弃了对win9x的开

9、发。其实Winpcap中的面向9x系统的概念和NT系统的非常相似,只是在某些实现上有点差异,比如说9x只支持ANSI编码,而NT系统则提倡使用Unicode编码。1.2 系统需求l 能够捕获所需要的所有以太网数据包l 分析捕获的包类型,报文信息l 数据形式显示当前以太网中数据包的分布情况l 图表形式显示当前以太网中数据包的分布情况l 能表现网络中各个节点的相互通讯情况l 可以保存数据到文件l 在数据包中查找敏感信息(匹配关键字)l 具备简单的网络管理功能l 实现简单的分布式监听第2章 基于Winpcap开发的技术详解讨论了各种不同的编程模式之后,本章将阐明我们选择Winpcap技术的原因,然后

10、将对Winpcap做详细的分析。2.1 选用Winpcap技术的原因:l 提供了一套标准的抓包接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来便于开发各种网络分析工具 l 原始套接字的编程模式中不能捕获ARP和IPX的数据包对SNIFFER软件有着致命的限制,所以不能选择这种方法。l IMD编程模式虽然功能强大,而且灵活性强,但是开发调试难度比较大,不适合作为SNIFFER软件的开发模式,甚至在防火墙开发技术中也不用IMD。l WINPCAP本身不能阻塞,过滤或控制其他应用程序数据报的发收的缺点在我们这个软件的开发过程中,并不影响。所以经过权衡,我选用了Win

11、pcap编程模式来开发MySniffer软件。2.2 Winpcap的结构分析Winpcap的主要思想来源于Unix系统中著名的BSD包捕获结构,它的基本结构如图2.1所示:整个包捕获框架的基础是NDIS(网络驱动器接口规),它是Windows中最低端的与联网有关的软件,主要是为各种应用协议与网卡之间提供的一套接口函数。Winpcap由三个模块组成,一个是工作在核级别上的NPF包过滤器;另外两个是用户级的动态连接库packet.dll和wpcap.dll4。wpcap.dll是packet.dll的上一层封装,提供了编程的高级接口。为了能更好的了解Winpcap的工作原理,我选用了packet

12、.dll作为程序对底层访问的接口。因为基于Winpcap开发涉及到驱动程序开发技术,dll动态连接库开发技术,和vc的MFC应用程序开发技术,所以将对它们做一些介绍。图2.1 Winpcap及NPF的结构图52.3 NDIS驱动开发技术网络驱动程序使用ISO的开放的系统互连网罗标准(OSI),这是一个七层的模型,它的顶层是应用软件层,底层是硬件连接和网络的拓扑结构,网络接口卡(NIC)给大多数的平台提供网络的硬件接口,网络驱动程序是写给指定的NIC的驱动程序。 网络驱动程序接口规(NDIS)给NIC驱动程序提供库支持,通常只允许NIC厂商提供管理硬件特殊细节的MINI驱动程序,更高层的NDIS

13、(中间驱动程序,协议驱动程序)在需要的时候提供媒体转换,过滤。分层的NDIS如图2所示。 WIN2000提供一个分层的核模式软件传输驱动接口(TDI),这个分层的在NDIS层和高层软件抽象像插座和NetBIOS,TDI层使WIN2000的高层结构具有更多的可移植性。 图2.网络驱动程序接口规 2.4 DLL动态连接库技术DLL (Dynamic Linkable Library) 文件通常是一个具有独立功能的程序模块,可以进行单独编译和测试。在运行时,只有当 EXE 程序确实要调用这些 DLL 模块的情况下,系统才会将它们装载到存空间中。这种方式不仅减少了 EXE 文件的大小和对存空间的需求,

14、而且使这些 DLL 模块可以同时被多个应用程序使用,只是增加DLL的计数。当应用程序卸载DLL时,计数则减少,计数为0时DLL就从存被释放。PACKET.DLL就是为上层应用程序开发的,提供操作网卡的模块;而且它屏蔽应用程序直接操作底层协议驱动程序的复杂性。所以应用程序可以使用PACKET.DLL所提供地接口函数,安全简单的操作协议驱动程序,使应用程序更加健壮。第3章 系统功能描述这个网络监听工具虽然不是很庞大,但是有几个功能比较明确,也就是监听功能,显示功能,管理功能,连接功能,所以我把它们划分为四个子系统,来实现。3.1监听子系统监听子系统再划分为三个功能,捕获功能,过滤功能,保存功能;三

15、个功能描述如下:l 捕获功能根据过滤器的设置,捕获ip,arp,ipx,tcp,udp,ospf,icmp,spx,ipx-rip等数据包,并把数据包保存在应用程序的缓冲区。l 过滤功能用户自己定义过滤信息(特定协议进行捕获),也就说用户可能只需要了解网络中某种类型的数据包的信息,而不需要捕获太多无用的数据,一方面系统负担比较大,另一方面干扰信息过多不利于用户发现网络中存在的问题。l 保存功能在捕获的过程中,每十秒钟,把统计信息写入文件中,等待图表显示功能模块提取信息。保存功能还根据管理功能的需要,保存数据。如果管理功能被启动,系统将满足管理要求的主机IP地址,记录在IP数据集合中。等待管理子系统从中提取IP地址,实现管理功能。3.2显示子系统显示子系统可再划分为五个功能,总量显示功能,分量显示功能,通讯显示功能,列表显示功能,树形显示功能。这些功能的详细描述如下:l 总量显示功能在抓包过程中显示捕获数据包的总量,也就是从开始监听一直到结束,捕获的说有数据包的数量。l 分量显示功能在抓包过程中显示各种数据包的分量,以及它们在总量中比例(百分比显示)各种数据包的百分比是指,某种类型的数据包除以捕获的数据包的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号