四川师范大学计算机网络实验2

实验2 IP和ICMP协议分析
一、实验目的
1、分析IP协议
2、分析IP数据报分片
二、实验环境
与因特网连接的计算机,操作系统为Windows,安装有Wireshark、IE等软件。
三、实验步骤
(一)、IP数据报分析
IP协议是因特网上的中枢。它定义了独立的网络之间以什么样的方式协同工作从而形成一个全球户联网。因特网内的每台主机都有IP地址。数据被称作数据报的分组形式从一台主机发送到另一台。每个数据报标有源IP地址和目的IP地址,然后被发送到网络中。如果源主机和目的主机不在同一个网络中,那么一个被称为路由器的中间机器将接收被传送的数据报,并且将其发送到距离目的端最近的下一个路由器。这个过程就是分组交换。
IP允许数据报从源端途经不同的网络到达目的端。每个网络有它自己的规则和协定。IP能够使数据报适应于其途径的每个网络。例如,每个网络规定的最大传输单元各有不同。IP允许将数据报分片并在目的端重组来满足不同网络的规定。

在这里插入图片描述
在这里插入图片描述

图3.1 DHCP报文
1、使用DHCP获取IP地址
(1)打开命令窗口,启动Wireshark。
(2)输入“ipconfig /release”。这条命令会释放主机目前的IP地址,此时,主机IP地址会变为0.0.0.0
(3)然后输入“ipconfig /renew”命令。这条命令让主机获得一个网络配置,包括新的IP地址。
(4)等待,直到“ipconfig /renew”终止。然后再次输入“ipconfig /renew” 命令。
(5)当第二个命令“ipconfig /renew” 终止时,输入命令“ipconfig /release” 释放原来的已经分配的IP地址
(6)停止分组俘获。如图3.2所示:
在这里插入图片描述

                     图3.2 Wireshark俘获的分组

下面,我们对此分组进行分析:
IPconfig 命令被用于显示机器的IP地址及修改IP地址的配置。当输入命ipconfig /release命令时,用来释放机器的当前IP地址。释放之后,该机没有有效的IP地址并在分组2中使用地址0.0.0.0作为源地址。
分组2是一个DHCP Discover(发现)报文,如图3.2所示。当一台没有IP地址的计算机申请IP地址时将发送该报文。DHCP Discovery报文被发送给特殊的广播地址:255.255.255.255,该地址将到达某个限定广播范围内所有在线的主机。理论上,255.255.255.255能够广播到整个因特网上,但实际上并不能实现,因为路由器为了阻止大量的请求淹没因特网,不会将这样的广播发送到本地网之外。
在DHCP Discover报文中,客户端包括自身的信息。特别是,它提供了自己的主机名和其以太网接口的物理地址。这些信息都被DHCP用来标识一个已知的客户端。DHCP服务器可以使用这些信息实现一系列的策略,比如,分配与上次相同的IP地址,分配一个上次不同的IP地址,或要求客户端注册其物理层地址来获取IP地址。
在DHCP Discover报文中,客户端还详细列出了它希望从DHCP服务器接收到的信息。在Parameter Request List中包含了除客户端希望得到的本地网络的IP地址之外的其他数据项。这些数据项中许多都是一台即将连入因特网的计算机所需要的数据。例如,客户端必须知道的本地路由器的标识。任何目的地址不在本地网的数据报都将发送到这台路由器上。也就是说,这是发向外网的数据报在通向目的端的路径上遇到的第一台中间路由器。
在这里插入图片描述

                 图3.3 DHCP Discovery

客户端必须知道自己的子网掩码。子网掩码是一个32位的数,用来与IP地址进行“按位逻辑与运算”从而得出网络地址。所有可以直接通信而不需要路由器参与的机器都有相同的网络地址。因此,子网掩码用来决定数据报是发送到本地路由器还是直接发送到本地目的主机。

在这里插入图片描述

                    图3.4 Parameter Request List

