文档详情

基于C++的ICMP网络嗅探器协议编程.ppt

发布:2018-03-09约1.39千字共13页下载文档
文本预览下载声明
网络编程技术 基于C++的ICMP网络嗅探器协议编程 网络编程—— 计算机专业 ICMP的特点 为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。 ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。 ICMP 不是高层协议,而是 IP 层的协议。 ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。 导入 网络嗅探是指监听网络的数据信息。目前有很多商业的或者免费的嗅探工具,也称嗅探器(Sniffer)。 网络嗅探是网络监测和数据分析等管理活动常用的方法。网络嗅探器一般是通过网络传输介质的共享特性实现抓包,获得当前网络的使用状况,为网络管理员对网络中的信息进行实时的监测并分析提供的一个合适的工具。 本次PPT讲课就介绍了简单的网络嗅探器设计与开发,并给出了嗅探器的一个编程实例——截获网络上传输的报文类型。 主要方面 嗅探器原理分析 简单嗅探器的设计实现 应用嗅探器截获报文类型 网络嗅探器原理 网络嗅探器最基本的功能就是数据包的捕获,主要讨论在共享网络中捕获数据包。 当有数据包到达网络后,数据被发给所有端口,任何端口上的主机都可以接收数据包。 一般情况下,主机在接收到目的地址是本地的数据包的时候才会接受,其他的数据包会丢弃,这个工作是网卡来完成的。 网络嗅探器原理——网卡的工作模式 网卡通常有两种工作模式,即混杂模式和非混杂模式。 一般情况下,网卡是处于非混杂模式的,在这种模式下,网卡只接收目的地址等于自己地址的数据包。 如果把网卡设为混杂模式,就可以接收所有的网络数据包,无论其目的地址是否等于自已的地址,都一并接收。 为了捕获网络中的所有数据包,需要将网卡设置成混杂模式。 设置网卡为混杂模式 在正常的情况下,一个网络接口应该只响应两种数据帧:一种是与自己硬件地址相匹配的数据帧;一种是发向所有机器的广播数据帧。如果要网卡接收所有通过它的数据, 而不管是不是发给它的, 那么必须把网卡置于混杂模式 创建原始套接字之后,将它绑定到一个明确的本地地址,然后向套接字发送控制命令,让它接收所有的IP包,这样网卡便进入了混杂模式。 嗅探器的原理 1. 把网卡置于混杂模式 2. 捕获数据包 3. 分析数据包 代码详解——ProcessIPPacket()函数 此函数功能是控制套接字的模式,可以用来设置网卡的工作模式为混杂模式 本例中调用void ProcessIPPacket()函数时, 参数是( char* packet, int size ) 它们的含义分别是: 参数packet :一个标识协议的描述字。 参数size :对检测数据报的匹配。 截获局域网内传输的报文类型 能够截获的主要原因是:报文在传输都有可能被捕获。 TCP报文类型和UDP报文类型有很大区别,所以可以检测出是哪种类型的报文。 本例就实现了获取局域网内截获传输报文的类型。 原理解析 上面的实例中实现了一个简单的Sniffer程序,  该程序可以截获局域网内的所有数据包,并根据  数据包的内容进行初步的解析,判断数据包是否  TCP包 程序运行结果 实验截图: 网络编程技术
显示全部
相似文档