监控IP数据包流量系统设计书_第1页
监控IP数据包流量系统设计书_第2页
监控IP数据包流量系统设计书_第3页
监控IP数据包流量系统设计书_第4页
监控IP数据包流量系统设计书_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 监控 据包流量系统设计书 一、 课程设计目的 和 要求 随着 于 此学习网络层的基本概念,了解 议的基本内容,对于掌握 P 协议的主要内容和学习网络课程是十分重要的。通过本次课程设计,有助于熟悉 格式和加深对 议的理解。 编制程序,监控网络,捕获一段时间内网络上的 据包,按 据包的源地址统计出在该时间段内发出的 的个数,将其写入日志文件中并用图 形表示出来。 程序的具体要求如下: 据用户输入的捕获时间和选择的网卡输出该段时间内的 据包流量分析 2 3 二、 课程设计的内 容 1)使用 主要功能在于独立于主机协议(如 P)发送和接受原始数据包; 2)列出网卡列表,让用户选择可用的网卡; 3)使用过滤器捕获 ,别的包都过滤掉; 4)捕获 并按包的源地址进行统计(用链表结构进行实现)。 5)将统计结果输 出到图形窗口界面或输出到日志文件 程序流程如图 8示。 1. 熟悉 部格式 2. 使用 具 一个基于 台的,用于捕获网络数据包并进行分析的开源库 . 生的目的,就是为 用程序提供这种访问方式; 供了以下功能 a) 捕获原始数据包,无论它是发往某台机器的,还是在其他设备(共享媒介)上进行交换的 4 b) 在数据包发送给某应用程序前,根据用户指定的规则过滤数据包 c) 将原始数据包通过网络发送出去 d) 收集并统计网络流量信息 使用 具主要需要三个步骤 : 1)在 网 (载并安装 可 2)下载 发包,并在开发环境 (导入 件夹路径。 入步骤 (工具 -选项 -目录 ,分别在 加入 / /3)头文件 : 方法一 : :工程 -设置 -链接 在 添加 意中间的空格 ) 方法二 :在源文件中添加命令处理 : #“ ) #“ ) 本程序将会用到的 能有 : 获取本机所有适配器信息 混杂模式打开适配器 译并设置过滤器 获数据包 放打开的适配器信息 . 图形窗口界面编程 包括按钮,编辑框,列表框,列表控件等控件的使用 4. 其他相关知识,如文件操作,链表操作等 5 三、 课程设计核心知识 本课程设计要实现对数据包的捕获,首先就要获取并列出本机上的所有网卡信息,这个功能是通过 供的 实现的。该函数原型如下 一个用于描述网卡信息的结构体。里面包含了网卡的名字,描述等信息。通过这个函数可以得到一个网卡信息组成的链表。函数错误则返回 得到网卡信息之后,可以通过列表框等形式显示出来,在用户选择后,通过 开指定网卡 : 函数功能:获得用于捕获网络数据包的数据包捕获描述字。 参数说明: 数为指定打开的网络设备名。 数定义捕获数据的最大字节数。 定是否将网络接口置于混杂模式。 定超时时间(毫秒)。 数则仅在 函数出错返回 用于传递错误消息。 这些参数中最重要的就是 数,通过它可以将网卡监听设置为混杂模式,混杂模式是指不管网卡接收到的数据包是不是发给自己的,都向应用程序上传。这样可以 捕获一些广播信息。本程序将监听模式设为混杂模式。 在打开网卡并得到网卡描述符后,可以编译并设置过滤器。 编译过滤器 : p, 编译一个数据包过滤器,将一个能被核心态( 滤器引擎解 6 释的程序中的高层过滤表达式( 行转化。被用来将字符串 译进过滤器程序( 程序( 一个指向 赋值的指针。 性能进行优化。 明 仅在检查过滤器程序中的 播地址的时候被使用。返回 1表示发生了错误,此时, 将被用来显示错误信息。 设置过滤器 p,把一个过滤器同一次抓包关联起来。 用来指定一个过滤器程序。 一个指向 构体的指针,通常是执行的结果。当失败时返回 1,此时, 被用来显示错误信息;返回 0 表示成功。 接下来就是最后一步抓包, 供的抓包接口主要有 种 接由数据包捕获驱动所调用,它在底层抓取到包时,直接调用用户传入的处理函数 本 程序使用另一个函数 p, 功能 : 从 离线记录文件获取一个报文 参数 : p: 已打开的捕捉实例的描述符 报文头 报文内容 返回值 : 1: 成功 0: 获取报文超时 发生错误 获取到离线记录文 件的最后一个报文 7 四、 课程设计框架 1. 核心流程图 : 8 本程序是 基于对话框的窗口程序。 界面如下: 图 1 主要设计流程如下 1. 在 获取并显示网卡信息 2. 在用户点击开始监听按钮时 : a) 验证用户有效输入 (验证用户是否输入有效的监控时间,是否选择合适的过滤器,以及是否已选择网卡 ) b) 以混杂模式打开网卡 c) 根据用户在列表框中的选择编译并设置过滤器 d) 开始抓取报文 ,将结果添加到统计链表 。并随时检测是否超时。 e) 抓取完成之后,将结果输出到列表控件界面 f) 在用户关闭窗口或者开始再次监控时提 示是否将结果输入日志文件 (在用户再次选择监控时,需要清空已有数据 ) g) 用户关闭窗口时,提示保存日志并释放打开的所有适配器信息 9 五、 课程设计详细分析 一、 相关数据结构 : 1. 部结构体 /版本号以及首部长度 /区分服务 /总长度 /表示 /标志和片偏移 /生存时间 /协议类型 /验 /源 址 /目的 址 2. 统计的数据包信息结点 该类对象记录一个类型的数据包并且负责管理其包的数量 ; ; /增加本节点计数 ; /获取本节点计数 ;/得到本节点 址 ; ; /节点计数 ; 10 3. 统计信息链表类 类维护抓取到的数据包链表 ; /初始化头尾指针为空 ; /得到头指针 /添加一个结点 如 /果该结点存在 则增加其计数 如果不存在创建并添加该节点 ; /创建一个头尾指针均为空的链表 ;/释放自身维护的链表 * ; = /如果当前链表为空 创建一个节点 初始化头尾指针 /如果链表不为空 p = (p=p; p=p- /如果该 经存在 则增加其计数 = & = ) ; /如果不存在该 添加节点 更新尾指针 = ( 11 二、 主界面类 辑 : 1. 主要类成员 : ; /在用户重新开始监控时 重新初始化数据 ; /将最近一次统计结果保存到指定文件 ; /询问用户是否保存文件 /在监控过程中 使输入控件无效 ; /更新统计列 表输出 ; /开始抓取数据包 ; /初始化统计列表控件设置 .); /格式化并显示提示消息 ; /设置监控过滤器 ; /打开用户选定的适配器 ; /查找并显示所有的适配器 ; /最近一次监控的开始时间 * * /用户选中的适配器描述符 * ; /文件流 用于保存记录 ; 2. 初始化:初始化工作在 完成 : 主要代码 : / 查找并显示所有适配器 如果失败则结束程序 ) /初始化统计列表控件设置 ; /设置默认过滤器 (-); 3. 用户选择开始 : 在响应函数 中 /如果之前有监听记录 询问是否保存记录到日志文件 /并且重置必要数据 (统计链表 ) ; ; /验证是否输入定时 if(= 0) 请输入你要监控 的时间 ); /是否选择有效过滤器 = ) 输入你的过滤器 ); 12 /获取并打开用户选择的适配器 !) (!) /输出提示信息 正在监听 :%s, ) /标记已经监听过 监听正常结束 ); /更新输出以及界面 ; 程序的核心部分,其他模块函数都为其服务,当用户非第一次监控时,会调用 数,该函数判断用户是否在日志文件编辑框中输入文件名,如果是,则修正该文件名为 否将上一次结果保存到日志文件 图 如果用户选择是,则在 调用 数,将记录输出到指定日志文件 13 /* * 询问是否保存日志文件 如果选择是 调用 存记录到文件 */ /如果日志文件一栏不为空 if(= ) /修正用户文件格式 ); = & = /询问用户是否保存 是否将输出保存到你的日志文件 : %s, = 是否保存 ?, ; 下图 3 为生成的日志文件 : 图 如果用户选择再次监控,在保存日志文件后,还需要清空已收集的报文 14 包记录和显示界面。这是通过 来完成的。该函数遍历并释放有节点,然后清空列表控件显示。实现参见附源代码 之后便开始打开网卡,设置过滤器,然后开始一次新的监听,监听代码如下: / 开始在该适配器上不断抓包 并将捕获信息填入到统计链表 /使开始按钮和其他输入框不再响应输入 /获取开始时间 : & = 0) /计算并显示剩余时间 : ( %d 秒 , 该函数通 计在一段时间内抓取到的报文到 完成统计之后,通过 函数更新列表控件 显示链表中的统计结果。 过遍历统计链表中的结果,并获取其中的信息输出到表项。通过 址转换为点分十进制的字符串。通过一个 支来解析节点中的 段属于何种协议。 15 图 4 为解析过程界面 图 5 为过滤器为 的运行结果 : 4. 关闭窗口时的处理流程 : 当用户选择关闭窗口时,在对话框关闭响应函数 : 果为 明用户已经至少监控过一次,调用 数。该函数首先判断用户是否输入了日志文件,如果是,则修正文件格式为 后弹出消息框提示保存 16 并负责调用 存。如果用户未输入日志文件名,则什么 也不做。 放 保存的所有适配器信息 数代码如下 : /询问是否保存最后一次结果 ; ; 17 六、 实验源代 码 / /# 1000 # 1000 ; ; /增加本节点计数 ; /获取本节点计数 ;/得到本节点 址 ; ; /节点计数 ; #!#=_# 1; 18 ; / /# 1000 # 1000 # ; /初始化头尾指针为空 ; /得到头指针 /添加一个结点 如果该结点存在 则增加其计数 /如果不存在创建并添加该节点 ; ; * ; #!#=_# ( = /如果当前链表为空 创建一个节点 初始化头尾指针 /如果链表不为空 p = (p=p; p=p- /如果该 经存在 则增加其计数 = & = ) 20 ; /如果不存在该 添加节点 更新尾指针 = / /# 1000 # 1000 # ; /在用户重新开始监控时 重新初始化数据 ; /将最近一次统计结果保存到指定文件 ; /询问用户是否保存文件 /在监控过程中 使一些输入控件无效 ; /更新统计列表输出 ; /开始抓取数据包 21 ; /初始化统计列表控件设置 .); /格式化 并显示提示消息 ; /设置监控过滤器 ; /打开用户选定的适配器 ; /查找并显示所有的适配器 / ; / DV ; / ; ; ; ; ; ; / ; /最近一次监控的开始时间 * * /用户选中的适配器描述符 * ; /文件流 用于保存记录 ; / / + #!# = _# ; / ; / / DV ; : / / 23 / / *=) : / 0; _T(); _T(); /()- 0; / 256); / / / / ; / . to ( 0= / s is a / / (!) /初始化统计列表控件设置 ; /设置默

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论