《第16章协议分析器程序.ppt》由会员分享,可在线阅读,更多相关《第16章协议分析器程序.ppt(29页珍藏版)》请在三一文库上搜索。
1、计算机网络高级软件编程技术,1,吴功宜 董大凡 王 珺 刘 乾,“十一五”国家重点图书 计算机科学与技术学科前沿丛书 计算机科学与技术学科研究生系列教材(中文版) 计算机网络 高级软件编程技术,计算机网络高级软件编程技术,2,第16章 协议分析器程序,计算机网络高级软件编程技术,3,概述,协议分析器可以有效完成对网络上传输数据包的捕获,从而收集与分析网络信息,是网络流量监控和故障检测所必不可少的工具之一,对网络管理与网络安全具有重要的意义,计算机网络高级软件编程技术,4,编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高,提纲,计算机网络高级软件编程技术,5,编程训练目的,编写
2、一个简化的协议分析器,了解数据通过网络传输时的封装与解析过程,加深理解TCP/IP协议栈的工作原理和网络应用软件开发能力。 掌握根据软件功能结构进行模块化设计的方法 掌握Winpcap编程与抓包方法;了解使用原始套接字(raw socket)实现数据包捕获的方式;使用Winpcap库的流量统计和向网络中发包等高级特性。,计算机网络高级软件编程技术,6,编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高,提纲,计算机网络高级软件编程技术,7,编程训练要求,编程实现一个协议分析器。该协议分析器将包含以下几部分功能 : 数据采集实时捕捉Ethernet网络数据包; 解析Etherne
3、t网数据帧头部的全部信息; 实现基于MAC地址和帧头部类型字段的数据包过滤; 解析IP数据包的头部信息; 实现基于IP地址和IP头协议的数据过滤;,计算机网络高级软件编程技术,8,编程训练要求(续),对ICMP报文,要求至少解析ICMP回显请求、回显应答、超时及目的不可达四种类型的报文; 解析传输层TCP、UDP协议头部信息; 实现基于端口的数据包过滤; 实现应用层HTTP协议头部分析。,计算机网络高级软件编程技术,9,编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高,提纲,计算机网络高级软件编程技术,10,协议分析器基本原理,Ethernet是目前应用最广泛的计算机连网方式
4、,它基于总线结构,物理层采用广播方式。 当一台主机向另一台主机发送数据时,网络上所有的主机都能接收到该帧,但只有目的地址正确的主机会接受数据,而其他主机应将其丢弃。 协议分析器就是一种能将本地网卡状态设置成“混杂”模式并接收网络上所有数据帧的软件。,计算机网络高级软件编程技术,11,网络分层体系结构及常用协议所在层次,计算机网络高级软件编程技术,12,以太网数据的封装与解析过程,计算机网络高级软件编程技术,13,以太网帧结构,前导码与帧前定界符:前导码为56bit的1010101010,帧前定界符为10101011 目的地址和源地址:MAC地址为48bit 长度/类型:长度(小于0800H),
5、类型(大于等于0800H,如IP为0800H、ARP为0806H) 数据字段:用于携带上层传下来的数据。 帧校验字段:32位的CRC 前导码、帧前定界符和帧校验和三个字段属于物理层内容,在数据链路层不会得到这些字段,因此在MAC层只需解析目的地址、源地址、长度/类型和数据字段。,计算机网络高级软件编程技术,14,ARP报文结构,计算机网络高级软件编程技术,15,IP报文结构,计算机网络高级软件编程技术,16,ICMP报文结构,计算机网络高级软件编程技术,17,TCP报文结构,计算机网络高级软件编程技术,18,UDP报文结构,计算机网络高级软件编程技术,19,HTTP报文结构,HTTP请求消息的
6、一般格式,计算机网络高级软件编程技术,20,HTTP报文结构(续),HTTP响应消息的一般格式,计算机网络高级软件编程技术,21,编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高,提纲,计算机网络高级软件编程技术,22,协议分析器总体结构,计算机网络高级软件编程技术,23,网络数据包的捕获,Windows平台下可以通过WinPcap获取网络数据包。 WinPcap(详细内容参见 http:/winpcap.polito.it)。 是一个开源的、运行于Win32平台的体系结构 包括内核级别的、低层次的包过滤动态连接库packet.dll和高级别系统无关函数库wpcap.dll
7、安装WinPcap驱动程序和DLL程序(可以从http:/winpcap.polito.it网站下载)。 安装开发人员使用的开发工具包(developers pack) 包括:库文件、包含文件、简单的示例程序代码和帮助文件。,计算机网络高级软件编程技术,24,数据包 捕获流程图,计算机网络高级软件编程技术,25,协议解析流程,计算机网络高级软件编程技术,26,需注意的问题:字节顺序,网络序主机序 u_short ntohs(u_short netshort) u_long ntohl(u_long netlong) 主机序网络序 u_short htons(u_short hostshort) u_long htonl(u_long hostlong),计算机网络高级软件编程技术,27,编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高,提纲,计算机网络高级软件编程技术,28,向网络中发送自定义数据包,Winpcap提供了一个简单而快捷的方式发送一个原始数据包。,/* 发送自定义数据包。 * pPacketBuf中是数据缓冲区指针, * iSize是数据包大小 */ pcap_sendpacket(hAdapterHandle, pPacketBuf, iSize);,计算机网络高级软件编程技术,29,使用Winpcap 统计功能的 基本流程,
链接地址:https://www.31doc.com/p-2979067.html