毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 计算机论文 >> 正文

基于WinPcap的数据包捕获和分析 第4页

更新时间:2016-9-20:  来源:毕业论文
3.2查看传输速度
使用WinPcap获取网卡每秒的数据包数和传输速度。通过GetTickCount函数获得相应的时间,通过此段时间差值及捕获数据包的数据长度来算的数据包的传输速度。运行测试如图5。

图5    查看流量
3.3数据包捕获与过滤
使用函数pcap_open_live启用函数pcap_findalledvs获得的网卡,pcap_open_live返回一个pcap_t型指针作为监听句柄。当有新的数据包到达网卡,网卡就会通知NPF的network tap,NPF接收数据并将数据送到network fillter,由network fillter判断是否保留该数据包。如符合过滤条件,数据包将会被送到NPF的内核缓冲中等待着向用户级缓冲传递。[7]
使用WinPcap中的pcap_compile和pcap_setfilter两个函数,通过设置参数来完成对数据包过滤条件的定义。用函数pcap_compile(adhandle, &fcode, "ip and tcp", 1, netmask)编译过滤器,使用pcap_setfilter(adhandle, &fcode)设置过滤器。
使用函数pcap_open_live来打开网卡,数据捕获时都一样,可使用 pcap_loop函数(主要因为它直接由数据包捕获驱动所调用),用户程序是不能直接控制此函数的。另一个实现方法(也是提高可读性的方法),是使用 pcap_next_ex 函数来实现。因在数据包流量中已使用pcap_next_ex 函数,此处使用pcap_loop函数。此函数的具体实现如下void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data),其中使用wpcap_loop函数开始进行数据包的捕获,参数pcap_handler指向一个可以接收数据包的函数, 这个函数会在收到每个新的数据包并收到一个通用状态时被libpcap所调用,数据包的首部一般有一些诸如时间戳,数据包长度的信息,还有包含了协议首部的实际数据。所做操作即是对pcap_handler指向的函数的函数体进行操作。
以太网首部中的“上层协议”字段确定该数据帧的有效载荷是IP、ARP还是RARP协议的数据报,然后交给相应的协议处理。假如是IP数据报,IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP还是IGMP,然后交给相应的协议处理。假如是TCP段或UDP段,TCP或UDP协议再根据TCP首部或UDP首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。IP地址是标识网络中不同主机的地址,而端口号就是同一台主机上标识不同进程的地址,IP地址和端口号合起来标识网络中唯一的进程。所以可以此来进行帧的逐层剖析。
关于相关的帧、包格式这里仅列举出以下两个,以太网帧格式如图6所示本文来自优*文^论'文/网,毕业论文 www.youerw.com 加7位QQ324,9114找源文。

图6    以太网帧格式
 因应用层数据通过协议栈发到网络上时,每层协议都要加上相应的数据首部构成一定的封装。正如上图的以太网帧格式一样。深入分析需要了解各层封装所做的操作。在此处仅列出ARP帧的格式(如图7),其他如IP(添加IP首部)、TCP(如图8)、UDP等类似。图7    ARP数据报格式图8    TCP首部字段

上一页  [1] [2] [3] [4] [5] 下一页

基于WinPcap的数据包捕获和分析 第4页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。