客户端还必须知道它们的域名和它们在本地域名服务器上的标识。域名是一个可读的网络名。
IP地址为192.168.1.1的DHCP服务器回复了一个DHCP OFFER报文。该报文也广播到255.255.255.255,因为尽管客户端还不知道自己的IP地址,但它将接收到发送到广播地址的报文。这个报文中包含了客户端请求的信息,包括IP地址、本地路由器、子网掩码、域名和本地域名服务器。
在分组5中,客户端通过发送DHCP Request(请求)报文表明自己接收到的IP地址。最后,在分组6中DHCP服务器确认请求的地址并结束对话。此后,客户端开始使用它的新的IP地址作为源地址。
在分组3和分组7的地址ARP协议引起了我们的注意。在分组3中,DHCP服务器询问是否有其它主机使用IP地址192.168.1.100(该请求被发送到广播地址)。这就允许DHCP服务器在分配IP之前再次确认没有其它主机使用该IP地址。在获取其IP地址之后,客户端会发送3个报文询问其他主机是否有与自己相同的IP地址。前4个ARP请求都没有回应。DHCP服务器再次询问哪个主机拥有IP地址192.168.1.100,客户端两次回答它占有该IP同时提供了自己的以太网地址。
通过DHCP分配的IP地址有特定的租用时间。为了保持对某个IP的租用,客户端必须更新租用期。当输入第二个命令ipconfig /renew后,在分组中就会看到更新租用期的过程。DHCP Request请求更新租用期。DHCP ACK包括租用期的长度。如果在租用期到期之前没有DHCP Request发送,DHCP服务器有权将该IP地址重新分配给其他主机。
最后,在输入命令ipconfig /release后的结果。在DHCP服务器接收到这个报文后,客户停止对该IP的使用。如有需要DHCP服务器有权重新对IP地址进行分配。

2、分析IPv4中的分片
利用pingplotter软件模仿Traceroute功能,通过设置报文大小,来控制IP分片。
PingPlotter是通过ICMP协议发送不同TLL值的ping包,来计算和获取访问网站的所经过路由。TTL是存活时间,每经过一次路由器,TLL-1,当其减为0的时候,路由会丢带这个包并且发出TLL超时给原始的发出者,防止死包耗尽网络资源。然后每次PingPlotter都会发送起始从TLL=1的数据包,然后逐渐增大TTL,用来获取所访问网站经过的路由。但是有些路由会因为安全不回应这些包,所以还会看到有些请求没有回复,而TLL会持续增加获取下一条路由的回复。
在第二个实验中,我们将考察IP数据报首部。俘获此分组的步骤如下:
(1) 启动Wireshark,开始分组俘获(“Capture”-----“interface…”----“start”)。
(2) 启动pingplotter(pingplotter 的下载地址为www.pingplotter.com)
(3) 输入跟踪地址:在“Address to trace:”下面的输入框里输入目的地址
在这里插入图片描述

(4) 选择菜单栏“Edit”—“Options”—“Packet”,在“Packet size(默认56 bytes):”

在这里插入图片描述

右边输入报文大小:5000(UDP数据部分大小),按下“OK”。最后按下按钮“Trace”,你将会看到pingplotter窗口显示如下内容,如下图所示:
在这里插入图片描述

                          图3 ping plotter

(5) 停止Wireshark。设置过滤方式为:IP,在Wireshark窗口中将会看到如下情形,如图4所示。
(6) 在您的跟踪数据包中,您应该能够看到**计算器发送的一系列的 ICMP Echo 请求讯息(在 Windows 下)**或 UDP 区段(在 Unix 下)以及由中间路由器发送到计算器的 ICMP TTL 超出的讯息。在下面的问题中,我们假设您使用的是 Windows 机器;对于 Unix 机器的相应问题是类似的。
在这里插入图片描述

                  图4 用Wireshark 所俘获的分组

