当前位置:文档之家› IP捕获与分析-网络14-2班-1404020201-陈雷

IP捕获与分析-网络14-2班-1404020201-陈雷

IP捕获与分析-网络14-2班-1404020201-陈雷
IP捕获与分析-网络14-2班-1404020201-陈雷

哈尔滨理工大学

技能训练报告

题目:IP包的捕获与分析

院系:计算机科学与技术学院网络工程系

班级:网络14-2

姓名:陈雷1404020204

成绩:

2017年9月20日

IP数据包的捕获与分析

一、实训目的

在互联网迅速发展的时代潮流下,我们已经进入了这个与网络密切相关的Internet时代,计算机信息技术更是成为了当前时代下不同领域的共同特征。学校可以利用各种网络资源和技术来提高对学校的管理工作,对教育的创新改革和打造学校品牌都具有不可忽略的意义。学校作为当下时代的人才培养基地,每年的毕业设计工作都是学校教学工作的一个重要环节。

网络层作为计算机网络中重要的一层,并且tcp/ip协议也有着非常广泛的应用,那么对IP的相关协议也有了越来越多的发展,这一次,我们就通过对IP的捕获与分析,来对IP做更深入的了解。

随着个人计算机和互联网的普及,使我们从一个封闭的环境进入到一个开放的世界,越来越多的人开始使用网络这个媒介来发送,接收信息,计算机网络给人们生产和生活带来了巨大的便利。但是由于网络是一个面向大众的开放系统,它的这种特性决定了其对数据信息的保密和系统的安全性考虑并并不完备,存在着诸多的安全隐患。因此让有些个人或团体有机可乘,利用这些隐患和漏洞,通过网络来发送一些包含色情,反动等不良内容的信息,或通过网络入侵他人主机盗取信息和机密,达到破坏正常社会秩序的目的,以至于计算机网络的安全形势日趋严峻。因此,现在在计算机网络安全隐患中扮演重要角色之一的网络数据抓包软件受到越来越大的关注。构建安全网络环境,除了通过主动的人为思想的预防以外,一套被动的网络安全检测机制也是必不可少的,通过运用标准的机制对网络中传输的各类型进行实时监控,对具有威胁性的信息进行甄别警报,这套机制的前提就是首先对网络中传输的信息进行捕获,对获取的信息解析筛查。而想要捕获这些信息,就要知道网络中的信息是以数据包的形式进行传输,想要获取信息,就必须对网络中的数据包进行捕获和分析,才能获得所需要的相应信息。所以对网络上传送的数据包进行有效的捕获与解析是目前网络监控的关键技术,只有能够进行高效的网络数据包捕获和解析,才能为网管人员听过相应的数据进行分析或其他操作,从而进一步的施行网络安全监控和管理。

IP数据包是网络中最常见的数据包类型,而IP也是TCP/IP协议族中最为核心的协议。所含有有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输,其中又主要以TCP和UDP 两种数据类型为多数。所以掌握了对IP数据包的捕获与分析技术,就能对网络中传输的大部分数信息进行监控和管理。计算机之间进行通信时,交互的所有信息都封装在数据包中。因此,通过采集网络数据并对其进行相应的分析,可以清楚地了解到进行通信的计算机的通信目的。首先,分析采集到的数据包,可以确定网络是否受到攻击入侵;其次,也可以使用采集到的数据包来分析网络应用程序可能出现的问题的原因;此外,通过网络数据采集和统计可以清楚的了解整个网络在各个时段内的网络负载情况,从而判断网络使用得是否合理。除了以上谈到的几个方面以外,数据包采集分析还有其他很多用途.在研究IPv4网络的同时,我们还对IPv6协议进行了初步的研究并通过对数据报的分析,了解了在不同网络环境下IPv6数据包的封装格式以及在网络中的传输路径。目前,在同一子网范围内,可以通过邻居计算机发现协议自动配置主机的本地一链路IPv6地址,并获取子网内其他主机的通信地址,通过该地址可以实现子网内的主机间纯IPv6环境下的通信。但由于现在整个因特网并不支持IM 协议,因此IPv6数据包要在网间传输,必须通过基于双协议栈的IPv4隧道(Tunnel)技术,将EM数据报封装在IPv4包头中,并通过指定的支持IM协议的路由在Internet中传送到目的地,再由目的主机进行数据报解析。获取IPv6数据报中的信息。

网络层作为计算机网络中重要的一层,并且TCP/IP协议也有着非常广泛的应用,那么对IP的相关协议也有了越来越多的发展,这一次,我们就通过对IP的捕获与分析,来对IP做更深入的了解。

二、实训任务

学会对Winpcap包进行配置,并进行相应编程,捕获经过本机的IP数据包,解析包头信息,并将信息详细显示出来,形成文档,便于查询。

明确综合课程设计的目的,能根据综合课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用C++语言捕获网络数据包的编程技术水平;了解软件开发的一般方法和步骤;提高撰写技术文档的能力。

三、实训内容

3.1系统总体内容

3.1.1课程设计题目与要求

本次实验的要求在网络环境,使用VC++编写程序实现捕获网络中的IP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。

程序的具体要求如下:

(l)以命令行形式运行:ipparse logfile,其中ipparse是程序名,而logfile则代表记录结果的日志文件。

(2)在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。

(3)当程序接收到键盘输入Ctrl+C时退出。

3.1.2 IP数据包格式

下图是IP数据包的格式:

IP数据包由首部和数据两部分组成。首部的前一部分是固定长度,共20 字节,是所有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位,因此数据报的最大长度为2^16-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时才允许分片。

7.片偏移占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。

8.生存时间占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。后来把TTL 字段的功能改为“跳数限制”(但名称不变)。路由器在转发数据报之前就把TTL值减1.若TTL 值减少到零,就丢弃这个数据报,不再转发。因此,现在TTL的单位不再是秒,而是跳数。TTL的意义是指明数据报在网络中至多可经过多少个路由器。显然,数据报在网络上经过的路由器的最大数值是255.若把TTL的初始值设为1,就表示这个数据报只能在本局域网中传送。

9.协议占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。

10.首部检验和占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。

11.源地址占32位。为发送方的IP地址。

12.目的地址占32位。为接收方的IP地址。

3.1.3 实验环境

本实验采用Windows操作系统平台,利用Windows提供的Windows Sockets API实现IP 数据包的捕获与分析。采用WinSock 2.2版本,编程语言选用C++,编程工具采用Visual Studio 2010旗舰版。

1.系统开发环境

本实验采用Windows操作系统平台,利用Windows提供的Windows Sockets API实现IP 数据包的捕获与分析。采用WinSock 2.2版本,编程语言选用C++,编程工具采用Visual Studio 2010旗舰版。

CPU: Intel core 2Duo processor T5300 1.73GHz

内存:1.5G

硬盘空间:120G

2.网络设备

网卡、HUB、网线等。

3.工具简介

开发工具1:Visual Studio 2010

开发工具2:WinPcap_4_1_1和WpdPack_4_1_1

Winpcap提供给用户两个不同级别的编程接口:一个基于libpcapwpcap.dll,另一个是较底层的packet.dll。对于一般的要与unix平台上libpcap兼容的开发来说,使用wpcap.dll是当然的选择。

Winpcap的主要功能:在于独立于主机协议(如TCP-IP)而发送和接收原始数据包。也就是说,Winpcap不能阻塞,过滤或控制其他应用程序数据包的发收,它仅仅只是监听共享网络上传送的数据包。

因此,它不能用于QoS调度程序或个人防火墙。目前,Winpcap开发的主要对象是windows NT/2000/XP,这主要是因为在使用Winpcap的用户中只有一小部分是仅使用windows

