精品资料(2021-2022年收藏)计算机网络课程设计报告IP报检测

上传人:cl****1 文档编号:503664122 上传时间:2022-12-24 格式:DOC 页数:8 大小:240KB
返回 下载 相关 举报
精品资料(2021-2022年收藏)计算机网络课程设计报告IP报检测_第1页
第1页 / 共8页
精品资料(2021-2022年收藏)计算机网络课程设计报告IP报检测_第2页
第2页 / 共8页
精品资料(2021-2022年收藏)计算机网络课程设计报告IP报检测_第3页
第3页 / 共8页
精品资料(2021-2022年收藏)计算机网络课程设计报告IP报检测_第4页
第4页 / 共8页
精品资料(2021-2022年收藏)计算机网络课程设计报告IP报检测_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《精品资料(2021-2022年收藏)计算机网络课程设计报告IP报检测》由会员分享,可在线阅读,更多相关《精品资料(2021-2022年收藏)计算机网络课程设计报告IP报检测(8页珍藏版)》请在金锄头文库上搜索。

1、监控IP包流量摘 要 本课程设计主要是编制程序,监控网络,捕获一段时间内网络上的IP数据包,按IP数据包的源地址统计出该源地址在该时间段内发出的IP包的个数,将其写入日志文件中或用图形表示出来。程序中会用到Winpcap,它主要功能在于独立于主机协议发送和接收原始数据报。本次课程设计中用VC+实现基于Winpcap的IP数据包的捕获和统计,根据获取网络设备列表,选择正确的网卡并打开,获取子网掩码,编译、设置过滤器,捕获数据包;列出源IP地址及其相应的包数。使我们对于TCP/IP协议以及IP数据抱的格式有了进一步的了解和掌握。通过编写程序从而实现对网络中IP数据包流量的统计。 1、引言1.1 课

2、程设计目的 本次课程设计主要是通过用VC+编程实现对网络中IP数据包流量的统计,也就是编制程序,监控网络,捕获一段时间内网络上的IP数据包,按IP数据包的源地址统计出该源地址在该时间段内发出的IP包的个数,将其写入日志文件中或用图形表示出来。同时应用Winpcap,Winpcap提供了很好的捕获网络数据包的方法,通过本次课程设计可以将VC+知识与Winpcap结合起来实现在一段时间内对IP数据包的流量进行统计,加深了对Winpcap的理解和运用能力。 1.2 课程设计的要求 (1)理解运用VC+软件实现对网络中的IP数据抱流量的统计方法和步骤。 (2)学习简单的MFC框架结构;(3)加深理解T

3、CP/IP协议以及IP数据抱的格式;(4)提高网络编程能力,增加实际应用能力;(5)学会文献检索的基本方法和综合运用文献的能力。 1.3 设计平台 Microsoft Visual C+ 6.0 2、 设计原理 IP是ICP/IP协议体系中的网络层协议,TCP、UDP、ICMP和IGMP等其他协议都是以IP 协议为基础的。程序中用到的Winpcap是UNIX下的lipbcap移植到Windows下的产物,是Win32环境下数据包捕获的开放代码函数库。Winpcap由内核级的数据包过滤器,底层动态链接库(packet.dll)和一个高层的独立于系统的库(wpcap.dll)组成。 2.1 IP协

4、议 IP是TCP/IP模型中的网络层协议,又称为互联网协议,是支持网间互连的数据报协议,它与TCP协议一起构成了TCP/IP协议族的核心。它提供网间连接的完善功能,包括IP数据报规定互联网范围内的IP地址格式。在因特网中IP协议是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。IP地址具有唯一性。IP协议的特点如下: IP协议是一种不可靠、无连接的数据报传送协议。 IP协议是点对点的网络层通信协议。 IP协议向通信层隐藏了物理网络的差异。 IP协议以一种数据报的形式传输数据,

5、每个数据报独立传输,可能通过不同路径传输,因此可能不按顺序到达目的地,或者出现重复。 2.2 关于Winpcap库 Winpcap(windows packet capture)是windows平台下一个基于windows的网络接口API库。主要为win32应用程序提供访问网络底层的能力。Winpcap的主要功能在于独立于主机协议(如TCP/IP)发送和接收原始数据报。Winpcap不能阻塞、过滤或控制其他应用程序数据报的收发,它只是监听共享网络上传送的数据报。 其功能有: 捕获原始数据包,包括在共享网络上各主机发送接收的以及相互之间交换的数据包; 在数据包发往应用程序之前,按照自定义的规则将