下面,我们来分析具体分组:(Windows平台)
当报文长度设置为5000时,意味着产生一个数据部分长度为5000字节的ICMP协议的Echo Req报文,其中ICMP报头长度为8字节,于是整个ICMP报文长度为5008字节
当IP层接收到5008字节的ICMP数据报时,它的工作是将其作为IP数据报在以太网传输。以太网要求一次传输的长度不大于1514个字节,其中有14字节是以太网帧首部。也就是数据部分最大长度为1500。
IP报文将作为多个分片发送。每个分片必须包含以IP首部,每个分片还会包含ICMP数据报的有效负载(首部和数据)的一部分。
IP将原始ICMP数据报(长度5008字节)的前1480个字节(含1472个字节的数据和含8个字节的ICMP首部)放在第一个分片中。后面两个分片每个均含1480个字节的数据,最后一个分片中包含的数据为568个字节)。
为了让接收段重组原始数据,IP使用首部的特殊字段对分片进行了编号。标识字段用于将所有的分片连接在一起。分组103-105含有相同的标识号0xfd2b,分组108-110的标识号是0xfd2c.片漂移量指明了分组中数据的第一个字节在ICMP数据报中的偏移量。例如分组103和分组108的偏移量都是0,因为它们都是第一个分片。
最后在标识字段中有一位用来指明这个分片后是否还有分片。分组103到分组104和分组108到分组109均对该位置进行了置位。分组105和分组110由于是最后一个分片而没有对该位置位。

(二)、ICMP数据报分析
Ping和traceroute命令都依赖于ICMP。ICMP可以看作是IP协议的伴随协议。ICMP报文被封装在IP 数据报发送。
一些ICMP报文会请求信息。例如:在ping中,一个ICMP回应请求报文被发送给远程主机。如果对方主机存在,期望它们返回一个ICMP回应应答报文。
一些ICMP报文在网络层发生错误时发送。例如,有一种ICMP报文类型表示目的不可达。造成不可达的原因很多,ICMP报文试图确定这一问题。例如,可能是主机关及或整个网络连接断开。
有时候,主机本身可能没有问题,但不能发送数据报。例如IP首部有个协议字段,它指明了什么协议应该处理IP数据报中的数据部分。IANA公布了代表协议的数字的列表。例如,如果该字段是6,代表TCP报文段,IP层就会把数据传给TCP层进行处理;如果该字段是1,则代表ICMP报文,IP层会将该数据传给ICMP处理。如果操作系统不支持到达数据报中协议字段的协议号,它将返回一个指明“协议不可达”的ICMP报文。IANA同样公布了ICMP报文类型的清单。
Traceroute是基于ICMP的灵活用法和IP首部的生存时间字段的。发送数据报时生存时间字段被初始化为能够穿越网络的最大跳数。每经过一个中间节点,该数字减1。当该字段为0时,保存该数据报的机器将不再转发它。相反,它将向源IP地址发送一个ICMP生存时间超时报文。
生存时间字段用于避免数据报载网络上无休止地传输下去。数据报的发送路径是由中间路由器决定的。通过与其他路由器交换信息,路由器决定数据报的下一条路经。最好的“下一跳”经常由于网络环境的变化而动态改变。这可能导致路由器形成选路循环也会导致正确路径冲突。在路由循环中这种情况很可能发生。例如,路由器A认为数据报应该发送到路由器B,而路由器B又认为该数据报应该发送会路由器A,这是数据报便处于选路循环中。
生存时间字段长为8位,所以因特网路径的最大长度为28 -1即255跳。大多数源主机将该值初始化为更小的值(如128或64)。将生存时间字段设置过小可能会使数据报不能到达远程目的主机,而设置过大又可能导致处于无限循环的选路中。
Traceroute利用生存时间字段来映射因特网路径上的中间节点。为了让中间节点发送ICMP生存时间超时报文,从而暴露节点本身信息,可故意将生存时间字段设置为一个很小的书。具体来说,首先发送一个生存时间字段为1的数据报,收到ICMP超时报文,然后通过发送生存时间字段设置为2的数据报来重复上述过程,直到发送ICMP生存时间超时报文的机器是目的主机自身为止。
因为在分组交换网络中每个数据报时独立的,所以由traceroute发送的每个数据报的传送路径实际上互不相同。认识到这一点很重要。每个数据报沿着一条路经对中间节点进行取样,因此traceroute可能暗示一条主机间并不存在的连接。因特网路径经常变动。在不同的日子或一天的不同时间对同一个目的主机执行几次traceroute命令来探寻这种变动都会得到不同的结果。
为了体现Internet路由的有限可见性,许多网络都维护了一个traceroute服务器traceroute。Traceroute服务器将显示出从本地网到一个特定目的地执行traceroute的结果。分布于全球的traceroute服务器的相关信息可在http://www.traceroute.org上获得。
1、ping 和 ICMP
利用Ping程序产生ICMP分组。Ping向因特网中的某个特定主机发送特殊的探测报文并等待表明主机在线的回复。具体做法:
(1)打开Windows命令提示符窗口(Windows Command Prompt)。
(2)启动Wireshark分组嗅探器,在过滤显示窗口(filter display window)中输入icmp,开始Wireshark分组俘获。
(3)输入“ping –n 10 hostname” 。其中“-n 10”指明应返回10条ping信息。
(4)当ping程序终止时,停止Wireshark分组俘获。
实验结束后会出现如图所示的命令窗口:
在这里插入图片描述

