计算机毕业论文,毕业论文,毕业设计 毕业论文免费检测 知网论文检测
当前位置: 骆驼论文网 > 信息安全 >

局域网内的IP地址监控

时间:2011-04-14 11:35来源: 骆驼毕业论文网 作者:admin
摘要:监听(Sniffer)最初是提供给网络管理员的一类极有威力的网络工具,使用这类工具可以监视网络的状态、数据流动情况以及网络上传输的信息并利用这些信息来分析网络的性能、排除网络故障。建立在监听技术基础上的网络分析仪是专业网络工程师必不可少的工

QQ交谈计算机毕业设计,毕业设计,毕业论文,计算机毕业论文

摘要:监听(Sniffer)最初是提供给网络管理员的一类极有威力的网络工具,使用这类工具可以监视网络的状态、数据流动情况以及网络上传输的信息并利用这些信息来分析网络的性能、排除网络故障。建立在监听技术基础上的网络分析仪是专业网络工程师必不可少的工具,其全球市场每年达数十亿美元。
在局域网中,IP地址的冲突常常发生,更有些人盗用他人的IP地址上网。虽然许多操作系统(如Windows 98)自带IP冲突检测功能,但那是一种被动的消极的检测方式,它只能检测到局域网中是否IP地址与本机冲突,不能解决盗用问题,更不能监测整个网络的情况。
本文是无锡江南大学信息工程学院计算机科学与技术系99级毕业生陆佳鹏的毕业论文。文中分析了Windows 平台上实现的免费数据包捕获工具——WinPcap的原理、功能和使用方法,介绍了网络嗅探的基本原理、嗅探程序的组成,以及协议分析模块的基本知识。还使用Microsoft Visual C++ 开发的一个基于网络嗅探的IP地址监控程序。
关键词:监听,网络,IP地址,监控

目录
中英文摘要……………………………………………………………………….2
毕业设计任务书…………………………………………………………………..4
目录………………………………………………………………………………..5
第一章 系统分析………………………………………………………………….7
1.1 需求分析……………………………………………………………..7
1.2 可行性分析…………………………………………………………..7
第二章 概论……………………………………………………………………….8
 2.1 嗅探的基本原理……………………………………………………..8
 2.2 网络基础知识………………………………………………………..8
 2.3 SNIFFER的基本原理……………………………………………….10
第三章 WinPcap 论述……………………………………………………………12
 3.1 捕获程序的结构……………………………………………………..12
  3.1.1 用户级:WinDump 程序和Libpcap库…………………..14
  3.1.2 内核级:NDIS包捕获驱动器……………………………..14
 3.2 Unix系统中的BPF…………………………………………………..15
  3.2.1 tap 函数……………………………………………………..16
  3.2.2 包过滤器……………………………………………………..16
  3.2.3 BPF包捕获过程概述…………………………………………17
  3.2.4 一个重要问题…………………………………………………18
 3.3 与NDIS的交互…………………………………………………………19
 3.4 兼容性……………………………………………………………………21
第四章 协议分析………………………………………………………………………23
 4.1 链路层支持………………………………………………………………..23
 4.2 网络层支持………………………………………………………………...26
第五章 系统分析………………………………………………………………………..32
 5.1 总体分析…………………………………………………………………...32
 5.2 模块设计……………………………………………………………………32
 5.3 数据结构(表)……………………………………………………………33
第六章 程序实现…………………………………………………………………………35
小结………………………………………………………………………………………..45
附录1:WPCAP库介绍………………………………………………………………….46
附录2:英文文献及翻译…………………………………………………………………52
参考文献及站点…………………………………………………………………………...62

2.3 SNIFFER的原理
要知道在以太网中,所有的通讯都是广播的,也就是说通常在同一个网段的所有网络接口都可以访问在物理媒体上传输的所有数据,而每一个网络接口都有一个唯一的硬件地址,这个硬件地址也就是网卡的MAC地址,大多数系统使用48比特的地址,这个地址用来表示网络中的每一个设备,一般来说每一块网卡上的MFC地址都是不同的,每个网卡厂家得到一段地址,然后用这段地址分配给其生产的每个网卡一个地址。在硬件地址和IP地址间使用ARP和RARP协议进行相互转换。
在正常的情况下,一个网络接口应该只响应这样的两种数据帧:
1.与自己硬件地址相匹配的数据帧。                                                      2.发向所有机器的广播数据帧。
在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据,网卡内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。CPU得到中断信号产生中断,操作系统就根据网卡的驱动程序设置的网卡中断程序地址调用驱动程序接收数据,驱动程序接收数据后放入信号堆栈让操作系统处理。而对于网卡来说一般有四种接收模式:
广播方式:该模式下的网卡能够接收网络中的广播信息。                                              组播方式:设置在该模式下的网卡能够接收组播数据。                                             直接方式:在这种模式下,只有目的网卡才能接收该数据。                                          混 杂 模 式:在这种模式下的网卡能够接收一切通过它的数据,而不管该数据是否是传给它的。
好了,现在我们总结一下,首先,我们知道了在以太网中是基于广播方式传送数据的,也就是说,所有的物理信号都要经过我的机器,再次,网卡可以置于一种模式叫混杂模式(promiscuous),在这种模式下工作的网卡能够接收到一切通过它的数据,而不管实际上数据的目的地址是不是他。这实际上就是我们SNIFF工作的基本原理:让网卡接收一切他所能接收的数据。
 嗅探程序组成
