- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
监控IP数据包流量系统设计书
课程设计目的和要求
1.课程设计目的:
随着internet技术的发展,基于IP协议的网络应用成为网络技术研究与软件开发的一个重要基础,因此学习网络层的基本概念,了解IP协议的基本内容,对于掌握TCP/IP协议的主要内容和学习网络课程是十分重要的。通过本次课程设计,有助于熟悉IP包格式和加深对IP协议的理解。
2.课程设计要求:
编制程序,监控网络,捕获一段时间内网络上的IP数据包,按IP数据包的源地址统计出在该时间段内发出的IP包的个数,将其写入日志文件中并用图形表示出来。
程序的具体要求如下:
1.在图形窗口界面下,根据用户输入的捕获时间和选择的网卡输出该段时间内的IP数据包流量分析
2.能够将捕获的信息写入日志文件
课程设计的内容
1.课程设计的内容:
1)使用Winpcap,Winpcap的主要功能在于独立于主机协议(如TCP/IP)发送和接受原始数据包;
2)列出网卡列表,让用户选择可用的网卡;
3)使用过滤器捕获IP包,别的包都过滤掉;
4)捕获IP包并按包的源地址进行统计(用链表结构进行实现)。
5)将统计结果输出到图形窗口界面或输出到日志文件
程序流程如图8-1所示。
一些必要的基础知识
熟悉IP首部格式
使用Winpcap工具
WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库.
WinPcap产生的目的,就是为Win32应用程序提供这种访问方式; WinPcap提供了以下功能
捕获原始数据包,无论它是发往某台机器的,还是在其他设备(共享媒介)上进行交换的
在数据包发送给某应用程序前,根据用户指定的规则过滤数据包
将原始数据包通过网络发送出去
收集并统计网络流量信息
使用Winpcap工具主要需要三个步骤:
1).安装底层驱动:在Winpcap官网()下载并安装Winpcap.exe即可
2).导入库文件:下载wpdpack开发包,并在开发环境(VC)中导入Lib和Include 文件夹路径。VC导入步骤(工具-选项-目录,分别在Include Files和Library Files中加入…/wpdpack/Include和…/wpdpack/Lib)
3).在应用程序中导入需要的DLL和头文件:
方法一:VC下:工程-设置-链接 在Object/Library modules下添加ws2_32.lib wpcap.lib(注意中间的空格)
方法二:在源文件中添加命令处理:
#pragma comment(lib, “ws2_32.lib”)
#pragma comment(lib, “wpcap.lib”)
本程序将会用到的Winpcap功能有:
获取本机所有适配器信息 pcap_findalldevs
以混杂模式打开适配器 pcap_open_live
编译并设置过滤器 pcap_compile pcap_setfilter
捕获数据包 pcap_next_ex
释放打开的适配器信息 pcap_freealldevs
VC++图形窗口界面编程
包括按钮,编辑框,列表框,列表控件等控件的使用
其他相关知识,如文件操作,链表操作等
课程设计核心知识
1.获取本机网卡信息
本课程设计要实现对数据包的捕获,首先就要获取并列出本机上的所有网卡信息,这个功能是通过Winpcap提供的pcap_findalldevs来实现的。该函数原型如下
int pcap_findalldevs(pcap_if_t** alldevs, char* errbuf)
pcap_if_t是一个用于描述网卡信息的结构体。里面包含了网卡的名字,描述等信息。通过这个函数可以得到一个网卡信息组成的链表。函数错误则返回-1。
2.打开用户选定的网卡
得到网卡信息之后,可以通过列表框等形式显示出来,在用户选择后,通过pcap_open_live打开指定网卡:
pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf)
函数功能:获得用于捕获网络数据包的数据包捕获描述字。
参数说明:device参数为指定打开的网络设备名。snaplen参数定义捕获数据的最大字节数。promisc指定是否将网络接口置于混杂模式。to_ms参数指*定超时时间(毫秒)。ebuf参数则仅在pcap_open_live()函数出错返回NULL时用于传递错误消息。int pcap_compile(pcap_t*?p,struct bpf_program*????fp,
char*?str,int??opti
文档评论(0)