6、某些特殊的数据包过滤掉; 在网络上发送原始数据包; 收集网络通信过程中的统计信息。 Winpcap是针对win32平台上的抓包和网络分析的一个架构,它包括一个核心态的包过滤器,一个底层的动态链接库(packet.dll)和一个高层的不依赖于系统的库(wpcap.dll)。它由Packet、NPF(Netgroup Packet Filter)、packet.dll、wpcap.dll、Application组成。 Winpcap提供了两个不同的库:packet.dll和wpcap.dll。前者提供了一个底层API,这些API可以直接用来访问驱动的函数;后者导出了一组更强大的与libpcap一致

7、的高层抓包函数库,这些函数使得数据包的捕获以一种与网络硬件和操作系统无关的方式进行。 3 程序代码设计步骤 根据以上设计原理,我设计的得到流量统计程序的主要功能模块如下图: 图中,窗口初始化模块主要是查找网卡,并将所有网卡存入数组,并在自己制作的界面窗口中的网卡下拉列表中显示第0号网卡的信息。设置各个按钮的状态:“开始捕捉”、“停止”、“退出”按钮有效,“清除列表”按钮无效,“状态显示”显示空闲,“统计数据包数”显示0;捕获模块是在选择完正确的网卡后,要系统自动找到相应的网卡号,以混杂模式打开网卡、获取子网掩码、编译并设置过滤器,设置按钮的状态和状态栏的状态,最后启动线程。线程模块主要实现循环

8、捉包并将包的源IP和对于的包数存入链表,当按下“停止”按钮时,线程结束,将链表中的源IP和对于的包数输出显示到界面中的列表中,更新状态栏。停止模块主要是当按钮按下是,立即结束线程,更新状态栏并将界面列表中的信息写入日志文件保存起来。根据流量设计程序的主要功能模块,相应的程序实现主要的代码如下: 初始化模块:BOOL CIPpackDlg:OnInitDialog()CDialog:OnInitDialog();if(pcap_findalldevs(&alldevs,errbuf)=-1) /查找网卡 MessageBox(找不到网卡!);int i;for(d=alldevs,i=0;d;d

9、=d-next,i+) /d指向当前网卡,m_comboboxx.AddString(d-description); /下拉列表中显示网卡描述alldevi=d; /将网卡存入数组中 m_comboboxx.SetCurSel(0); /下拉列表中第一项显示0号网卡m_listcontrol.InsertColumn(0,Source IP Address,LVCFMT_LEFT,150,-1); m_listcontrol.InsertColumn(1,Packet Numbers, LVCFMT_RIGHT, 100 -1 ); GetDlgItem(IDC_BUTTON3)-Enable

10、Window(false); /停止按钮不可用捕获模块:void CIPpackDlg:Oncapture() char packet_filter=ip; /过滤,选择IP协议pcap_if_t *head=NULL;int i,k;k=m_comboboxx.GetCurSel();for(d=alldevs,i=0;inext,i+);head=d;/以混杂模式打开网卡 if(fp=pcap_open_live(head-name,1000,1,1000,errbuf)=NULL) coutnUnable to open the adapter.addresses!=NULL) /获取子

11、网掩码 netmask=(struct sockaddr_in*)(head-addresses-netmask)-sin_addr.S_un.S_addr; else netmask=0xffffff; /没地址就设为c类地址 if(pcap_compile(fp,&fcode,packet_filter,1,netmask)0) coutnUnable to compile the packet filter. check the syntax.n; pcap_freealldevs(alldevs); return; if(pcap_setfilter(fp,&fcode)0) /设置过

12、滤器 coutSetWindowText(正在捕获中.); /显示当前状态GetDlgItem(IDC_COMBO1)-EnableWindow(false); /网卡列表不可用 GetDlgItem(IDC_BUTTON1)-EnableWindow(false); /开始捕获按钮不可用 GetDlgItem(IDC_BUTTON2)-EnableWindow(true); /停止按钮变为可用CWinThread* cap; /定义线程cap=AfxBeginThread(AFX_THREADPROC)Threadcap,this); /创建线程并立即执行线程模块:UINT Threadca

13、p(LPVOID param)CIPpackDlg * c1=(CIPpackDlg *)param;capstop=true; /信号量赋值,线程可用struct pcap_pkthdr *header; /被捕获的包存人文件时,这个结构被加在包头 const unsigned char *pkt_data; CIPpackDlg* pall=(CIPpackDlg*)(CWnd:FromHandle(AfxGetMainWnd()-m_hWnd); /获得指向主边框窗口类对象的指针int res;while(res=pcap_next_ex(c1-fp,&header,&pkt_data)=0) if(res=0) /如果超时没抓到包,则结束此次循环 continue; if(capstop=false) break; /接收到停止按钮发来的终止线程信号,终止线程 ip_header *ih;

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

当前位置:首页 > 建筑/环境 > 施工组织

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