监控IP数据包流量_第1页
监控IP数据包流量_第2页
监控IP数据包流量_第3页
监控IP数据包流量_第4页
监控IP数据包流量_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录1 课程设计目的12 课程设计要求13相关知识14课程设计分析15程序代码36运行结果与分析87参考文献91 课程设计目的ip协议是tcp/ip协议簇中的核心协议。熟悉ip协议对于理解tcp/ip协议结构具有重要意义。本课程设计的主要目的是通过监控ip包流量,了解ip协议的工作原理与ip数据包的基本结构。2 课程设计要求根据后面介绍的ip数据包结构,编写程序监控ip数据包的流量。1) 以命令行形式运行:monitortraffic time其中,monitortraffic为程序名,time为设定的监控时间(单位为分钟)。2)输出内容:按源地址统计该时间内发送的ip包的个数。3 相关知识

2、ip是tcp/ip协议体系中的网络层协议。tcp、udp、icmp和igmp等其他协议都是以ip协议为基础的。ip协议的特点如下:1) ip协议是一种不可靠、无连接的数据包传送协议。2) ip协议是点对点的网路层通信协议。3) ip协议传输层隐藏了物理网络的差异。4课程设计分析我们的课程设计涉及到winpcap编程。我们下载了相关软件,其中包含了wpdpack头文件包,解压后出现了下列五个文件夹:docs、example-pcap、example-remote、include、lib。在vc中设定include目录。具体做法如下:toolsoptiondirectories,在include

3、files中添加wpdpackinclude目录;在library files中添加wpdpacklib目录。接下来进行库函数的设定:在projectsettingslink中的object/library modules中添加wpcap.lib。至此,winpcap编程在vc中的编写步骤便告一段落了。然后是对源文件的编写,其流程图如下:开始获取网卡列表选取ethernet网卡打开网卡(混杂模式)编译设置过滤器捕获ip包将ip包源地址加入链表是否超时?输出链表内容结束图2-15 程序代码#include #include #pragma comment(lib,wpcap.lib)#pragm

4、a comment(lib,ws2_32.lib)using namespace std;/ip包头部struct ip_head unsigned char ver_ihl; /版本号+头部长度 unsigned char tos; /服务类型 unsigned short tlen; /总长度 unsigned short id; /标识 unsigned short flags; /标志+片偏移 unsigned char ttl; /生存时间 unsigned char proto; /协议 unsigned short crc; /校验和 dword saddr; /源地址 dwor

5、d daddr; /目的地址 unsigned int op_pad; /选项+填充;/ip结点类classip_node private: long source_address ; /ip包的源地址 long count; /ip包的个数 public: ip_node *pnext; /构造函数 ip_node(long sourceip) m_lipaddress=sourceip; count=1; /ip包的个数加1 void addcount() count+; /返回ip包的个数 long get_count() return count; /返回ip包的源地址 long ge

6、t_ip_address() return source_address ;/ip结点链表类class node_list ip_node *phead; /链表头 ip_node *ptail; /链表尾 public: node_list() phead=ptail=null; node_list() if(phead!=null) ip_node *ptemp=phead; phead=phead-pnext; delete ptemp; /ip节点加入链表 void addnode(long sourceip) /链表是否为空 if(phead=null) ptail=newip_no

7、de(sourceip); phead=ptail; ptail-pnext=null; else for(ipnode *ptemp=phead;ptemp;ptemp=ptemp-pnext) /如果链表中存在此ip,ip包个数加1 if(ptemp-get_ip_address()=sourceip) ptemp-addcount(); break; /如链表中没有此ip,则加入链表 if(ptemp-get_ip_address()!=sourceip) ptail-pnext=newip_node(sourceip); ptail=ptail-pnext; ptail-pnext=n

8、ull; /输出ip节点的内容 ostream &print(ostream &out) for(ipnode *ptemp=phead;ptemp;ptemp=ptemp-pnext) long ltemp=ptemp-get_ip_address(); outinet_ntoa(*(in_addr*)&(ltemp)t; outget_count()endl; return out; ;int main(int argc,char *argv) /检查输入格式命令 if(argc!=2) coutplease input command:ipstatistic time:endl; ret

9、urn -1; /初始化网卡相关参数 double min=atof(argv1); pcap_if_t *alldevs; /网卡结构 pcap_if_t *d,*head=null; pcap_t *fp; /网卡描述符 char errbufpcap_errbuf_size; unsigned int netmask; /子网掩码 char packet_filter=ip; struct bpf_program fcode; struct pcap_pkthdr *header; const unsigned char *pkt_data; /获取网卡列表 if(pcap_findal

10、ldevs(&alldevs,errbuf)=-1) coutunable to create adapter list!next) cout+i:name; if(d-description) cout descrptionendl; /没有发现网卡 if(i=0) coutno adapter found!endl; return -1; /选择要使用的网卡 coutenter the interface number (1-ik; if(ki) coutout of range!endl; return -1; for(d=alldevs,i=1;inext,i+); head=d; /

11、以混杂模式打开网卡 if(fp=pcap_open_live(head-name,1000,1,1000,errbuf)=null) coutunable to open the adapter.addresses!=null) netmask=(struct sockaddr_in*)(head-addresses-netmask)-sin_addr.s_un.s_addr; else netmask=0xffffff; /编译捕获过滤器 if(pcap_compile(fp,&fcode,packet_filter,1,netmask)0) coutunable to compile th

12、e filter!endl; pcap_freealldevs(alldevs); return -1; /设置捕获过滤器 if(pcap_setfilter(fp,&fcode)0) coutunable to set the filter!=0) time(&end); if(end-beg=min*60) break; if(res=0) continue; ip_head *ih; ih=(ip_head *)(pkt_data+14); link.addnode(ih-saddr); pcap_freealldevs(alldevs); /显示统计信息 coutip statistic inminminutes:endl; coutsource address packet numberendl; link

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论