当前位置:文档之家› 实验二用协议分析器分析IP包格式1

实验二用协议分析器分析IP包格式1

计算机科学与科学

实验报告

课程名称:计算机网络

实验名称:用协议分析器分析IP包格式班级:计算机11-2

学号:40

姓名:朱报龙

2013年 1 月3日

实验二用协议分析器分析IP包格式

一实验目的

1.熟悉网络协议分析的原理。

2.熟悉网络协议分析软件Ethereal的使用。

3.掌握IP包的构成。

4.分析IP包的分片重组机制。

二实验内容

1.继续学习使用网络协议分析软件Ethereal。

2.捕捉任何主机发出的IP包并进行结构分析。

3.捕捉具有分组情况的IP包,并分析IP包的分片重组机制。

三实验原理

1.网络协议分析原理

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

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

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

2. IP包格式分析

IP包结构如图3-1所示。

图3-1 IP数据报格式及首部中的各字段

分析图3-1中的首部。最高位在左边,记为0bit;最低位在右边,记为31bit。

4个字节的32bit值以下面的次序传输:首先是0~7bit,其次8~15bit,然后16~23bit,最后是24~31bit。这种传输次序称作bigendian字节序。由于TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称作网络字节序。以其他形式存储二进制整数的机器,如littleendian格式,则必须在传输数据之前把首部转换成网络字节序。

目前的协议版本号是4,因此IP有时也称作IPv4。

首部长度指的是首部占32bit字的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为60个字节。普通IP数据报(没有任何选择项)字段的值是5。

服务类型(TOS)字段包括一个3bit的优先权子字段(现在已被忽略),4bit的TOS子字段和1bit未用位但必须置0。4bit 的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4bit中只能置其中1bit。如果所有4bit均为0,那么就意味着是一般服务。

总长度字段是指整个I P数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道I P数据报中数据内容的起始位置和长度。由于该字段长1 6比特,所以I P数据报最长可达65535字节。当数据报被分片时,该字段的值也随着变化。

总长度字段是I P首部中必要的内容,因为一些数据链路(如

以太网)需要填充一些数据以达到最小长度。尽管以太网的最小帧长为4 6字节,但是I P数据可能会更短。如果没有总长度字段,那么I P层就不知道4 6字节中有多少是I P数据报的内容。

标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1。RFC791 [Postel 1981a]认为标识字段应该由让IP发送数据报的上层来选择。假设有两个连续的IP数据报,其中一个是由TCP生成的,而另一个是由UDP生成的,那么它们可能具有相同的标识字段。尽管这也可以照常工作(由重组算法来处理),但是在大多数从伯克利派生出来的系统中,每发送一个IP数据报,IP层都要把一个内核变量的值加1,不管交给IP的数据来自哪一层。内核变量的初始值根据系统引导时的时间来设置。

TTL(time-to-live)生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设置,一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。

首部检验和字段是根据IP首部计算的检验和码。它不对首部后面的数据进行计算。ICMP、IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。

为了计算一份数据报的IP检验和,首先把检验和字段置为0。然后,对首部中每个16 bit 进行二进制反码求和(整个首部看成是由一串16 bit的字组成),结果存在检验和字段中。当收到一份IP数据报后,同样对首部中每个16 bit 进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。如果结果不是全1(即检验和错误),那么IP就丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传。

协议域指的是使用此IP数据报的高层协议类型。

每一份IP数据报都包含源I P地址和目的I P地址。它们都是32 bit 的值。

最后一个字段是任选项,是数据报中的一个可变长的可选信息。目前,这些任选项定义如下:

安全和处理限制(用于军事领域)

记录路径(让每个路由器都记下它的I P地址,)

时间戳(让每个路由器都记下它的I P地址和时间,)

宽松的源站选路(为数据报指定一系列必须经过的I P地址,)严格的源站选路(与宽松的源站选路类似,但是要求只能经

过指定的这些地址,不能经过其他的地址)。这些选项很少被使用,并非所有的主机和路由器都支持这些选项。选项字段一直都是以32 bit作为界限,在必要的时候插入值为0的填充字节。这样就保证I P首部始终是32 bit 的整数倍(这是首部长度字段所要求的)。

链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,你可以用 netstat -i 命令查看这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象。

IP首部包含了分片和重组所需的信息:

16位的标识(Identification):发送端发送的IP数据包标识字段都是一个唯一值,该值在分片时被复制到每个片中。

3位的标志字段分别是:

R:保留未用。

DF:Don't Fragment,“不分片”位,如果将这一比特置1 ,IP层将不对数据报进行分片。

MF:More Fragment,“更多的片”,除了最后一片外,其他每个组成数据报的片都要把该比特置1。

Fragment Offset:该片偏移原始数据包开始处的位置。偏移的字节数是该值乘以8。

另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。

四实验步骤

1.学习使用Ethereal软件。

2.捕捉任何主机发出的IP包并进行分析。捕捉时Ethereal的过滤器可为空,也可设置Ethereal的capture filter 的filter string设置为:ether[12:2] <= 1500,或其它。

①分析捕获到IP包的格式,按照对应字段找出其对应值记录下来,并体会各部分的作用。

捕获的数据包如下

相关主题