武汉工程大学邮电与信息工程学院毕业设计(论文)网络数据包的检测及过滤Network Packet Inspection And Filtering Research学生姓名林煦东学号**********专业班级通信工程0805指导教师金振坤2012年5月作者声明本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果,除了文中特别加以标注的地方外,没有任何剽窃、抄袭、造假等违反学术道德、学术规范的行为,也没有侵犯任何其他人或组织的科研成果及专利。
与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。
如本毕业设计(论文)引起的法律结果完全由本人承担。
毕业设计(论文)成果归武汉工程大学邮电与信息工程学院所有。
特此声明。
作者专业:作者学号:作者签名:____年___月___日摘要随着信息化发展,要求通信系统处理能力提高的同时,系统的连接能力也在不断的提高。
但在信息连接能力、数据流通能力提高的同时,由于网络数据的脆弱性等网络安全问题日渐突出,网络接口信息安全就变得尤为重要。
此外,网络不仅给我们带来了巨大的社会和经济效益,但网络安全问题也变得日益严重,计算机网络的设计、维护难度日益增加,安全问题正威胁着每一个网络用户,对网络安全的研究也越来越重要。
面对这一严峻形势,如何正确分析并及时处理网络数据包已成为大多IT人员研究的一项重要课题。
对于网络数据包的过滤和检测现在也有很多的实现方法,存在着很多开源的软件供我们参考,但是其中的某些细节还是有一些问题的存在,在效果和效率上都有一些问题,分析上也不是很方便。
所以尝试选择了这个课题。
本课题是使用Visual C++6.0研发平台利用多线程技术实现。
主线程负责寻找和选择网络接口、设置分析过滤器、分析检测数据包。
子线程负责打开选择的接口并将其设为混杂模式、检测数据包并将其保存在文件中。
本设计实现的这个系统可以监听局域网内流经所有主机的数据包,并分析了每个包的协议、源/目的MAC地址、源/目的IP地址、数据包长度和包内的数据。
既可以管理和维护网络健康运行,还可以检测网络入侵,甚至可以学习网络协议知识。
关键词:网络接口信息;数据包过滤;数据包检测AbstractAs the development of information industry, communication system requirements processing capability at the same time, the connection capacity in the system and keep improving. But in the information connection ability, ability to increase circulation data at the same time, because of the vulnerability of the network data such as the problem of network security becomes more and more serious, the network interface information security is especially important. For the network packet filtering and testing also now have a lot of method, there are a lot of open source software for our reference, but some of these details or some of the existence of the problem, in effect and efficiency have some problems, analysis is not very convenient. So try to choose on the subject.This topic is the use of Visual C++ 6.0 multithread technique research and development platform. The son is responsible for the choice of interface open thread and the mixed mode, set to inspect packets and keep them in a document. The design and implementation of the system can monitor local area network flows through all the host packets, and analyzes each packet's agreement, the source/purpose MAC address, source and destination IP address, packet length and bags of data. Can both management and maintenance of the health of the network operation, can also detect the network intrusion, can even learn knowledge network protocol.Keywords: Network interface information; Packet filtering; Packet inspection目录第 1 章绪论 (1)1.1 TCP/IP拦截技术的发展状况 (1)1.2 防火墙技术 (1)1.3 网络数据包结构与安全 (2)第 2 章网络通信的基础知识 (5)2.1 TCP/IP协议 (5)2.2 TCP/IP网络分层模型 (5)2.3 IP数据包封装格式 (6)2.3.1 IP协议 (6)2.3.2 ICMP协议 (7)2.3.3 UDP协议 (8)2.3.4 TCP协议 (8)第 3 章NDIS检测系统 (10)3.1入侵检测系统 (10)3.2 NDIS的具体实现 (10)3.2.1 NDIS网络设备接口规范 (11)3.2.2 NDIS在网络中的作用 (11)3.2.3 NDIS的工作原理 (12)3.2.4 NDIS的网络编程 (13)3.2.5 发送数据 (14)3.2.6 接收数据 (15)第 4 章数据包过滤系统 (16)4.1 网络数据包的分析 (16)4.2 包过滤原理 (16)4.3 包过滤具体实现 (17)4.3.1 定义数据结构 (17)4.3.2 数据包解析 (17)4.3.3 数据包捕获模块的实现 (18)第 5 章系统的实现 (19)5.1 界面设计 (19)5.2 系统实现 (20)第 6 章展望与总结 (26)参考文献 (27)致谢 (28)第 1 章绪论近几年随着计算机网络的发展和使用规模的扩大,网络数据的安全性引起了人们的广泛重视。
传统的防火墙和入侵检测技术只能防范来自于互联网的攻击,而对局域网内部的违法操作确无能为力。
然而当前网络面临的最大的安全问题不是来自于外界,而是内部网络。
如何监控并分析局域网内部数据包是当前网络形势急待解决的问题之一。
网络数据包的检测及过滤系统通过捕获流向受保护服务器的所有数据包,并根据网络数据包所属协议的格式对数据包进行解析,还原出用户的会话过程,以此实现对局域网内部数据的流量的实时监控。
其中网络数据包捕获技术是整个系统方案实现的基础,能否快速、完整的捕获到所需的数据包,是准确分析网络数据的前提条件,但是目前常用的传统数据包捕获机制已经不能满足高性能的计算机网络通信的需要。
本文针对以上情况,提出了一种基于网络接口的数据包流量检测与过滤系统。
1.1 TCP/IP拦截技术的发展状况基于NDIS网络接口的TCP/IP拦截技术在防火墙中应用的非常广泛。
其中,Windows操作系统的软件防火墙核心技术是网络数据包拦截技术。
为了支持大多数网络协议和网卡,为了开发和扩展的便利以及争取厂商的支持,Windows系统将网络分为用户模式部分和核心模式部分在核心态(驱动)层主要使用NDIS协议实现了对上下界的访问。
NDIS (Network Driver Interface Specification)是微软和3Com公司在1989 年制定的一套网络驱动开发标准接口规范,Windows通过使用NDIS函数库来实现NDIS接口。
而所有的网络通信最终都必须通过NDIS完成,这使得网络驱动程序的跨平台性能更好。
1.2 防火墙技术防火墙是一种有效的网络安全模型.实现防火墙的技术有多种,最主要的技术包括数据包过滤和代理服务.传统的包过滤在遇到利用动态端口的协议时会发生困难,如文件传输协议FTP.它需要实现将所有可能用到的端口打开,这又会给安全带来不必要的隐患。
动态包通过状态检测检查应用程序的信息(如FTP的PORT和PASS命令),以便判断此端口是否允许需要临时打开;而当传输结束时,端口又恢复为关闭状态.组成复合型防火墙有两个基本要素——自适应代理服务器与动态包过滤器.代理可以提供极好的访问控制、登录以及地址转换功能,对进出防火墙的信息进行记录,便于管理员监视和管理系统。
1.3 网络数据包结构与安全计算机网络将要传输的报文分割成一个个小的数据片段,称为“分组”,在每一个分组的数据前加上传输数据所必需的信息“报头”,就构成了网络数据传输的基本部件“数据包” 。
在计算机网络中,传输的信息是以数据包为基本传输单位的,数据包的内容是被分割后的信息块,在每个数据包上附加了多层包头。
在一个数据包里,信息内容往往是不完整的,而在每一个数据包头部,完整地包含了传送此数据包所需的全部来源及目标的地址信息。
数据包的结构通常是按照不同的网络协议分层套接的。
在OSI协议层次中,高层协议面向被传输的对象,低层协议面向传输的过程。
应用层的主要任务是将被传输的信息转换成符合网络传输规范的二进制数据块。
常用的应用层协议有:超文本传输协议HTTP、文件传送协议FTP、远程登录协议TELNET、简单邮件传送协议SMTP、域名解析协议DNS、简单网络管理协议SNMP、动态主机配置协议DHCP、以及微软媒体服务器协议MMS 等。
传输层的主要任务是将数据包传输到目的地,为此,传输层为应用层上的应用提供两类截然不同的服务:第一类服务是可靠的面向连接服务,确保正确无误地把消息从源端传送到目的地,使用的协议是TCP协议。