一般的,网络嗅探系统有如下几部分组成:
1. 硬件,普通网络适配器或专门硬件,后者可以进一步分析硬件错误(如CRC校验错误),信号电压,电缆问题等等。
2. 捕获驱动程序,这是最重要的组成部分,它可把总线上捕获的数据信息进行过滤并把你要的数据存储到数据缓冲器中;
3. 缓冲器,用于存储接受的数据;
4. 实时分析程序,它可以对数据包中提出的小部分数据进行分析,从而掌握网络运行状况和捕获出错信息;
5. 解码程序,有些网络数据是经过编码的,解码程序可以使这些数据还原。
 混杂模式的设置
为了能够捕获网络中的数据包,必须改写相关的网卡驱动程序,它不仅可以使网卡变成混杂模式,还能缓存收到的数据包,要编写这个驱动程序,你必须深入了解有关的网络编程知识,因为程序要直接对硬件进行控制与编程。具体的讲,程序要对网络中所有的NIC(网络接口控制)芯片进行编程,还要修改网卡的中断服务程序,接受数据包并根据一定的规则过滤,得到的有用包还要存入缓冲器或写入日志文件供进一步的分析之用。自己编写嗅探程序是非常困难的事情,不过我们可以从Internet上得到一些商用或免费的驱动程序, 如Winpcap数据包捕获架构。Winpcap是一个架构,它使WIN32系统增加了利用计算机网卡来捕获网络数据包的能力,而且,它为应用程序提供了高级的API,使应用程序可以很方便地用其网络较低层的功能。Winpcap可以分为三个独立的组成部分:一个包捕获设备驱动器,一个低级动态库和一个高级静态库。
                                               
                                                                                           3.2.3 BPF包捕获过程概述
图2.2表示了BPF与操作系统内部其它部分的接口。
对于那些需要用BPF服务进程捕获来说,BPF都会提供一个过滤器和两个缓冲器。过滤器有应用程序生成并通过IOCTL调用传送给BPF;缓冲器由BPF静态分配,它们的大小通常为4KB,两个缓冲器之一(被称为存储缓冲器)用来从适配器接收数据,第二个缓冲器(被称为保持缓冲器)用于把数据传送给应用程序。当存储缓冲器满而且保持缓冲器空时,BPF就把它们互换。所以应用程序进程和适配器驱动程序始终使用不同的缓冲器空间,它们在运行时不会互相干扰。
当一个数据包到达网络接口时,链路层设备驱动器通常会把它送给系统中的协议架构,但当BPF监听该网络接口时,驱动器首先会调用BPF的网络数据采集器——Tap函数。
Tap函数会把该数据包再反馈到每一个分享的应用程序对应的过滤器。该过滤器由程序员编制,它会是否决定是否接收该包以及接收该数据包中多少字节。要注意的是,过滤器过滤那些仍然处于链路层驱动器存储器中的数据包,只有当该包满足过滤条件时才把它复制到应用程序。这大大地优化了包捕获的性能和存储器的使用,因为如果一个数据包不满足过滤器条件,系统不会对它进行复制等任何操作并会立即把它丢弃。如果数据包满足过滤器要求,Tap函数仅从链路层驱动器存储器中复制由过滤器指定的字节数到过滤器的存储缓冲器中。这时接口设备驱动器重新获得控制权,正常的协议进程得以继续进行。
如果存储缓冲器满,进入的数据包就被丢弃,因而保持缓冲器也不会得到,应用程序同样也就无法为了从BPF接收数据包,应用程序要执行一个读系统调用,当保持缓冲器满时(或者一个特定的超时设定过去时),BPF把缓冲器中的数据包复制到程序存储器并激活捕获进程。一个应用程序可以同时接收多个数据包,为了保持数据包之间的边界,BPF给每个捕获的数据包进行封装,给它们加上一个包括时间戳、包长度以及包在数据队列中的偏移量等头部。
3.2.4 一个重要问题
请注意,不是所有的Unix版本都有BPF(即内核部分的数据包过滤及缓冲能力),但Pcap库可以弥补这个缺陷。这个架构可以通过用户层以与BPF相兼容的方式过滤数据包,这个方案在NDIS包驱动器的第一个版本中被采用。它很容易实现,但是仍有有限的性能,主要有以下两个原因:
过滤过程在用户层完成,所以在检测到用户应用程序是否需要之前,所有的数据包都必须从内核中复制到应用程序缓冲器,这显然会浪费CPU的时间和存储器。如果过滤过程在内核部分完成,所有捕获应用程序不需要的数据包会被系统丢弃,就不会再被复制到用户层。
在内核中没有数据包缓冲器,在多任务环境下,捕获应用程序必须与其它程序一起分享处理器时间。有可能一个数据包到达时捕获应用程序没有被执行。另外,应用程序也可能正在做其它工作,因此不可能等待数据包到来。由于缺少内核缓冲器,这种情况会导致数据包的丢失。
这些原因决定了过滤过程及包的缓存是在包捕获驱动器中而不是在WinDump中实                                                                                                
                                                                                          参考资料:
1. 《Visual C++ 技术内幕 第四版》
[美] David J. Kruglinski 著
潘爱国  王国印       译
清华大学出版社
2. 《Visual C++ 6.0 开发使用手册》
[美] Kate Gregory    著
前导工作室    译
机械工业出版社
                                                                                                            
                                                                                                                                                                                           
                                                                                                                 

 

 


 

本文内容只是论文部分简介,如需了解更多详情请咨询本站客服! QQ交谈计算机毕业设计,毕业设计,工程硕士论文,计算机毕业论文
毕业论文搜集整理:毕业论文网 计算机毕业设计 计算机毕业论文 毕业设计


顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
计算机毕业设计
计算机毕业论文
论文发表