停止捕获后,在wireshark中观察这个ICMP分组,可以看出,此分组的TYPE为8,code为0,即ICMP的“echo request”分组。其后可以看见对应的“echo reply”分组。
四、实验报告内容
回答以下问题:
1、选择你的电脑所发送的第一个ICMP 请求消息,在包详细信息窗口扩展包的Internet协议部分。你的电脑的IP 地址是多少?
答:52.109.12.18
在这里插入图片描述

2、在IP 包头部,上层协议区域的值是多少?
答:0x395d

在这里插入图片描述

3、IP 头部有多少字节?IP 数据包的有效载荷是多少字节?解释你是怎样确定有效载荷的数量的?
答:头部有20字节
有效载荷1500-20=1480字节
在这里插入图片描述

4、这个IP 数据包被分割了吗?解释你是怎样确定这个数据包是否被分割?
答:没有
在这里插入图片描述

5、接下来单击列名按IP 源地址排序数据包,选择你的电脑发送的第一个ICMP 请求消息,扩展显示IP 协议的数据。
在这里插入图片描述

6、往同一IP 的数据包哪些字段在改变,而且必须改变?为什么?哪些字段是保持不变的,而且必须保持不变?
答:必须改变的:identification(标识)、header chechsum(头部检验和)
标识是源主机富裕IP数据报的标识符、头部检验和用于保证IP数据报报头的完整性。
必须保持不变的:version(版本)、header length(头部长度)、differentiated services field(区分服务)、flags(标记)、 fragment offset(片偏移)、 protocol(协议)、 destination(目的地址)
7、查看ping的request分组,ICMP的type 和code是多少?这个ICMP 包包含了哪些其他的字段?Checksum、sequence number 和identifier 字段的值各为多少?查看相应得ICMP的reply信息,ICMP的type 和code又是多少?这个ICMP 包包含了哪些其他的字段?Checksum、sequence number和identifier 字段的值各为多少?
Request信息:
ICMP的type:8
ICMP的code:0
在这里插入图片描述

Checksum:0x4d46
sequence number:21(0x0015) 5376 (0x1500)
identifier:256(0x0015)

Reply信息
在这里插入图片描述

ICMP的type:0
ICMP的code:0
Checksum:0x5546
sequence number: 21(0x0015) 5376 (0x1500)
identifier:1(0x0001) 256(0x0100)

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值