95/98/Me,并且M$也已经放弃了对win9x的开发。因此本文相关的程序T-ARP也是面向NT/2000/XP用户的。其实Winpcap中的面向9x系统的概念和NT系统的非常相似,只是在某些实现上有点差异,比如说9x只支持ANSI编码,而NT系统则提倡使用Unicode编码。有个软件叫sniffer pro.可以作网管软件用,有很多功能,可监视网络运行情况,每台网内机器的数据流量,实时反映每台机器所访问IP以及它们之间的数据流通情况,可以抓包,可对过滤器进行设置,以便只抓取想要的包,比如pop3包,smtp包,ftp包等,并可从中找到邮箱用户名和密码,还有ftp用户名和密码.它还可以在使用交换机的网络上监听,不过要在交换机上装它的一个软件.还有一个简单的监听软件叫Passwordsniffer,可截获邮箱用户名和密码,还有ftp用户名和密码,它只能用在用HUB网络上著名软件tcpdump及ids snort都是基于libpcap编写的,此外Nmap扫描器也是基于libpcap来捕获目标主机返回的数据包的。Winpcap提供给用户两个不同级别的编程接口:一个基于libpcap的wpcap.dll,另一个是较底层的packet.dll。对于一般的要与unix平台上libpcap兼容的开发来说,使用wpcap.dll是当然的选择。

3.1.4程序流程图

通过对实验题目和要求的分析,画出程序流程图如下:

开始

N

N

N Y

命 令行参数正确? 加载WinSock 动态链接库成 解析IP 数据包 捕获IP 数据包 设置套接字 创建原始套接字 接收到Ctrl+C?

结束

3.2系统总体框架及思路

3.2.1套接字模块

套接字模块主要包括原始套接字的创建和原始套接字的设置。此模块先创建一个原始套接字,然后将此套接字绑定到一个本机的网络接口,再设置套接字使

3.2.2 数据包的捕获模块

此模块主要负责捕获IP数据包,然后将捕获的数据包提交给IP数据包解析模块。此模块利用设置好的原始套接字捕获IP数据包,然后将数据包提交给解析模块,直到键盘输入ctrl+c 时结束。

3.2.3IP数据包分析模块

此模块主要负责对IP数据包进行分析,即根据IP数据包的格式把信息从捕获到的IP数据包中提取出来,然后再提交给输出模块。

3.2.4输出模块

此模块负责输出IP数据包信息的输出,包括输出到标准输出和日志文件。

3.2.5思路

此模块对于该软件的设计和执行过程,主要分为两个关键部分,所以按此要求分为中有两个核心的工作步骤,第一步是调用Winpcap函数库实现下层抓包,这部分是为了实现网络中的数据包获取,是最基础的步骤。第二步是对所获取的数据包文进行分析和统计或是其他操作,筛选出我们所需要的信息。下面分别列出两个核心过程。抓包过程,通过winpcap的调用从网络中获取数据包信息,步骤如下:第一:初始化Winpcap开发库第二:获得当前的网卡列表信息,从列表中选取其中所需要的指定网卡。第三:获得当前的过滤规则,决定其过滤细节,但也可为空。第四:调用库函数,pcap_loop(),并同时指定其回调函数,所指定的回调函数其实就是数据包分析过程。分析过程,将所获取的当前数据包信息转存后进行解析过程,步骤如下:第一:由上一步通过winpcap抓包,将抓包后得到的数据包后转存到内存里,满足以后的使用和操作。第二:调用相符协议类型的数据包分析类。在概要设计中,按模型层的要求,构造了多个用于分析不同类型数据包的分析类模型,每个模型对应一种数据包类型,调用是按要求调用符合该数据包类型的指定模块。每个模型中按对应的数据包类型构造分析算法,完成对本类型数据包的具体解析工作。第三:对数据包信息内容进行解析,过程如下:在数据包中,其前14个字节(Byte)表示为数据链路层的报文头,其报文格式是前6个字节(Byte)表示为目的MAC地址,随后的6个字节(Byte)表示为源

Mac地址,最后的2个字节(Byte)代表上层协议类型,这些重要的数据信息,是我们分析上层协议的依据。根据所分析到的协议类型进行类似的迭代分析。这样就可以得到各层中的报文头信息和数据信息。第三:结束本次分析,等待下一次调用。

3.2.6捕获数据包的常用方法

目前常用的捕获数据包的方法有原始套接字、LibPcap、WinPcap和JPcap等方法。它们各有特点,实现起来有难有易,如何选择取决于具体需求与程序员的喜好。下面分别对它们作简单介绍。

套接字是网络应用编程接口。应用程序可以使用它进行网络通信而不需要知道底层发生的细节。有时需要自己生成一些定制的数据包或者功能并希望绕开Socket提供的功能,原始套接字(RawSocket)满足了这样的要求。原始套接字能够生成自己的数据报文,包括报头和数据报本身的内容。通过原始套接字,可以更加自如地控制Windows下的多种协议,而且能够对网络底层的传输机制进行控制。

LibPcap是一种与系统无关,采用分组捕获机制的分组捕获函数库,用于访问数据链路层,它在不同的平台上采用统一的编程接口,使用LibPcap编写的程序可自由的跨平台使用。同时LibPcap是一个独立于系统接口的用户级的抓包库,它为底层网络监听提供了可移植框架。它的应用包括网络统计集合、安全监听、网络调试等。

WinPcap是一个基于Win32的捕获数据包和网络分析的体系结构,它包括一个内核级的包过滤器,一个底层的动态链接库(Packet.dll),一个高层并且与系统无关的库(WPcap.dll,基于LibPcap0.6.2版本)。WinPcap是集成于Windows 95, 98, ME, NT, 2000和XP操作系统的设备驱动程序,它可以从网卡捕获或者发送原始数据,同时能够过滤并且存储数据包。

JPcap是一个能够捕获、发送网络数据包的Java类库包。这个包用到了LibPcap和原始套接字API。JPcap支持Ethernet, IPv4, IPv6, ARP/RARP, TCP, UDP, ICMPv4协议。JPcap 是一个Java类集合,它为网络数据包的捕获提供接口和系统支持。其最初版本是2000年6月发布的JPcap0.01版,此后几经修改,到2003年4月发布了最新的JPcap0.4版。

3.3系统设计与实现

3.3.1概要设计

流程图如下图所示:

开始

构造程序

创建原始套接字

设置网卡

N

监听网卡

解析IP数据包

输出存档

Y

是否达到次数?

结束

在软件的设计过程中,采用了典型的MVC(Model View Controller)的设计模式,即模型(model)-视图(view)-控制器(controller),整体分为三层。每层通过构造不同的类来实现。

