《计算机网络监控ip包流量.doc》由会员分享,可在线阅读,更多相关《计算机网络监控ip包流量.doc(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程设计任务书20092010学年第一学期专业: 计算机应用技术 学号: 姓名: 课程设计名称: 计算机网络课程设计 设计题目: 监控ip包流量 完成期限:自 2009 年 12 月 6 日至 2009 年 12 月 13 日共 1 周设计目的: 监控本地网络,捕获一段时间内以本机为源或目的地址的IP数据包,统计IP数据包的信息,列出本机到相同目的地址或同一源地址到本机且数据包协议类型相同的数据包的数量。通过编写程序,了解IP数据包的结构以及IP数据包头部各字段的含义,理解和认识IP协议的工作原理,掌握使用原始套接字(Raw Socket)编程的方法。功能要求: 分析监控ip包,编写一段程序
2、用视图描绘 一、 设计的任务:本次课程设计,有助于熟悉IP包格式和加深对IP协议的理解,对ip包的分析和监控 二、 开发工具: VC+6.0 三、 进度安排:序号阶段内容所需时间1布置任务及调研3天2系统分析与设计2天3调试及报告总结2天合 计7天四、 主要参考资料:1 杨延双 . TCP/IP协议分析及应用 M . 北京:人民邮电出版社. 2006 2 李树广 .计算机网络M . 北京:北京邮电大学出版社. 2007 指导教师(签字): 教研室主任(签字): 批准日期: 年 月 日 课程设计说明书(论文)用纸摘 要IP就是真实流量,是有人真正浏览了您的网站而产生的流量,每台电脑只有一个IP地
3、址,所以一个IP就是一个人,反映在统计上就是独立IP数量,IP是Internet Protocol(因特网协议)的缩写,它是通过计算机网络进行交流的最常用的协议之一。IP监控解决方案就是通过有线或者无线IP网络把视频信息以数字化的形式来进行传输。只要是网络可以到达的地方就一定可以实现视频监控和记录,并且这种监控还可以与很多其它类型的系统进行完美的结合,无论是由模拟摄像机加视频服务器组成的解决方案,还是单独由网络摄像机组成的解决方案,或者是两者混合组成的解决方案,IP监控都已被证明是一种极具吸引力的解决方案。在越来越多的原有行业应用中,这种革命性的技术正在逐步取代传统的监控系统,在提高安全性的同
4、时也进一步的降低了成本;而在许多新的应用领域,它还是第一次用到,也因此开创和激发了许多新的市场。正是由于它系统的可扩展性,IP监控逐渐巩固了其在现有监视和远程监控行业应用的地位,也加速了在其他新兴行业的应用,监控本地网络,捕获一段时间内以本机为源或目的地址的IP数据包,统计IP数据的信息,列出本机到相同目的地址或同一源地址到本机且数据包协议类型相同的据包的数量。IP协议的目标很简单:生成发往目的地的数据报,而且除了把这个数据包发送到下一跳路由器之外,不需要担心任何事情。实际上,IP协议很复杂,否则,IP数据报头就不需要那么多的字段。认真研究IP数据报头是非常重要的。IP协议负责接收和发送指定I
5、P地址数据包。但是,IP协议并不保证数据传递的可靠性 关键字:ip监控 监控系统 ip数据包目 录1 课程设计的目的12 课程设计的基本要求13.0简述ip协议13.1 ip数据包监控23.2 课程设计的主要内容及开发23.3 捕获ip包的实现原理33.4 界面设计与框架构建程序实现的源代码33.5 程序的整合与测试74 课程设计中的主要方案的分析比较75 设计结果与分析86.总 结9主要参考文献101 课程设计的目的随着Internet技术的发展,基于IP协议的应用成为网络技术研究与软件开发的一个重要基础,因此学习网络层以基本概念,了解IP协议的基本内容,对于掌握TCP/IP协议的主要内容和
6、学习网络课程是十分重要的,通过本次课程设计,有助于熟悉IP包格式和加深对IP协议的理解。1随着网络技术的飞速发展,链路容量和设备处理能力不断升级,Internet的规模呈爆炸性增长,社会对Internet的依赖性越来越高,随之而来,网络传输的业务类型已从简单的低带宽要求的文件传送、电子邮件等变为数据、语音、视频等大流量业务,并且,业务对可靠性,实时性,安全性传输的要求越来越高监控本地网络。2捕获一段时间内以本机为源或目的地址的IP数据包,统计IP数据包的信息,列出本机到相同目的地址或同一源地址到本机且数据包协议类型相同的数据包的数量。2 课程设计的基本要求(1)了解internet在科技发展中
7、的速度(2)了解ip协议的基本内容(3)解析ip数据包编程实现2.1捕获ip包实现在通常情况下,网络通信的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取与自己无关的的数据包。所以我们要想实现截获流经网络设备的所有数据包,就要采取一点特别的手段了:将网卡设置为混杂模式。这样,该主机的网卡就可以捕获到所有流经其网卡的数据包和帧。但是要注意一点,这种截获仅仅是数据包的一份拷贝,而不能对其进行截断。3.0简述ip协议IP协议直接位于2层数据
8、链路层之上,负责生成发往目的地的数据报。IP协议原来在RFC 791中定义,后来进行了修改并且进行了多次重新修订。3但是,IP协议的基本设计思想仍没有变。IP层不提供任何类型的流量控制或者排序功能。这些功能留给上层。我们将使用“数据报” (datagram)这个词汇指一个完整的IP信息,使用“数据包”(packet)这个词汇指一个单个的IP数据包。IP协议负责接收和发送指定IP地址数据包。但是,IP协议并不保证数据传递的可靠性。在IP协议层中没有“重试一下”的概念。由于各种原因,数据包有可能出现丢失、损坏、重复、不按照顺序传递或者延迟等问题。IP协议还负责处理IP选项并且以ICMP错误和控制消
9、息等方式提供反馈信息。3.0ip协议的特点1.ip协议是一种不可靠,无联系的数据包传送协议2.ip协议是点对点的网络层通信协议3.ip协议向传输层隐藏了物理网络的差异3.1 ip数据包监控IP数据包流量实时监控窗口,注意这里会监控所有的来往数据包,包括自己的,所以,如果你使用远程终端连接上来的话,你和监控机将会源源不断的产生数据 流,因此建议在Filters.菜单中将自己的IP过滤掉,是它不产生影响。在这里可以实时的看到每一个连接的流量状态,它有两个窗口,上面的是 TCP的连接状态,下面的窗口可以看到UDP、ICMP、OSPF、IGRP、IGP、IGMP、GRE、ARP、RARP的数据包。4可
10、以点击s键选择排 序,可以按照包的数量排序,也可按照字节的大小排序,如果因为它是实时变化的而导致看不太清楚的话,可以在Configure菜单中把Logging功能 打开,它就会在/var/log/iptraf 目录中记录日志,以方便你在日后查询。IPTRAF是Linux命令行下使用的网络监视工具,功能很实用,真的不错。可以即时监看网路流量资讯,是一款网络监测和统计生成报表的工具。3.2 课程设计的主要内容及开发(1)操作系统:Window XP(sp2)(2)开发语言:C+语言(3)开发工具:VC 6.03.3 捕获ip包的实现原理在通常情况下,网络通信的套接字程序只能响应与自己硬件地址相匹配
11、的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取与自己无关的的数据包。所以我们要想实现截获流经网络设备的所有数据包,就要采取一点特别的手段了:将网卡设置为混杂模式。这样,该主机的网卡就可以捕获到所有流经其网卡的数据包和帧。但是要注意一点,这种截获仅是数据报的一份拷贝,而不能对其进行截断。3.4 界面设计与框架构建程序实现的源代码#include#include#include#pragma comment(lib,ws2_32)#define IO_RCVALL _WSA
12、IOW(IOC_VENDOR,1)typedef struct IP_HEADunionunsigned char Version; unsigned char HeadLen; ; unsigned char ServiceType;unsigned short TotalLen;unsigned short Identifier; union unsigned short Flags; unsigned short FragOffset; ; unsigned char TimeToLive; unsigned char Protocol; unsigned short HeadCheck
13、sum; unsigned int SourceAddr;unsigned int DestinAddr; unsigned char Options;ip_head;void main(int argc,char *argv) if(argc!=2) coutendl请以下格式输入命令行:PackParse packet_sumendl; return; WSADATA WSAData; if(WSAStartup(MAKEWORD(2,2), &WSAData)!=0) coutendlWSASTartup初始化失败endl; return; SOCKET sock=socket(AF_I
14、NET,SOCK_RAW,IPPROTO_IP); if(sock=INVALID_SOCKET) coutendl创建Socket失败!endl; return; bool flag=true; if(setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char *) &flag,sizeof(flag)=SOCKET_ERROR) coutendlsetsockopt操作失败endl; return; char hostName128; if(gethostname(hostName,100)=SOCKET_ERROR) coutendlgethostname操作
15、失败endl; return; hostent *pHostIP; if(pHostIP=gethostbyname(hostName)=NULL) coutendlgethostbyname操作失败h_addr_list0; if(bind(sock,(PSOCKADDR)&host_addr,sizeof(host_addr)=SOCKET_ERROR) coutendlbind操作失败endl; return; DWORD dwBufferLen10; DWORD dwBufferInLen=1; DWORD dwBytesReturned=0; if(WSAIoctl(sock , I
16、O_RCVALL ,&dwBufferInLen , sizeof(dwBufferInLen) , &dwBufferLen,sizeof(dwBufferLen),&dwBytesReturned,NULL,NULL)=SOCKET_ERROR) coutendlWSAIoctl操作失败endl; return; coutendl开始解析IP包:endl; char buffer65535; int packsum=atoi(argv1); for(int i=0;i0) ip_head ip=*(ip_head *)buffer; cout-endl; cout版本:4)endl; co
17、ut头部长度:(ip.HeadLen &0x0f)*4)endl; cout服务类型:Priority5),Service1)&0x0f)endl; cout总长度:ip.TotalLenendl; cout标识符:ip.Identifierendl; cout标志位:15)&0x01),DF=14)&0x01),Mf=13)&0x01)endl; cout片偏移:(ip.FragOffset&0x1fff)endl; cout生存周期:(int)ip.TimeToLiveendl; cout协议:Protocol(int)ip.Protocolendl; cout头部校验和:ip.HeadC
18、hecksumendl; cout原地址:inet_ntoa(*(in_addr *)&ip.SourceAddr)endl; cout目的IP地址:inet_ntoa(*(in_addr *)&ip.DestinAddr)endl; closesocket(sock); WSACleanup(); 3.5 程序的整合与测试4 课程设计中的主要方案的分析比较在程序的设计过程中,程序的功能编辑过程,对于大学阶段学习的语言:汇编语言C、C+、Java等,对比于其它的几种语言,基于C+ 语言的是一种面向对象的语言,是一种健壮与安全的语言,对于它在大学阶段有了更多的了解,最终决定以它来实现程序的编写及
19、其实现。5 设计结果与分析经过这几天来翻阅及和同学的探讨,课程设计的已基本达到预期的结果,对各种汇编语言有了更进一步的了解,激起我对汇编语言的学习的更大的兴趣,结果与打算的差别不是很大。但是还是有很多不足的地方,有些程序的应用不是很灵活,需要近一步的提高在课程设计中我对计算机网络有很大的认识和了解。近几十年来,计算机的应用领域日益扩大,早已不再局限于简单的数值运算,而涉及到问题的分析,需要大量掌握各种汇编语言。第 9 页 共 10 页6.总 结 通过完成本次课程设计,使我从中学到了很多语言的用法,对C,C+,JAVA这几种语言都加深了理解,使得自身能力有所增强了解决和处理问题的逻辑性的思维,在
20、学习过程中,受益匪浅,感触很多,很多学习的理论知识终于有所实现,解决问题思路也变得更加清晰了,在实现程序的而过程中,也注意到了很多的困难,仅凭个人的掌握是不够的,还要更多的借助于学习,不断的求索,才可达到理想的目标,要想将程序设计的更加完善,还得真下上一番功夫. 总之,通过这次的努力,编写出此程序,对已有知识有了更进一步的理解和认识,让我有了更好的实践,使我对计算机网络有了进一步的认识。希望在以后的学习中,能发挥自己的优势,在以后的学习中我会不断的完善自己、不断进取。通过本次网络课程设计,熟悉掌握VISUAL C+ 6.0平台的基本操作,学习在该软件平台下进行程序设计。理解记忆常用的网络协议和
21、接口,学习对基于网络协议功能的网络编程。这次的课程设计也使我意识到了理论与实践相结合的重要作用,学习到知识应该应用到实践中。在此次的课程设计过程中,熟悉IP包格式和加深对IP协议的理解,告诉我们要不断地学习计算机方面的知识,精益求精,如今是信息化的时代,随着internet技术的日新月异的发展,我们更应不断地提高自己的水平,在每次的程序中能够有更多的领悟。也让自己在程序的编译和应用上可以有更大一步的提高。要更好的学习计算机网络和其他方便的有关知识,做到精益求精。了解IP协议的基本内容,对于掌握TCP/IP协议的主要内容和学习网络课程是十分重要的,通过本次课程设计,有助于熟悉IP包格式和加深对IP协议的理解。学好计算机及各种汇编语言会使我们受益匪浅。主要参考文献1 李树广 .计算机网络M . 北京:北京邮电大学出版社. 20072 吴功宜 .计算机网络辅助上海:机械工业出版社3 杨延双 . TCP/IP协议分析及应用 M . 北京:人民邮电出版社. 2006 4编程爱好者:清华大学出版社第 10 页 共 10 页
限制150内