在vs2008MFC下开发基于winpcap的网络嗅探器(IP,TCP,UDP)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计Ⅰ设计报告
题目:基于Winpcap的网络嗅探器的实现学号:
姓名:
学院:
专业班级:
指导教师:
设计时间:
指导老师评语:
评定成绩: 签名: 日期:
目录
1 概述 (3)
1.1课程设计的目的 (3)
1.2设计任务与要求 (3)
1.3开发环境 (3)
2系统设计的基本概念与原理 (3)
2.1IP协议基本知识 (3)
2.2TCP协议基本知识 (6)
2.3UDP协议基本知识 (9)
2.4 WINPCAP基本知识 (9)
2.5 WINPCAP基本原理 (14)
2.6MFC编程框架 (16)
3 基于WINPCAP的单文档网络嗅探器的设计与分析 (19)
3.1系统设计实现的基本原理与过程 (19)
3.2系统功能设计 (21)
3.3系统架构设计 (22)
3.4子系统与模块设计 (23)
3.4.1网络嗅探器设置模块 (23)
3.4.2网络数据包的捕获模块 (23)
3.4.3解析和显示模块 (23)
4 系统详细设计与实现 (24)
4.1数据结构的设计 (24)
4.2全局变量与函数的声明 (25)
4.3嗅探器界面设计 (25)
4.4嗅探器捕获模块的设计与实现 (26)
4.5网络数据包捕获模块的设计与实现 (31)
4.6解析和显示模块的设计与实现 (32)
4.6.1列表视图初始化设置 (32)
4.6.2从读取离线数据包并在列表视图中显示 (33)
4.6.2响应用户鼠标消息,解析对应行的数据包信息。 (36)
5 系统调试与运行 (38)
5.1 WINPCAP函数库的安装 (38)
5.2 SNIFFER网络嗅探器的测试与运行 (38)
6 课程设计总结 (39)
参考文献 (40)
1 概述
1.1 课程设计的目的
目的:设计一个GUI程序,实现IP、TCP、UDP数据包的捕获和解析。通过编程了解各类数据报的结构,掌握网络编程的基本原理和方法。
1.2 设计任务与要求
本课程设计的基本内容是捕获IP,TCP,UDP数据包,通过解析数据包,理解和掌握各类数据包的结构
(1)设计一个GUI程序,完成局域网数据包的捕获和IP、TCP、UDP数据包的解析;
(2)捕获几个网络数据报,给出实例并分析各数据包各字段的含义;
(3)说明基于Winpcap编程的基本原理、程序的总体框架,绘制每个函数的详细设计流程图。
1.3 开发环境
标准PC机,Windows操作系统,vs2008集成开发环境,Winpcap函数库。2系统设计的基本概念与原理
2.1 IP协议基本知识
(1) IP协议介绍
IP是英文Internet Protocol(网络互连的协议)的缩写,中文简称为“网协”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因
特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守 IP
协议就可以与因特网互连互通。
(2) IP 协议的网络互连实现
各个厂家生产的网络系统和设备,如以太网、分组交换网等,它们相
互之间不能互通,不能互通的主要原因是因为它们所传送数据的基本单元
(技术上称之为“帧”)的格式不同。IP 协议实际上是一套由软件程序组
成的协议软件,它把各种不同“帧”统一转换成“IP 数据包”格式,这种
转换是因特网的一个最重要的特点,使所有各种计算机都能在因特网上实
现互通,即具有“开放性”的特点。
(3) IP 数据报
TCP/IP 协议定义了一个在因特网上传输的包,称为IP 数据报(IP
Datagram)。这是一个与硬件无关的虚拟包, 由首部和数据两部分组成,其格式
如图2.1所示:
图2.1 IP 数据报一般格式
IP 数据报的详细格式如图2.2所示: 0 3 7 15 31
版本 首部长度 服务类型
总长度 标识
标志 片偏移 生存时间 协议
头校验和 源IP 地址
目的IP 地址
选项
填充域
数据部分
图2.2 IP 数据报的详细格式 IP 数据报固定部分各字段含义:
(1)版本 占4位,指IP 协议的版本。通信双方使用的IP 协议版本必
须一致。目前广泛使用的IP 协议版本号为4(即IPv4)。关于IPv6,目前
还处于草案阶段。
数据报的数据区 数据报首部
(2)首部长度占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP 的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP 分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。
(3)区分服务占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。
(4)总长度总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为216-1=65535字节。
在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。
(5)标识(identification) 占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
(6)标志(flag) 占3位,但目前只有2位有意义。
标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。
标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。只有当DF=0时才允许分片。