第一层为控制层(Controller,构建CapturePacketDlg、CAdapaterSelection类,是用于接受数据输入并调用模型和视图去完成操作的需求,而在该软件中,为了为简化设计,设计上本人将控制层分为两个部分,第一个部分为网络中数据包的捕获,另一部分为将获得的数据输入。主要功能就是获取数据包信息,接受数据输入并连接模型和视图去完成所要求的操作。

第二层是模型层,构建CFramePacket类、CIPPacket类、CTCPPacket类、CUDPPacket类和CARPPacket 类这五种类,是主要程序算法规则,分别用于解析数链路层数据和IP、TCP、UDP、ARP这四种不同的数据包;处理用户的输入。

第三层为视图层即界面显示层,构建软件主界面CapturePackeDlg类,和保存界面COutputDataDlg 类,对控制层的要求对应的进行显示。系统的整体运行过程为:从控制层捕获到初始的数据包数据,交由模型层进行对应解析处理,在将所得解析数据信息连接到视图层进行显示。

3.3.2数据结构的定义

本程序主要用到了两个数据结构,一个是IP头的结构体,一个是常用IP协议号与协议名的映射。

1.IP头结构体

根据IP数据包的格式,定义IP头结构体如下:

struct IPHead

{

u_char ihl : 4; //头长度

u_char version : 4; //版本

u_char tos; //服务类型

u_short len; //IP包的总长度

u_short id; //标识

u_short off; //分段偏移量

u_char ttl; //生存期

u_char protocol; //协议

u_short cksum; //头校验和

struct in_addr saddr; //源IP地址

struct in_addr daddr; //目的IP地址

};

2.常用IP协议号与协议名的映射

为了通过协议号得到协议名,于是定义了一些常见的协议号与其协议名的映射关系,如下:

pair common_ip[] = {

make_pair(1, "ICMP"),

make_pair(2, "IGMP"),

make_pair(3, "GGP"),

make_pair(4, "IP in IP"),

make_pair(6, "TCP"),

make_pair(8, "EGP"),

make_pair(17, "UDP"),

make_pair(35, "IDPR"),

make_pair(45, "IDRP"),

make_pair(46, "RSVP"),

make_pair(47, "GRE"),

make_pair(54, "NHRP"),

make_pair(88, "IGRP"),

make_pair(89, "OSPF"),

};

//常见的IP协议编号和名称

const map IP_PROTOCOL(common_ip, common_ip + 14);

3.3.3初始化工作

1.命令行参数检查

if(argc != 2)

{

cerr << "命令行参数错误!" << endl;

return 1;

}

如果命令行参数的数目不是2的话,说明输入有误,需打印错误信息,然后退出。

2.初始化动态链接库

WSADATA wsa_data;

if(WSAStartup(MAKEWORD(2, 2), &wsa_data) != 0)

{

cerr << "WSAStartup() error!" << endl;

return 1;

}

如果初始化失败,则退出程序。

3.3.4套接字的创建和设置

1.套接字的创建

创建一个原始套接字,用来捕获数据包。

SOCKET s = socket(AF_INET, SOCK_RAW, IPPROTO_IP);

if (s == INV ALID_SOCKET)

{

WSACleanup();

cerr << "socket() error!" << endl;

return 1;

}

如果创建失败,则退出程序。

2.绑定本机地址

将刚刚建立的套接字与本机IP地址绑定。

struct sockaddr_in hostaddr;

hostaddr.sin_family = AF_INET;

hostaddr.sin_port = htons(0);

hostaddr.sin_addr.s_addr = gethostid();

if(bind(s, (sockaddr *)&hostaddr, sizeof(sockaddr)) != 0)

{

closesocket(s);

WSACleanup();

cerr << "bind() error!" << endl;

exit(-1);

}

WinSock提供的bind()函数用于将一个套接字与一个地址绑定。绑定之后,原始套接字就能接收流经该IP地址所属网络接口的全部IP数据包。

3.设置套接字为SIO_RCV ALL

DWORD in_buffer = 1, n_returned;

int ret = WSAIoctl(s, SIO_RCV ALL, &in_buffer, sizeof(in_buffer),

NULL, 0, &n_returned, NULL, NULL);

if(ret != 0)

{

closesocket(s);

WSACleanup();

cerr << "WSAIoctl() error!" << endl;

exit(-1);

}

将套接字设置为SIO_RCV ALL之后,套接字就能捕获局域网内所有的IP数据包,如果设置失败,就退出程序。

3.3.5接收数据包

在程序中可使用recv()函数接收经过的IP包。该函数有四个参数,

第一个参数接收操作所用的套接字描述符;

第二个参数接收缓冲区的地址;

第三个参数接收缓冲区的大小,也就是所要接收的字节数;

第四个参数是一个附加标志,如果对所发送的数据没特殊要求,直接设为0。因为IP数据包的最大长度是65535B,因此,缓冲区的大小不能小于65535B。设

置缓冲区后,可利用循环来反复监听接收IP包,用RECV()函数实现接收功能的代码如下:#define BUFFER_SIZE 65535

char buffer[BUFFER_SIZE]; //设置缓冲区

while(true)

{

recv(sock,buffer,BUFFER_SIZE,0); //接收数据包

/*然后是解析接收的IP包

*/

3、定义IP头部的数据结构

程序需要定义一个数据结构表示IP头部。这个数据结构应该和IP数据包的格式吻合,其代码如下:

typedef struct _IP_HEADER //定义IP头

{

union

{

BYTE Version; //版本(前4位)

BYTE HdrLen; //报头标长(后4位),IP头的长度

};

BYTE ServiceType; //服务类型

WORD TotalLen; //总长度

WORD ID; //标识

union

{

WORD Flags; //标志(前3位)

WORD FragOff; //分段偏移(后13位)

};

BYTE TimeToLive; //生命期

BYTE Protocol; //协议

WORD HdrChksum; //头校验和

DWORD SrcAddr; //源地址

DWORD DstAddr; //目的地址

BYTE Options; //选项

} IP_HEADER;

这里只考虑IP头部结构,不考虑数据部分。在捕获IP数据包后,可以通过指针把缓冲区的内容强制转化为IP_HEADER的数据结构。

IP_HEADER ip=*(IP_HEADER*)buffer;

3.3.6winpcap获取网卡信息的相关函数

在进行Winpcap编程之前,先介绍Winpcap编程的主要流程与相关步骤。

(1)pcap_findalldevs_ex(获取主机所有网卡的信息) 包含在头文件remote-ext.h中。

int pcap_findalldevs_ex (

char * source, // 定义主机位置,一般使用

PCAP_SRC_IF_STRING

struct pcap_rmtauth * auth, // 是否需要验证,如果是本主机该项为NULL

pcap_if_t ** alldevs, // 返回的结果,保持网卡信息的链表的头指针

char * errbuf // 指向错误信息保存的缓冲区)

使用的代码如下:

if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING

, NULL, &alldevs, errbuf) == -1) { fprintf(stderr," pcap_findalldevs_ex 失败: %s\n", errbuf);

exit(1); }

Winpcap中还保留的早期的一个获取网卡信息的函数。

(2)pcap_findalldevs(pcap_if_t ** alldevsp, char * errbuf );

该函数只能获取本主机的网卡信息列表,使用方法如下:

pcap_findalldevs( &alldevsp, errbuf );

3.3.7数据包的捕获与分析

前面的步骤完成之后就可以进行数据包的捕获了。主要用到WinSock提供的recv函数,recv函数的原型为:

size_t recv(SOCKET sockfd, void *buf, size_t len, int flags);

recv()如果执行成功,则捕获的数据包存储在buf中。

主要代码如下:

for(; ;)

{

int n_recv = recv(s, buf, sizeof(buf), 0);

SYSTEMTIME cur_time;

GetLocalTime(&cur_time); //获得捕获数据包的时间

if(n_recv > 0)

{

IPHead *lp_iphead = (IPHead *)buf;

char buf[20];

sprintf(buf, "%02d:%02d:%02d:%03d", cur_time.wHour,

cur_time.wMinute, cur_time.wSecond, cur_time.wMilliseconds);

//输出到标准输出

cout << "捕包时间\t" << buf << endl;

output_ip(lp_iphead, cout);

cout << endl << endl;

//输出到文件

fout << "捕包时间\t" << buf << endl;

output_ip(lp_iphead, fout);

fout << endl << endl;

fout.flush();

}

}

其中,output_ip是一个自定义函数,该函数,将lp_iphead所向的IP信息输出到输出流fout。

3.3.8信息的输出

/*

**将IP数据包信息输出到out流

**ip_iphead为指向IPHead类型的指针

*/

void output_ip(IPHead *lp_iphead, ostream &out)

{

out << "版本\t\t" << (int)lp_iphead->version << endl;

out << "头长度\t\t" << (int)(lp_iphead->ihl * 4) << endl;

out << "服务类型\t" << (int)lp_iphead->tos << endl;

out << "总长度\t\t" << lp_iphead->len << endl;

out << "标识\t\t" << lp_iphead->id << endl;

u_short unserved = (lp_iphead->off) >> 15;

u_short DF = ((lp_iphead->off) >> 14) & 0x0001;

u_short MF = ((lp_iphead->off) >> 13) & 0x0001;

out << "标志位\t\t" << unserved << DF << MF << endl;

out << "偏移量\t\t" << ((lp_iphead->off) & 0x1fff) << endl;

out << "生存期\t\t" << (int)lp_iphead->ttl << endl;

out << "协议\t\t" << (int)lp_iphead->protocol;

map::const_iterator it = IP_PROTOCOL.find(lp_iphead->protocol);

if(it != IP_PROTOCOL.end())

out << "(" << it->second << ")" << endl;

out << "校验和\t\t" << lp_iphead->cksum << endl;

out << "源IP地址\t" << inet_ntoa(lp_iphead->saddr) << endl;

out << "目的IP地址\t" << inet_ntoa(lp_iphead->daddr) << endl;

}

3.3.9结果分析

结果分析模块的设计思想是将WinPcap捕获到的数据对应网络数据包的格式进行初始化,取得具体的值,并输出到界面。数据分析模块的主要实现数据的解析。从网络适配器,这些原始数据为二进制格式,必须转化为能比较好明白的格式,这就要求将这些原始数据能按照网络数据传输的具体格式来保存,主要为了能较好的读懂相关的信息,以便使用者分析。

数据分析模块实现时,本系统提取的数据包中主要的一些信息。为了实现这个功能,特此构造了几种数据包分析类,用于分析这几种常见常用的数据包,在提取获得的数据包信息后,按照不同的数据包类型,相应的调用构建好的数据包分析类,对所获取的该类型数据包进行分别处理。这几种类根据控制层控制,从抓包开始到结束,

一直重复调用,分门别类的处理各自相应数据包,并通过显示。

3.4系统运行结果与改进

3.4.1标准输出截图:

日志文件截图:

对应解释:版本:占 4 位,指IP 协议的版本目前的IP 协议版本号为 4 (即IPv4)

生存期:占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个8 bit字段.推荐的初始值由分配数字RFC 指定,当前值为64.发送ICMP 回显应答时经常把TTL 设为最大值255

服务类型:占8比特。用于携带提供服务质量特征信息的字段,服务类型字段声明了数据报被网络系统传输时可以被怎样处理。其中前3比特为优先权子字段(Precedence,现已被忽略)。第8比特保留未用。第4至第7比特分别代表延迟、吞吐量、可靠性和花费。当它们取值为1时分别代表要求最小时延、

最大吞吐量、最高可靠性和最小费用。这4比特的服务类型中只能置其中1比特为1。可以全为0,若全为0则表示一般服务。该字段并没有如初始定义被广泛使用,大部分主机会忽略这个字段,但一些动态路由协议如OSPF(Open Shortest Path First Protocol)、IS-IS (Intermediate System to Intermediate System Protocol)可以根据这些字段的值进行路由决策。

总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535 字节.总长度必须不超过最大传送单元MTU

校验和:占16比特。内容是根据IP头部计算得到的校验和码。计算方法是:对头部中每个16比特进行二进制反码求和。(和ICMP、IGMP、TCP、UDP不同,IP不对头部后的数据进行校验)。

协议字段:协议字段:占8比特。指明IP层所封装的上层协议类型,如ICMP(1)、IGMP (2)、TCP(6)、UDP(17)等。

源IP地址(Source Address) :它是数据报的发起者的32比特IP地址。注意即使中间设备如路由器可能处理该数据报,它们通常不把它们的地址放入该字段,这个地址总是最初发送该数据报的设备的地址

目标IP地址(Destination Address)字段:它是数据报的期望接收方的32比特IP地址。同样,即使如路由器等设备可能是数据报的中间目标,该字段总是用于定义最终目的地。

通过对大量输出数据的分析,发现程序的输出是正确的。

3.4.2程序中有待改进的地方

这个程序只能捕获IPv4数据包,不能捕获IPv6数据包。可以通过修改程序,让这个程序既能捕获IPv4数据包,又能捕获IPv6数据包,那么这个程序就会更加的完善。

还可以为这个程序设计一个图形用户界面,使程序更加美观,更加易于使用。还可以为程序增加一个功能,让程序能获取数据包中的内容,可就需要对各种应用程协议进行解析(例如:TCP,UDP)。

总之,只要多花点功夫,这个程序可以做的更好。

网络性能测试与分析复习整理

网络性能测试与分析(林川)复习整理 对一台具有三层功能的防火墙进行测试,可以参考哪些和测试相关的RFC文档? RFC3511、RFC3222、RFC2889、RFC2544 IP包头的最大长度为多少?为什么? 答:60字节,固定部分20字节,可变部分40字节 在数据传输层面,用以衡量路由器性能的主要技术指标有哪些? 答:(1)吞吐量;(2)延迟;(3)丢包率;(4)背对背;(5)时延抖动;(6)背板能力;(7)系统恢复;(8)系统恢复。 什么是吞吐量?简述吞吐量测试的要点? 答:吞吐量是描述路由器性能优劣的最基本参数,路由设备说明书和性能测试文档中都包含该参数。是指在没有丢包的情况下,路由设备能够转发的最大速率。要点:零丢包率。什么是延迟?为什么RFC2544规定延迟测试发包速率要小于吞吐量? 答:延迟是指包的第一个比特进入路由器到最后一个比特离开路由器的时间间隔,又叫时延。 丢包率测试的目的是什么?简述丢包率与吞吐量之间的关系? 答:丢包率测试的目的是确定DUT在不同的负载和帧长度条件下的丢包率。 什么是背对背?什么情况下需要进行背对背测试? 答:背对背指的是在一段较短的时间内,以合法的最小帧间隙在传输介质上连续发送固定长度的包而不引起丢包时的包数量,IEEE规定的以太网帧间的最小帧间隙为96比特。该指标用于测试路由器缓存能力。 大量的路由更新消息、频繁的文件传送和数据备份等操作都会导致数据在一段时间内急剧增加,甚至达到该物理介质的理论速率。为了描述此时路由器的表现,就要进行背对背突发的测试。 吞吐量:是指在没有丢包的情况下,路由设备能够转发的最大速率。对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。 延迟:是指包的第一个比特进入路由器到最后一个比特离开路由器的时间间隔,又叫时延。丢包率:是指路由器在稳定负载状态下,由于缺乏资源而不能被网络设备转发的包占所有应该被转发的包的百分比。丢包率的衡量单位是以字节为计数单位,计算被落下的包字节数占所有应该被转发的包字节数的百分比。 背对背:是指在一段较短的时间内,以合法的最小帧间隙在传输介质上连续发送固定长度的包而不引起丢包时的包数量,IEEE规定的以太网帧间的最小帧间隙为96比特。 转发率:通过标定交换机每秒能够处理的数据量来定义交换机的处理能力。交换机产品线按转发速率来进行分类。若转发速率较低,则无法支持在其所有端口之间实现全线速通信。包转发速率是指交换机每秒可以转发多少百万个数据包(Mpps),即交换机能同时转发的数据包的数量。包转发率以数据包为单位体现了交换机的交换能力。路由器的包转发率,也称端口吞吐量,是指路由器在某端口进行的数据包转发能力,单位通常使用pps(包每秒)来衡量。 。 网络测试定义: 以科学的方法,通过测量手段/工具,取得网络产品或正在运行网络的性能参数和服务质量参数。这些参数包括可用性、差错率、吞吐量、时延、丢包率、连接建立时间、故障检测和

高速网络环境下数据包捕获技术的分析

龙源期刊网 https://www.doczj.com/doc/d12941845.html, 高速网络环境下数据包捕获技术的分析 作者:王亚 来源:《数字技术与应用》2011年第12期 摘要:互联网的迅猛发展,网络带宽飞速增长,在高速网络环境下,传统的网络数据包捕获已经成为制约整个系统的性能提升的瓶颈,为了满足高速网络的数据包捕获的需求,对传统的网络数据包捕获存在的问题进行分析,在此基础上提出了改进措施,为后期研究高速网络下高性能的数据包捕获技术奠定基础。 关键词:高速网数据包捕获 Libpcap 中图分类号:TP393 文献标识码:A 文章编号:1007-9416(2011)12-0194-02 The Analysis of Packet Capture Technology in High Speed Network wangya (Fuyang Teachers College of computer and Information engineering Fuyang 236041) Abstract:The rapid development of the Internet and the rapid growth of network bandwidth,in high-speed network environment,the traditional network data packet capture has become the constraints of the system performance bottleneck. In order to satisfy the high speed network packet capture demand,to analysis the existing problems of the traditional network packet capture,and put forward on this foundation improvement measures.,It lays the foundation for later research of high-speed network and high performance packet capture technology. Keywords:high speed network;packet capture;Libpcap 1、引言 目前,对网络信息监控与检测的软件都是基于数据包捕获技术,如:入侵检测程序Snort、嗅探器Tcpdump等。数据包捕获技术是一种对网络上的数据包进行监听并截取的技术,可以将数据包原封不动的拷贝到捕包端的系统中。数据包捕获是入侵检测系统、网络协议

网络数据包的捕获与分析毕业设计

网络数据包的捕获与分析 【摘要】网络数据包的捕获对于网络安全有着巨大的作用,为我们更好的分析网络中的数据流提供了帮助。本论文是基于Windows下开发一个网络监听工具,侧重点在于实现网络数据包的捕获,然后分析并显示捕获到的数据包信息这部分功能的实现,如分析:IP首部协议类型、源IP、目的IP和端口号等。采用的是Winpcap(Windows Packet Capture)来实现的抓包功能。通过VC++6.0中MFC编程实现通过一个完整界面来控制调用Winpcap中的函数来实现对网卡信息的捕获和循环捕获数据包,然后通过预先对于IP、TCP、UDP等数据包的定义和TCP/IP等协议来解析其中包含的内容并返回显示捕获到数据包的信息,当然也可以保存捕获到的数据包到指定地点以便进一步分析。 【关键词】Winpcap;数据包;捕获;分析

The Capture and Analysis of Network Data Packets Wang Hang (Grade 11,Class 1, Major Network Engineering, Scho ol of Mathematics and Computer Science Dept, Shaanxi University of Technology, Hanzhong 723003, Shaanxi) Tutor: Jia Wei Abstract: The capture of network data packets plays an important part in network security, which is helpful for our better analysis of network data flow.This paper is about a network monitoring tool based on Windows system, which emphasizes particularly on realizing the capture and analysis of network data packets and then displays them. Take analysis as an example, it will check the type of the IP protocol, the source address of IP, the destination address of IP and the port https://www.doczj.com/doc/d12941845.html,e the Winpcap(Windows Packet Capture)to capture of data packets. In MFC programming of VC++6.0, the capture of network data packets can be realized via the invoking and control of the functions through a full control panel, and then the analysis of IP ,TCP,UDP and TCP/IP will be done before they are displayed. Certainly the information captured can be saved to the appointed destination in order to go through an advanced analysis. Key words:Winpcap;Data Packets;Capture;Analysis

网络性能测试与分析复习资料

题型: 一. 名词解释(5个,每个4分,共20分 吞吐量:是指在没有丢包的情况下,路由设备能够转发的最大速率。对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、 分组等测量。 延迟:是指包的第一个比特进入路由器到最后一个比特离开路由器的时间间隔, 又叫时延。 丢包率:是指路由器在稳定负载状态下,由于缺乏资源而不能被网络设备转发的包占所有应该被转发的包的百分比。丢包率的衡量单位是以字节为计数单位,计算被落下的包字节数占所有应该被转发的包字节数的百分比。 背对背:是指在一段较短的时间内,以合法的最小帧间隙在传输介质上连续发送固定长度的包而不引起丢包时的包数量,IEEE 规定的以太网帧间的最小帧间隙为96 比特。 转发率:通过标定交换机每秒能够处理的数据量来定义交换机的处理能力。交换机产品线按转发速率来进行分类。若转发速率较低,则无法支持在其所有端口之间实现全线速通信。包转发速率是指交换机每秒可以转发多少百万个数据包(Mpps, 即交换机能同时转发的数据包的数量。包转发率以数据包为单位体现了交换机的交换能力。路由器的包转发率,也称端口吞吐量,是指路由器在某端口进行的数据包转发能力,单位通常使用pps(包每秒来衡量。 二. 选择题(15个,2分一个,共30分 书上一到七章课后习题选择题 三. 解答题(4个,5分一个,共20分 1、IP包头的最大长度为多少?为什么?

答:IP包的大小由MTU决定(IP数据包长度就是MTU-28(包头长度。MTU值 越大,封包就越大,理论上可增加传送速率,但MTU 值又不能设得 太大,因为封包太大,传送时出现错误的机会大增。一般默认的设置, PPPoE连接的最高MTU值是1492,而以太网(Ethernet的最高MTU 值则是1500,而在In ternet上默认的MTU大小是576字节 2、在数据传输层面,用以衡量路由器性能的主要技术指标有哪些? 答:(1 吞吐量:是指在不丢包的情况下单位时间内通过的数据包数量,也 就是指设备整机数据包转发的能力,是设备性能的重要指标。路由器吞吐量表示的是路由器每秒能处理的数据量,是路由器性能的一个直观上的反映。 (2 线速转发能力:所谓线速转发能力,就是指在达到端口最大速率的时候,路由器传输的数据没有丢包。线速转发是路由器性能的一个重要指标。简单的说就是进来多大 的流量,就出去多大的流量,不会因为设备处理能力的问题而造成吞吐量下降。 3、什么是吞吐量?简述吞吐量的测试要点。答:吞吐量时衡量交换机在不丢帧的 情况下每秒转发帧的极限能力测试要点:被 测设备的整体转发能力,即整机吞吐量 被测设备对某种单一应用的支持程度,即端口吞吐量

数据包捕获与解析

数据包捕获与解析课程设计报告 学生姓名:董耀杰 学号:1030430330 指导教师:江珊珊

数据包捕获与分析 摘要本课程设计通过Ethereal捕捉实时网络数据包,并根据网络协议分析流程对数据包在TCP/IP各层协议中进行实际解包分析,让网络研究人员对数据包的认识上升到一个感性的层面,为网络协议分析提供技术手段。最后根据Ethereal的工作原理,用Visual C++编写一个简单的数据包捕获与分析软件。 关键词协议分析;Ethereal;数据包;Visual C++ 1引言 本课程设计通过技术手段捕获数据包并加以分析,追踪数据包在TCP/IP各层的封装过程,对于网络协议的研究具有重要的意义。Ethereal是当前较为流行的图形用户接口的抓包软件,是一个可以用来监视所有在网络上被传送的包,并分析其内容的程序。它通常被用来检查网络工作情况,或是用来发现网络程序的bugs。通过ethereal对TCP、UDP、SMTP、telnet和FTP等常用协议进行分析,非常有助于网络故障修复、分析以及软件和协议开发。,它以开源、免费、操作界面友好等优点广为世界各地网络研究人员使用为网络协议分析搭建了一个良好的研究平台。 1.1课程设计的内容 (1)掌握数据包捕获和数据包分析的相关知识; (2)掌握Ethreal软件的安装、启动,并熟悉用它进行局域网数据捕获和分析的功能; (3)设计一个简单的数据包捕获与分析软件。 1.2课程设计的要求 (1)按要求编写课程设计报告书,能正确阐述设计结果。 (2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。 (3)学会文献检索的基本方法和综合运用文献的能力。 (4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。

网络性能测试与分析复习题

a网络性能测试与分析复习题 一.名词解释 吞吐量:是指在没有丢包的情况下,路由设备能够转发的最大速率。对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。 延迟:是指包的第一个比特进入路由器到最后一个比特离开路由器的时间间隔,又叫时延。 丢包率:是指路由器在稳定负载状态下,由于缺乏资源而不能被网络设备转发的包占所有应该被转发的包的百分比。丢包率的衡量单位是以字节为计数单位,计算被落下的包字节数占所有应该被转发的包字节数的百分比。 背对背:是指在一段较短的时间内,以合法的最小帧间隙在传输介质上连续发送固定长度的包而不引起丢包时的包数量,IEEE规定的以太网帧间的最小帧间隙为96比特。 转发率:通过标定交换机每秒能够处理的数据量来定义交换机的处理能力。交换机产品线按转发速率来进行分类。若转发速率较低,则无法支持在其所有端口之间实现全线速通信。包转发速率是指交换机每秒可以转发多少百万个数据包(Mpps),即交换机能同时转发的数据包的数量。包转发率以数据包为单位体现了交换机的交换能力。路由器的包转发率,也称端口吞吐量,是指路由器在某端口进行的数据包转发能力,单位通常使用pps(包每秒)来衡量。 背压(Backpressure) :当外出或输出端口出现拥塞现象时,被交换机用来通知发送端降低帧发送速度,以阻止外部数据源继续向拥塞端口传输帧的那些方法。 背对背:指的是在一段较短的时间内,以合法的最小帧间隙在传输媒介上连续发送固定长度的包不引起丢包时的包数量。 路由震荡:又叫路由波动是指由于种种原因导致到某个目的网络的路由在短期内反复撤销和重现。路由震荡通常以每秒更新路由的数量来衡量,每秒更新路由的数量越大,说明路由震荡越严重。路由震荡是路由不稳定性的主要表现,对路由器转发能力有很大的影响。 路由收敛:路由收敛是指同一个网络中所有路由器对网络拓扑的认识达到一致的过程。也被理解为路由变化通知到全网所用时间。收敛是评估路由协议的一个关键指标。路由协议的收敛速度越快,其运行性能就越好。 服务质量(QoS)定义为网络在传输数据流时要求满足的一系列服务请求,具体可量化为带宽,时延,吞吐量等性能指标 填空题: 1、一次完整的网页相应包括一个DNS请求报文,一个DNS回答报文,一个HTTP请求报文和一个HTTP响应报文。 2、标识符会被复制到对查询的回答报文中,以便让客户机用它来匹配发送的请求和接收到的回答。 3、问题区域包含着正在进行的查询信息。该区域包括:名字字段,用于指出正在被查询主机名字;类型字段,用于指出正被询问的问题类型。 4、权威区域包含了其他权威DNS服务器的记录。

Ip数据包捕获设计报告

解析IP数据包程序设计与实现 学生姓名:梁帅指导老师:谢晓巍 摘要现如今,计算机网络已经彻彻底底地改变了人们的生活。大量的数据都是经过计算机网络传输的,而TCP/IP协议是计算机网络中最重要的协议之一。计算机网络中绝大多数数据都是以IP数据包的形式发送和接受的。所以IP数据包的捕获是很多计算机安全技术的基础。本课程设计实现了可以捕获流经本地网卡的IP数据包并将其头部信息解析输出的程序。 关键词TCP/IP;IP数据包;计算机网络;捕获

Design and implementation of IP data packet Student name: LIANG Shuai Advisor:XIE Xiao-wei Abstract Nowadays, computer network has completely changed people's life. A large amount of data is transmitted through computer networks, and the TCP/IP protocol is one of the most important protocols in computer networks. Most of the data in the computer network are sent and received in the form of IP data packets. So IP packet capture is the basis of many computer security technology. This course is designed to capture the IP data packet that flows through the local network card and the program to parse the output of its head. Key words TCP/IP;IP data packet;Computer network;Capture

sniffer数据包捕获

实训报告 一、sniffer的功能认知; 1. 实时网络流量监控分析 Sniffer Portable LAN能够对局域网网络流量进行实时监控和统计分析,对每个链路上的网络流量根据用户习惯,可以提供以表格或图形(条形图、饼状图和矩阵图等)方式显示的统计分析结果,内容包括: ·网络总体流量实时监控统计:如当前和平均网络利用率、总的和当前的帧数、字节数、总网络节点数和激活的网络节点数、当前和总的平均帧长等。 ·协议使用和分布统计:如协议类型、协议数量、协议的网络利用率、协议的字节数以及每种协议中各种不同类型的帧的数量等。Sniffer包含通用的TCP和UDP网络应用协议如HTTP, Telnet, SNMP, FTP等。同时,Sniffer 也具有特有的灵活性允许增加自定义的应用。一旦应用协议加入Sniffer,针对应用的所有的监控、报警和报告便自动生效;

·包尺寸分布统计:如某一帧长的帧所占百分比,某一帧长的帧数等。 ·错误信息统计:如错误的CRC校验数、发生的碰撞数、错误帧数等; ·主机流量实时监控统计:如进出每个网络节点的总字节数和数据包数、前x个最忙的网络 节点等;

话节点对等;

·Sniffer还提供历史统计分析功能,可以使用户看到网络中一段时间内的流量运行状况,帮助用户更好的进行流量分析和监控。

2.应用响应时间监控和分析 Sniffer 在监控网络流量和性能的同时,更加关注在网络应用的运行状况和性能管理,应用响应时间(ART)功能是Sniffer中重要的组成部分,不仅提供了对应用响应时间的实时监控,也提供对于应用响应时间的长期监控和分析能力。 首先ART监控功能提供了整体的应用性能响应时间,让用户以多种方式把握当前网络通讯中的各类应用响应时间的对比情况,如客户机/服务器响应时间、服务器响应时间,最 快响应时间、最慢响应时间、平均响应时间和90%的请求的响应时间等。

IP及IPSEC协议数据包的捕获与分析分析

IP及IPSEC协议数据包的捕获与分析 为了掌握掌握IP和IPSEC协议的工作原理及数据传输格式,熟悉网络层的协议。我进行了以下实验:首先用两台PC互ping并查看其IP报文,之后在两台PC上设置IPSEC互ping并查看其报文。最终分析两者的报文了解协议及工作原理。 一、用两台PC组建对等网: 将PC1与PC2连接并分别配置10.176.5.119和10.176.5.120的地址。如图1-1所示。 图1-1 二、两PC互ping: IP数据报结构如图1-2所示。 图1-2 我所抓获的报文如图1-3,图1-4所示:

图1-3 请求包 图1-4 回应包 分析抓获的IP报文: (1)版本:IPV4 (2)首部长度:20字节 (3)服务:当前无不同服务代码,传输忽略CE位,当前网络不拥塞

(4)报文总长度:60字节 (5)标识该字段标记当前分片为第1367分片 (6)三段标志分别指明该报文无保留、可以分段,当前报文为最后一段 (7)片偏移:指当前分片在原数据报(分片前的数据报)中相对于用户数据字段 的偏移量,即在原数据报中的相对位置。 (8)生存时间:表明当前报文还能生存64 (9)上层协议:1代表ICMP (10)首部校验和:用于检验IP报文头部在传播的过程中是否出错 (11)报文发送方IP:10.176.5.120 (12)报文接收方IP:10.176.5.119 (13)之后为所携带的ICMP协议的信息:类型0指本报文为回复应答,数据部分 则指出该报文携带了32字节的数据信息,通过抓获可看到内容为:abcdefghijklmnopqrstuvwabcdefghi 三、IPSec协议配置: 1、新建一个本地安全策略。如图1-5。 图1-5 2、添加IP安全规则。如图1-6.

网络连接性能的测试实验报告

网络连接性能的测试实验报到实验目的:(1)熟悉利用ping命令工具来进行测试 (2)熟悉利用Ipconfig工具来进行测试 (3)熟悉利用网络路由跟踪Tracert进行测试 实验性质:验证性实验 实验器材:计算机(已安装Windows XP) 实验步骤: (1)利用Ping命令工具进行测试 a)检查本机的 TCP/IP 协议安装是否正确 方法:输入Ping 127.0.0.1 结果: 本机的TCP/IP 协议安装正确 b)测试本台计算机上TCP/IP的工作情况。 方法:输入Ping 192.168.1.1(本机的IP地址) 结果: 本机的TCP/IP工作正常 c)用Ping工具测试其他计算机上TCP/IP的工作情况

方法:输入Ping 219.136.19.170(其他计算机上IP地址)结果: 其他计算机上TCP/IP的工作正常 e) 用Ping工具测试和远程计算机的连接情况 方法:输入Ping https://www.doczj.com/doc/d12941845.html, 结果: 本计算机和远程计算机的连接 (2)用Ipconfig工具来进行测试 运行Ipconfig命令 方法:输入Ipconfig/all 结果:

(3)利用网络路由跟踪Tracert进行测试

a)跟踪路由 方法;输入Tracert 192.168.1.1(本计算机网关地址) 结果: b)测试本计算机到所经过的路由数 方法:输入Tracert 结果: 3G 3G(英语 3rd-generation)是第三代移动通讯技术,是指支持高速数据传输的蜂窝移动通讯技术。3G服务能够同时传送声音及数据信息,速率一般在几百kbps以上。3G是指将无线通信和国际互联网等多媒体通信结合的新一代移动通信系统,目前3G存在3种标准:CDMA2000、WCDMA、TD-SCDMA。 3G下行速度峰值理论可达3.6Mbit/s(一说2.8Mbit/s),上行速度峰值也可达384kbit/s。不可能像网上说的每秒2G,当然,下载一部电影也不可能瞬间完成。

IP及IPSEC协议数据包的捕获与分析

IP及IPSEC协议数据包的捕获与分析

IP及IPSEC协议数据包的捕获与分析 为了掌握掌握IP和IPSEC协议的工作原理及数据传输格式,熟悉网络层的协议。我进行了以下实验:首先用两台PC互ping并查看其IP报文,之后在两台PC上设置IPSEC互ping并查看其报文。最终分析两者的报文了解协议及工作原理。 一、用两台PC组建对等网: 将PC1与PC2连接并分别配置10.176.5.119和10.176.5.120的地址。如图1-1所示。 图1-1 二、两PC互ping: IP数据报结构如图1-2所示。 图1-2 我所抓获的报文如图1-3,图1-4所示:

图1-3 请求包 图1-4 回应包 分析抓获的IP报文: (1)版本:IPV4 (2)首部长度:20字节 (3)服务:当前无不同服务代码,传输忽略CE位,当前网络不拥塞

(4)报文总长度:60字节 (5)标识该字段标记当前分片为第1367分片 (6)三段标志分别指明该报文无保留、可以分段,当前报文为最后一段 (7)片偏移:指当前分片在原数据报(分片前的数据报)中相对于用户数据字段 的偏移量,即在原数据报中的相对位置。 (8)生存时间:表明当前报文还能生存64 (9)上层协议:1代表ICMP (10)首部校验和:用于检验IP报文头部在传播的过程中是否出错 (11)报文发送方IP:10.176.5.120 (12)报文接收方IP:10.176.5.119 (13)之后为所携带的ICMP协议的信息:类型0指本报文为回复应答,数据部分 则指出该报文携带了32字节的数据信息,通过抓获可看到内容为:abcdefghijklmnopqrstuvwabcdefghi 三、IPSec协议配置: 1、新建一个本地安全策略。如图1-5。 图1-5 2、添加IP安全规则。如图1-6.

实验1:网络数据包的捕获与协议分析

实验报告 ( 2014 / 2015 学年第二学期) 题目:网络数据包的捕获与协议分析 专业 学生姓名 班级学号 指导教师胡素君 指导单位计算机系统与网络教学中心 日期2015.5.10

实验一:网络数据包的捕获与协议分析 一、实验目的 1、掌握网络协议分析工具Wireshark的使用方法,并用它来分析一些协议; 2、截获数据包并对它们观察和分析,了解协议的运行机制。 二、实验原理和内容 1、tcp/ip协议族中网络层传输层应用层相关重要协议原理 2、网络协议分析工具Wireshark的工作原理和基本使用规则 三、实验环境以及设备 Pc机、双绞线、局域网 四、实验步骤 1.用Wireshark观察ARP协议以及ping命令的工作过程: (1)打开windows命令行,键入“ipconfig -all”命令获得本机的MAC地址和缺省路由器的IP地址;结果如下: (2)用“arp -d”命令清空本机的缓存;结果如下 (3)开始捕获所有属于ARP协议或ICMP协议的,并且源或目的MAC地址是本机的包。(4)执行命令:ping https://www.doczj.com/doc/d12941845.html,,观察执行后的结果并记录。

此时,Wireshark所观察到的现象是:(截图表示) 2.设计一个用Wireshark捕获HTTP实现的完整过程,并对捕获的结果进行分析和统计。(截 图加分析) 3.设计一个用Wireshark捕获ICMP实现的完整过程,并对捕获的结果进行分析和统计。要求:给出捕获某一数据包后的屏幕截图。以16进制形式显示其包的内容,并分析该ICMP 报文。(截图加分析) 4. 设计一个用Wireshark捕获IP数据包的过程,并对捕获的结果进行分析和统计(截图加分析) 要求:给出捕获某一数据包后的屏幕截图。以16进制形式显示其包的内容,并分析在该数据包中的内容:版本首部长度、服务类型、总长度、标识、片偏移、寿命、协议、源Ip地址、目的地址 五、实验总结

网络数据包捕获工具的实现

本文来自中国协议分析网技术论坛,转载请注明 sniffer tcp http ospf rtp dhcp Sniffer EtherealWinpcap 其它技术返回首页当前位置: 网站首页>>协议分析>>Winpcap>> 利用WinPcap技术捕获数据包时间:2006-11-14 来源: 作者: 点击:849次收藏到: 前言随着网络入侵的不断发展,网络安全变得越来越重要,于是网络入侵取证系统的研究也变得日益重要。在网络入侵取证系统中,对网络上传送的数据包进行有效的监听即捕获包是目前取证的关键技术,只有进行高效的数据包捕获,网络管理员才能对所捕获的数据进行一系列 前言 随着网络入侵的不断发展,网络安全变得越来越重要,于是网络入侵取证系统的研究也变得日益重要。在网络入侵取证系统中,对网络上传送的数据包进行有效的监听即捕获包是目前取证的关键技术,只有进行高效的数据包捕获,网络管理员才能对所捕获的数据进行一系列的分析,从而进行可靠的网络安全管理。 1winpcap简介 WinPcap 是由伯克利分组捕获库派生而来的分组捕获库,它是在Windows 操作平台上来实现对底层包的截取过滤。WinPcap 为用户级的数据包提供了Windows 下的一个平台。WinPcap 是BPF 模型和Libpcap 函数库在Windows 平台下网络数据包捕获和网络状态分析的一种体系结构,这个体系结构是由一个核心的包过滤驱动程序,一个底层的动态连接库Packet.dll 和一个高层的独立于系统的函数库Libpcap 组成。底层的包捕获驱动程序实际为一个协议网络驱动程序,通过对NDIS 中函数的调用为Win95、Win98、WinNT、和Win2000 提供一类似于UNIX 系统下Berkeley Packet Filter 的捕获和发送原始数据包的能力。Packet.dll 是对这个BPF 驱动程序进行访问的API 接口,同时它有一套符合Libpcap 接口(UNIX 下的捕获函数库)的函数库。WinPcap的结构图如图1。 WinPcap 包括三个部分:第一个模块NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件。它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。第二个模块packet.dll为win32平台提供了一个公共的接口。不同版本的Windows系统都有自己的内核模块和用户层模块。Packet.dll用于解决这些不同。调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译。第三个模块Wpcap.dll是不依赖于操作系统的。它提供了更加高层、抽象的函数。 packet.dll和Wpcap.dll:packet.dll直接映射了内核的调用。Wpcap.dll提供了更加友好、功能更加强大的函数调用。WinPcap的优势提供了一套标准的抓包接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来便于开发各种网络分析工具,充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。 2网络数据包捕获的原理 以太网(Ethernet)具有共享介质的特征,信息是以明文的形式在网络上传输,当网络适配器设置为监听模式(混杂模式,Promiscuous)时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。IEEE802.3 标准的以太网采用的是持续CSMA 的方式,正是由于以太网采用

计算机网络实验八 Sniffer Pro数据包捕获与协议分析汇编

惠州学院《计算机网络》实验报告 实验08 Sniffer Pro数据包捕获与协议分析 1. 实验目的 (1)了解Sniffer的工作原理。 (2)掌握SnifferPro工具软件的基本使用方法。 (3)掌握在非交换以太网环境下侦测、记录、分析数据包的方法。 2. 实验原理 数据在网络上是以很小的被称为“帧”或“包”的协议数据单元(PDU)方式传输的。以数据链路层的“帧”为例,“帧”由多个部分组成,不同的部分对应不同的信息以实现相应的功能,例如,以太网帧的前12个字节存放的是源MAC地址和目的MAC地址,这些数据告诉网络该帧的来源和去处,其余部分存放实际用户数据、高层协议的报头如TCP/IP 的报头或IPX报头等等。帧的类型与格式根据通信双方的数据链路层所使用的协议来确定,由网络驱动程序按照一定规则生成,然后通过网络接口卡发送到网络中,通过网络传送到它们的目的主机。目的主机按照同样的通信协议执行相应的接收过程。接收端机器的网络接口卡一旦捕获到这些帧,会告诉操作系统有新的帧到达,然后对其进行校验及存储等处理。 在正常情况下,网络接口卡读入一帧并进行检查,如果帧中携带的目的MAC地址和自己的物理地址一致或者是广播地址,网络接口卡通过产生一个硬件中断引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理,否则就将这个帧丢弃。 如果网络中某个网络接口卡被设置成“混杂”状态,网络中的数据帧无论是广播数据帧还是发向某一指定地址的数据帧,该网络接口卡将接收所有在网络中传输的帧,这就形成了监听。如果某一台主机被设置成这种监听(Snfffing)模式,它就成了一个Sniffer。 一般来说,以太网和无线网被监听的可能性比较高,因为它们是一个广播型的网络,当然无线网弥散在空中的无线电信号能更轻易地截获。 3. 实验环境与器材 本实验在虚拟机中安装SnifferPro4.7版本,要求虚拟机开启FTP、HTTP等服务,即虚拟机充当服务器,物理机充当工作站。 物理机通过Ping命令、FTP访问及网页访问等操作实验网络数据帧的传递。 4. 实验内容 介绍最基本的网络数据帧的捕获和解码,详细功能请参阅本教材辅助材料。 (1)Sniffer Pro 4.7的安装与启动 1)启动Sniffer Pro 4.7。在获取Sniffer Pro 4.7软件的安装包后,运行安装程序,按要求输入相关信息并输入注册码,若有汉化包请在重启计算机前进行汉化。完成后重启计算机,点击“开始”→“程序”→“Sniffer Pro”→“Sniffer”,启动“Sniffer Pro 4.7”程序。 2)选择用于Sniffer的网络接口。如果计算机有多个网络接口设备,则可通过菜单“File”→“Select Settings”,选择其中的一个来进行监测。若只有一块网卡,则不必进行此步骤。

IP 数据报捕获与分析实验报告

实验报告 专业班级成绩评定______ 学号姓名教师签名______ 实验题目IP 数据报捕获与分析实验时间 一、实验目的: 1.掌握IP数据报格式。 2.理解IP协议的工作原理及工作过程。 3.掌握使用wireshark捕获IP等数据报并分析。 二、实验环境:以太网。 三、实验内容: 1.熟悉WinPcap的体系构架和提供的函数。 2.学习IP数据报校验和计算方法。 3.掌握使用wireshark捕获IP等数据报。 4.对捕获的IP数据报进行分析。 四、实验步骤: 1.在PING之前先运行wireshark熟悉页面并进行一些设置

a.单击Capture Filter过滤器:可以设置捕捉一些特殊规则 的数据报。 b.在选中Capture packets in promiscuous mode:可以设置 为混合全处理模式。 c.可以点击Start开始捕捉。过一段时间后,点击Stop停止, 观察捕捉到的数据报,并进行分析。 2.使用wireshark捕获和分析IP数据包。 a.打开wireshar并开始捕获数据包。 b.然后在系统的“开始”—“运行”—输入“CMD”命令,进 入DOS命令窗口,并输入“ping”命令测试网络的情况. c.如“ping 192.168.0.1”。 Ping 命令的使用

d.再回到wireshar点击停止后查看捕获到的数据,双击打开 “ping”后的数据包,分析数据包的内容。 分片的数据包 (以下图片全部通过wireshark捕获数据包,然后用QQ中的截图功能截取) IP协议节点

IP协议节点 上面节点说明如下: 3.进制数据包窗口 16进制数据包窗口将数据包的所有内容以16进制的形式显示出来,如下所示:

ip数据包的捕获与解析代码

// PackCaptureDlg.h:header file #define IPV4_WERSION 4 #define IPV6_WERSION 6 #define ICMP_PACKET 1 #define IGMP_PACKET 2 #define TCP_PACKET 6 #define EGP_PACKET 8 #define UDP_packet 17 #define OSPF_PACKET 89 class CPackCaptureDlg:public CDialog { public: //{{AFX_DATA(CFindHostDlg) enum {IDO=IDO_PACKCAPTURE_DIALOG}; int m_Count; CString m_Packet; //}}AFX_DATA protected: //{{AFX_MSG(CFindHostDlg) afx_msg void OnCapture(); //}}AFX_MSG private: typedef struct IP_HEAD //IP头部结构 { union { unsigned char Version; //版本(字节前四位) unsigned char HeadLen; //头部长度(字节后四位) }; unsigned char ServiceType; //服务类型 unsigned short TotalLen; //总长度 unsigned short Identifier; //标识符 union { unsigned short Flags; //标志位(字前三位) unsigned short FragOffset;

实验三 网络数据包的捕获与分析

实验三 网络数据包的捕获与分析 一、实验目的和要求 通过本次实验,了解sniffer 的基本作用,并能通过sniffer 对指定的网络行为所产生的数据包进行抓取,并分析所抓取的数据包。 二、实验内容 A :1、首先打开sniffer 软件,对所要监听的网卡进行选择 2、选择网卡按确定后,进入sniffer 工作主界面,对主界面上的操作按钮加以熟悉。 B :设置捕获条件进行抓包 基本的捕获条件有两种: 1、链路层捕获,按源MAC 和目的MAC 地址进行捕获,输入方式为十六进制连续输入,如:00E0FC123456。 2、IP 层捕获,按源IP 和目的IP 进行捕获。输入方式为点间隔方式,如:10.107.1.1。如果选择IP 层捕获条件则ARP 等报文将被过滤掉。 任意捕协议捕缓冲区基本捕获条件数据流链路层捕获获条件编辑 获编辑 编辑 链路层捕获IP 层捕获 方向 地址条件 高级捕获条件

在“Advance ”页面下,你可以编辑你的协议捕获条件,如图: 选择要捕捕获帧长错误帧是保存过滤获的协议 度条件 否捕获 规则条件 高级捕获条件编辑图 在协议选择树中你可以选择你需要捕获的协议条件,如果什么都不选,则表示忽略该条件,捕获所有协议。 在捕获帧长度条件下,你可以捕获,等于、小于、大于某个值的报文。 在错误帧是否捕获栏,你可以选择当网络上有如下错误时是否捕获。 在保存过滤规则条件按钮“Profiles ”,你可以将你当前设置的过滤规则,进行保存,在捕获主面板中,你可以选择你保存的捕获条件。 C :捕获报文的察看: Sniffer 软件提供了强大的分析能力和解码功能。如下图所示,对于捕获的报文提供了一个Expert 专家分析系统进行分析,还有解码选项及图形和表格的统计信息。 专家分析专家分析捕获报文的捕获报文的其他 系统 系统图形分析 统计信息 专家分析 专家分分析系统提供了一个只能的分析平台,对网络上的流量进行了一些分析对于分析出的

网络性能测试与分析 林川 复习整理

网络性能测试与分析(林川)复习整理对一台具有三层功能的防火墙进行测试,可以参考哪些和测试相关的RFC文档 RFC3511、RFC3222、RFC2889、RFC2544 包头的最大长度为多少为什么IP 字节4060答:字节,固定部分20字节,可变部分 在数据传输层面,用以衡量路由器性能的主要技术指标有哪些 )背(65)丢包率;(4)背对背;()时延抖动;)延迟;1 答:()吞吐量;(2(3)系统恢复。8)系统恢复;板能力;(7( 什么是吞吐量简述吞吐量测试的要点 路由设备说明书和性能测试文答:吞吐量是描述路由器性能优劣的最基本参数,档中都包含该参数。是指在没有丢包的情况下,路由设备能够转发的最大速率。要规定延迟测试发包速率要小于吞吐量什么是延迟为什么RFC2544点:零丢包率。 延迟是指包的第一个比特进入路由器到最后一个比特离开路由器的时间间隔,答: 又叫时延。 丢包率测试的目的是什么简述丢包率与吞吐量之间的关系 在不同的负载和帧长度条件下的丢包率。DUT 答:丢包率测试的目的是确定 什么是背对背什么情况下需要进行背对背测试 答:背对背指的是在一段较短的时间内,以合法的最小帧间隙在传输

介质上连续发送固定长度的包而不引起丢包时的包数量,IEEE规定的以太网帧间的最小帧间隙为96比特。该指标用于测试路由器缓存能力。 大量的路由更新消息、频繁的文件传送和数据备份等操作都会导 致数据在一段时间内急剧增加,甚至达到该物理介质的理论速率。为了描述此时路由器的表现,就要进行背对背突发的测试。 吞吐量:是指在没有丢包的情况下,路由设备能够转发的最大速率。对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。 延迟:是指包的第一个比特进入路由器到最后一个比特离开路由器的时间间隔,又叫时延。 丢包率:是指路由器在稳定负载状态下,由于缺乏资源而不能被网络设备转发的包占所有应该被转发的包的百分比。丢包率的衡量单位是以字节为计数单位,计算被落下的包字节数占所有应该被转发的包字节数的百分比。背对背:是指在一段较短的时间内,以合法的最小帧间隙在传输介质上连续发送固定长度的包而不引起丢包时的包数量,IEEE规定的以太网帧间的最小帧间隙为96比特。 转发率:通过标定交换机每秒能够处理的数据量来定义交换机的处理能力。交换机产品线按转发速率来进行分类。若转发速率较低,则无法支持在其所有端口之间实,即)Mpps现全线速通信。包转发速率是指交换机每秒可以转发多少百万个数据包(. 交换机能同时转发的数据包的数量。包转发率以数据包为单位体现了交换机的交换能力。路由器的包转发率,也称端口吞吐量,是指路由器在某

相关主题
文本预览
相关文档 最新文档