计算机网络 | 实验三 协议分析程序的编写

实验三 协议分析程序的编写

班级xxx实验环境Win10 Pro 1709(64位)
姓名xxx开发环境Visual Studio 2013
学号xxx测试环境VMware + Windows XP Pro

一、实验目的

  • 掌握IP协议

  • 掌握协议分析编程的编写

二、实验内容

应用WINPCAP编写协议分析工具。将抓取的包和协议分析结构显示在界面上。

三、实验原理

3.1 网络协议分析原理

网络协议分析是截获网络上正在传输的数据报文,并对数据报文的内容进行分析。

网络协议分析需要截获网络上的所有报文,根据上面对网卡接收模式的分析,只要将网卡的接收模式置于混杂模式即可实现。在接收到网络上所有的数据报文后,通过相应的网络协议分析软件进行处理,可以实时分析这些数据的内容,进而分析网络状态和整体布局。

网络协议分析技术主要用来帮助网络管理员对网络进行管理。通过网络协议分析技术,网络管理员可以了解目前网络中正在应用的协议种类,每种协议所占的比例,及哪些设备应用哪些协议进行通讯;同时可以分析协议应用的合理性与有效性,从而合理的选择协议,节约有限的网络宽带,提高网络传输效率;另外,可以诊断出大量的不可见模糊问题,为管理员管理网络区域提供了非常宝贵的信息。

3.2 TCP包格式分析

TCP报文段结构如图所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2vMbuGRr-1592755747908)(TCP.JPG)]

  • 源端口:指定了发送端的端口 目的端口:指定了接受端的端口号
  • 序号:指明了段在即将传输的段序列中的位置
  • 确认号:规定成功收到段的序列号,确认序号包含发送确认的一端所期望收到的下一个序号
  • TCP偏移量:指定了段头的长度。段头的长度取决与段头选项字段中设置的选项
  • 保留:指定了一个保留字段,以备将来使用
  • 标志:SYN、ACK、PSH、RST、URG、FIN
    • SYN: 表示同步
    • ACK: 表示确认
    • PSH: 表示尽快的将数据送往接收进程
    • RST: 表示复位连接
    • URG: 表示紧急指针
    • FIN: 表示发送方完成数据发送
  • 窗口:指定关于发送端能传输的下一段的大小的指令
  • 校验和:校验和包含TCP段头和数据部分,用来校验段头和数据部分的可靠性 紧急:指明段中包含紧急信息,只有当U R G标志置1时紧急指针才有效
  • 选项:指定了公认的段大小,时间戳,选项字段的末端,以及指定了选项字段的边界选项

3.TCP连接建立、释放

采用三步握手法,正常情况下建立TCP连接

  1. 主机1发出连接序号为x(seq=x);

  2. 主机2应答接受主机1的连接请求,并声明自己的序号为y(seq=y,ACK=x+1);

  3. 主机1收到确认后发送第一个数据TPDU并确认主机2的序号(seq=x,ACK=y+1),至此,整个连接建立过程正常结束,数据传输已正式开始;

四、实验思路

4.1 项目概述

  • 项目名称:基于WinPcap的协议分析程序
  • 项目目标:实现一个网络抓包分析系统
  • 项目功能
    1. 搜索并显示所有的网卡设备
    2. 根据所选网卡进行抓包操作,并显示数据包的基本信息:如类型、时间、IP地址等信息
    3. 对数据包进行详细分析,显示数据内容

4.2 设计步骤

  • 1.设计一个主类(所有其他的首部类都要继承这个类),在这个类中有一个成员变量:该类的一个指针;还有两个虚函数:一个用于分析首部,另一个用于打印首部信息。
  • 2.其他所有首部均继承该类,并分别实现里面的两个虚函数。
  • 3.所有的首部分为三层(暂时,如果以后要分析应用层协议就是四层),上一层分析完首部后,根据协议类型实现那个指针,并调用相应的函数,到最后一层时,指针为NULL。
  • 4.从第一层开始,逐层打印那些信息,直到那个指针为NULL为止。
  • 5.在info中加一个变量 Head_Super* 用于存储首部,然后还要设置几个全局变量用于在面板上显示源IP,目的IP,还有数据包类型等。

五~八 [程序略去]

九、习题与思考题

1、应用WINPCAP能实现哪些网络应用?

  • 捕获原始数据包。不管这个包是发往本地机,还是其他机器之间的交换包

  • 在数据包被发送到应用程序之前,通过用户定义的规则过滤

  • 向网络发送原始数据包

  • 对网络通信量做出统计

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
包括源程序和详细的使用说明个,同时内付相关的软件 编程环境: 操作系统:Windows XP SP2 开发语言:C++ / MFC 编译环境:MS Visual C++6.0 第3方函数库:Winpcap3.1 使用说明: 1. 启动: 程序启动后首先出现网卡选择对话框,如图1所示,在设备列表中选择需要进行捕获的网卡。 2. 界面: 选择网卡后出现程序主界面,界面设计主要参照了一款比较优秀的网络协议分析工具Iris的图形化界面,采用切分窗口风格,整个程序界面分为三部分:左侧为树形视图,右侧上半部分为列表视图,右侧下半部分为编辑视图 3. 功能: 1) 如果不做任何设置,程序默认为混杂模式,点击按钮① 后,程序开始捕获网络上传输的所有数据包,并将它们显示在列表视图中。点击按钮② 停止捕获。 2) 点击列表视图中的某一行后,对应于该数据包的详细字段分析和原始数据将分别显示在左侧树形视图和右下的编辑视图中,如图2所示。 3) 列表视图中显示的最大数据包数量为2000条,超过后列表视图将清空并重新开始。另外程序还提供了在任意时刻清空当前列表视图中所有数据包的命令(提供该命令的原因是经常会有这样的情况:即列表视图中已经有了很多消息了,但目前只需要关注从即刻起之后到来的消息,这时以前的消息就不再有用并且会影响我们对所要消息的选择)。要使用该命令请在列表视图中任意位置单击鼠标右键,在弹出的菜单中选择“全部清空”

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值