实验三 网络层ARP、ICMP协议分析

网络层常用协议分析

目录

一、【实验目的】

二、【实验环境】

三、【实验内容】

四、【实验原理】

五、【实验步骤】

六、【思考问题】


一、【实验目的】

1. 能够基于路由器、以太网交换机的工作原理和网络层常用协议的作用、工作过程等设计实验方案并开展实验;

2.能够通过实验验证ARP协议的工作过程,明确ARP报文类型与以太网帧中MAC地址之间的关系,解释ARP报文中主要字段的作用;

3.能够通过实验分析IP数据报在传输过程中关键字段的变化过程及原因,解释IP分片的过程和特殊IP的作用;

4.能够通过分析ICMP报文对常见网络通信故障等进行解释和排查。

二、【实验环境】

1.实验设备

安装有Packet Tracer6的计算机一台。

2.实验拓扑

d0523b9a0c444599a230435147c22c0f.png

3. IP地址配置

设备

IP地址

子网掩码

网关

PC1

200.1.1.1

255.255.255.0

200.1.1.254

PC2

200.1.1.2

255.255.255.0

200.1.1.254

PC3

200.1.1.3

255.255.255.0

200.1.1.254

PC4

200.1.2.2

255.255.255.0

200.1.2.254

Route0  F0/0

200.1.1.254

255.255.255.0

Route0  F0/1

200.1.3.1

255.255.255.0

Route1  F0/0

200.1.3.2

255.255.255.0

Route1  F0/1

200.1.2.254

255.255.255.0

三、【实验内容】

1.同一子网、不同子网间跨路由两种场景下ARP报文格式和ARP协议工作过程验证和分析;

2.捕获一个正常的IP数据报,分析IP数据报的格式和转发流程;

3.分别以直接广播地址、受限广播地址、环回地址三类特殊的IP地址为目标地址,编辑一个IP数据报并发送,然后捕获该IP数据报,分析IP数据报的转发流程;

4.编辑一个IP数据报,设定条件使该数据报在经过路由器转发过程中自动分片,发送并捕获该IP数据报,分析IP数据报的转发流程和分片结果;

5.在不同IP子网间发送和捕获IP数据报,分析子网掩码的作用;

6.运行ping命令,捕获ICMP报文,并分析ICMP报文格式;

7.编辑目的端不可达、超时两种ICMP差错报文,捕获和分析该ICMP报文;

8.通过互联网,查阅IPv6相关信息,尝试对IPv6数据包的格式进行分析;

9.通过互联网,查阅常见差错报文类型并进行仿真和故障排除。

四、【实验原理】

一、ARP协议简介

ARP协议(地址解析协议)是“Address Resolution Protocol”的缩写。所谓“地址解析”就是主机在发送帧前将目的逻辑地址转换成目的物理地址的过程。在使用TCP/IP协议的以太网中,ARP协议完成将IP地址映射到MAC地址的过程。

1ARP报文格式

下图为ARP数据报的报文格式:

edbb626df1af42c1b6624a67f7c1bf3e.png

图1  ARP报文格式

ARP报文格式具有如下的一些字段:

●  硬件类型:这是16位字段,用来定义运行ARP的网络的类型。每一个局域网基于其类型被指派给一个整数。例如,以太网的硬件类型是1。ARP可用在任何网络上。

●  协议类型:这是16位字段。用来定义协议的类型。例如,对IPv4协议,这个字段的值是0x0800。ARP可用于任何高层协议。

●  硬件地址长度:这是一个8位字段,用来定义以字节为单位的物理地址长度。例如,以太网物理地址为6字节,所对应的硬件地址长度值为6。

●  协议地址长度:标识用于该数据包的逻辑地址的长度,用十进制标识,单位为一个字节,例如,IPv4为4个字节,所对应的协议地址长度值为4。

●  操作码:这是16位字段,用来定义数据包的类型。已定义了两种类型:为1时表示ARP请求,为2时表示ARP应答。

●  发送端硬件地址:这是可变长度字段,用来定义发送端的物理地址。对于以太网这个字段是6字节长。

●  发送端逻辑地址:这是可变长度字段,用来定义发送端的逻辑地址。对于逻辑地址为IP地址的网络,该字段长度为4字节。

●  目的端硬件地址:这是可变长度字段,用来定义目标的物理地址。对于ARP请求,字段是全0,因为发送端不知道目标的物理地址(该字段长度为可变,如以太网硬件地址为6个字节)。

●  目的端逻辑地址:这是可变长度字段,用来定义目标的逻辑地址(该字段长度为可变,如IPv4协议的逻辑地址为4个字节)。

2ARP封装

ARP数据报直接封装在数据链路帧中。例如,在下图中,ARP数据包封装在以太网的帧中。类型字段值为0x0806指出了此帧所携带的数据是ARP数据包。

5d83bdf640354edb85c21510a7a7d5f5.png

图2  ARP数据包的封装

3ARP的运行过程

数据包传输过程可分为如下步骤:

1.  发送端知道目的端的IP地址。

2.  IP要求ARP创建一个ARP请求报文,其中包含了发送方的物理地址、发送方的IP地址和目的端的IP地址。目的端的物理地址用0填充。

3.  将报文传递到数据链路层,并在该层中用发送方的物理地址作为源地址,用物理广播地址作为目的地址,将其封装在一个帧中。

4.  因为该帧中包含了一个广播目的地址,所以同一链路中的每个主机或路由器都接收到这个帧。所有接收到该帧的主机都将其传递到ARP层进行处理。除了目的端主机以外的所有主机都丢弃该报文。

5.  目的端主机用一个包含其物理地址的ARP应答报文做出响应,并对该报文进行单播。

6.  发送方接收到这个应答报文,这样它就知道了目标主机的物理地址。

ARP地址解析过程如下图所示。

c1a547419430402eb4c54adab8dca0ef.png

图3  ARP地址解析过程

4 ARP高速缓存

在真正的协议实现中,并不是每次发送IP报文前都需要发送ARP请求报文来获取目的MAC地址。在大多数的系统中都存在着一个ARP缓存表。记录着一段时间内曾经获取过的MAC地址和IP地址的映射关系,如下图所示:

34cdd613a5f243cda5a044408cdd41cc.png

图4  ARP高速缓存

发送IP数据报前先对ARP缓存表进行查找,查看目的MAC地址是否存在于缓存表中,如果存在,则不需要发送ARP请求报文而直接使用此地址进行IP数据包的发送。如果不存在,则发送ARP请求报文,在收到ARP应答报文之后,使用应答报文中的目的MAC地址发送IP数据包,并将目的MAC地址存于ARP缓存表中供以后使用。

另外,ARP缓存表采用老化机制,在一段时间内如果表中的某一项没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。

下图描述了ARP高速缓存的使用与更新过程:

1bab0966250e48fe84fce4033a035175.png

图5  ARP高速缓存的使用与更新过程

二、IP协议简介

IP(网际协议)是TCP/IP协议族中最核心的协议,它负责将数据包从源点交付到终点。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。IP协议提供不可靠、无连接的数据报传送服务,即它对数据进行“尽力传输”,只负责将数据包发送到目的主机,不管传输正确与否,不做验证、不发确认、也不保证IP数据包到达顺序,将纠错重传问题交由传输层来解决。

IP地址是网际协议地址(InternetProtocoladdress)的简称。一个IP地址惟一地标识了Internet上的一台主机。通信时要使用IP地址来指定相应的目的主机。

1.地址空间

地址空间就是协议所使用的地址总数。如果协议使用N位来定义地址,每一位可以有两种不同的值(1或0),那么地址空间就是2N。IP使用32位地址,这表示地址空间是232,或4294967296(超过40亿个)。从理论上讲,可以有超过40亿个设备连接到Internet。但是,实际的数字要远小于这个数值。

2.IP地址的表示方法

IP地址有三种常用的表示方法:二进制表示方法、点分十进制表示方法和十六进制表示方法。

3.IP地址的分类

IP地址分成5类:A类,B类,C类,D类和E类。其中A类、B类和C类地址是基本的Internet地址,是用户使用的地址,D类地址用于广播,E类地址为保留地址。

下图描述了IP地址的二进制表示方法的分类:

a0fc901161b3413f85fc9285ead82739.png

图6在二进制记法中找出IP地址的类别

下图描述了IP地址的十进制表示方法的分类:

bab90e23c6ed4c4cb7e06df2aa4b1474.png

图7在点分十进制记法中找出IP地址的类别

4.网络号和主机号

在分类编址的A类,B类和C类地址中,IP地址可划分为网络号(net-id)和主机号(host-id)。这两部分长度都是可变的,取决于地址的类型。下图给出了网络号和主机号所占的字节。应该注意的是,D类地址和E类地址不划分网络号和主机号。

9cc4eb87dea94faeb618ec7af492422c.png

图8 网络号和主机号

三、特殊的IP地址

1.特殊的IP地址

●网络地址:主机号为全“0”的IP地址不分配给任何主机,而是作为网络本身的标识。

例:主机202.198.151.136所在网络地址为202.198.151.0。

直接广播地址:主机号为全“1”的IP地址不分配给任何主机,用作广播地址,目的地址为直接广播地址的数据包传递给该网络中的所有节点(能否执行广播,则依赖于支撑的物理网络是否具有广播功能)。

例:202.198.151.136所在网络的广播地址为202.198.151.255。

有限广播地址:32位为全“1”的IP地址(255.255.255.255)称为有限广播地址,通常由无盘工作站启动时使用,希望从网络IP地址服务器处获得一个IP地址。

主机本身地址:32位全“0”的IP地址(0.0.0.0)称为主机本身地址。

回环地址:127.0.0.1称为回环地址,常用于本机上软件测试和本机上网络应用程序之间的通信地址。

四、IP报文格式

IP数据报格式如下图所示,它是由IP首部与数据组成的。IP首部长度通常为20字节。如果含有选项字段,IP首部长度将会大于20字节,但不会超过60字节。

6927ce182c5442a29826eed4366ff906.png

图9 IP报文格式

在IP首部中各个字段的意义如下:

版本号:这个字段定义了IP的版本。目前主流的是版本4(IPv4),但它正逐渐地被版本6(IPv6)所替代。

首部长度:由于IP选项字段的存在,所以IP首部长度是可变的。该字段用4位来定义首部长度。将该值乘4可得到用字节表示的长度,所以IP首部长度为20~60个字节。

区分服务:该字段以前叫做服务类型(在RFC791中定义),是由3位优先域、4位服务类型域和1位未用位(该位必须置为0)组成,其中4位服务类型分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。该字段在RFC2474中被重新定义,在新的定义中将该字段命名为区分服务,其中包含一个6位的区分服务码点(DSCP)字段和一个2位的未用位(CU)字段。

总长度:该字段以字节为单位定义IP数据报的总长度(首部加上数据)。要得到IP上层数据的长度,只需从总长度中减去首部长度即可。

标识:每一个IP数据包在发送时被给定特有的标识值。如果数据包必须被分割成碎片以适应支持小型数据包的网络,那么每一个碎片中都设置相同的标识号码。

标志:标志由3位组成,第1位保留;第2位为不分片标志,表示此数据包不可以被分片;第3位为更多分片标志,表示在分片包之后还有分片,即此包不是最后分片。

偏移量:如果数据包是一个分片包,该域指明了当前分片包在与其它分片包被重新组装成一个单独数据包时,应该位于数据包的什么位置。该域的值以8字节为单位。

生存时间:该字段表明数据包保存的生存时间,单位为秒,在实际的应用中,生存时间是按照数据包经过路由器的跳数计算的。通常生存时间的值是32、64、128。

高层协议类型:该字段定义了使用IP层服务的较高层协议。一个IP数据报能封装来自诸如TCP、UDP、ICMP和IGMP等较高层协议的数据。

首部校验和:IP首部校验和只对首部内容进行错误检测,并不包括数据包的其它内容。校验和采用16位反码求和的算法。

源IP地址:该字段定义了源主机的IP地址。在IP数据包从源主机传送到目的主机期间,该字段保持不变。

目的IP地址:该字段定义了目的主机的IP地址。在IP数据报从源主机传送到目的主机期间该字段保持不变。

IP选项:这个字段是可选项。它们通常用于网络测试和调试。虽然可选项不是IP头部所必需的部分,但要求IP软件能够处理它们。

五、IP封装

IP数据报直接封装到数据链路层帧中,其封装方法如下图所示:

56023781387645f3ac09f9479dce65e5.png

图10 IP封装

六、ICMP简介

IP协议是一种不可靠无连接的协议,当数据包经过多个网络传输后,可能出现错误、目的主机不响应、包拥塞和包丢失等问题。为了处理这些问题,在IP层引入了另一个协议ICMP(Internet控制信息协议)。ICMP报文有两种类型:差错报文和查询报文。ICMP报文封装在IP报文里传输。ICMP报文可以被IP协议、传输层协议(TCP或UDP)和用户进程使用。ICMP与IP一样,都是不可靠传输,ICMP的信息也可能丢失。为了防止ICMP报文无限制的连续发送,对于ICMP报文在传输中发生的问题,将不再发送ICMP差错报文。

1 ICMP报文格式

ICMP数据包由8字节的首部和可变长度的数据部分组成。如下图所示,第一个字段是ICMP的类型,它定义了报文类型。第二个字段是代码字段,它指明了发送这个特定报文类型的原因。校验和字段为ICMP数据包提供差错校验。对于不同类型的ICMP数据包,首部的最后4个字节的格式是不同的,具体的格式将在下面讨论。

差错报文的数据部分携带引起差错的原始数据。查询报文的数据部分携带了基于查询类型的额外信息。

fffa947c99fd4f39a1f9703e4b7eaceb.png

图11  ICMP报文的一般格式

  类型:8位字段,用于描述特定类型的ICMP报文。

●  代码:8位字段,进一步描述某些ICMP报文的具体说明。

●  校验和:16位字段,覆盖这个ICMP报文的校验和。

2 ICMP封装

ICMP报文封装在IP数据报中,具体的封装方法如下图所示:

3205c28ec9c7436a8e361a3fbd543df9.png

图12  ICMP封装

3ICMP报文类型

ICMP报文可分为两大类:差错报文和查询报文,如下图所示:

a907aa3a9fde444a997bb739ebed296d.png

图13  ICMP报文类型

差错报文报告路由器或主机在处理IP数据报时遇到的问题。

查询报文是成对出现的,它帮助主机或网络管理员从一个路由器或另一个主机得到特定的信息。例如,主机使用ICMP回显请求和回显应答报文发现它们的邻站。下表列出了每一类ICMP报文。

表2  ICMP报文

853ef6424b21490b80a189210839ba73.png

五、【实验步骤】

实验准备:

1.启动Packet Tracer,连接对应拓扑。

dc404d67d741479c8c6132041f130b15.png

2.各主机按地址规划配置相应IP地址

3.按拓扑规划设置好各主机的IP地址路由器端口地址,同时配置router0和router1的静态路由,使PC间能够相互ping通。

Router0(config)#ip route 0.0.0.0 0.0.0.0 200.1.3.2

709a2b1fd0c845b3ae814d8040c2f06f.png

Router1(config)#ip route 0.0.0.0 0.0.0.0 200.1.3.1

bfaf6cc603e04669877a2a9486654f85.png

练习1   Packet Tracer 熟悉 arp 命令

步骤 1: 访问命令提示符窗口(实验拓扑中的)

步骤 2: 用PC1  Ping其它PC,观察ARP 缓存中条目的动态增减。

注意观察:ARP高速缓存表由哪几项组成?

 主要有IP地址、MAC地址、Type组成

ff8756956ae94e34acbeab25fdf47eb5.png

a56eef1dad0e41b494b7cb21463ed23f.png

fc309f4362f84bfca0b4be93cda03ef2.png

f72d2e4e811e4a21940bc7cb4c11360d.png

练习2   同一广播域(同一子网)中ARP协议的执行过程

(一)在模拟环境下完成

  步骤1∶不过并观察ARP数据包的转发

(1)在Realtime模式下,尽量清除所有设备(PC机及路由器)中的ARP缓存信息,其中PC机中查看ARP缓存的命令为arp –a,清除ARP缓存的命令为arp –d。路由器中查看ARP缓存的命令为Router#show arp,清除的命令为Router#clear arp-cache

59bfc843f6ec4834b95ad7346f846fdb.png

d26a6b2938c8473e87c15f8cda67d24c.png

7ffba14ec65446f889061bf75c9cc13e.png

aaa2125fa84d4e2388a35b34df981bf3.png

3ee4014352a94bcb9d9e0b500af40a28.png

(2)在simulation模式下,由PC1向PC2发送一个Ping包,观察ARP包的传递过程,同时查看PC1、PC2、路由器的ARP缓存变化情况,记录下相关信息

f55d7a8e93b94797865e9856932d4789.png

回答以下问题:

①ARP请求报文是由哪个设备发出的?

PC1

②哪些设备收到了ARP请求报文?

PC2、Route1

③ARP应答报文是由哪个设备发出的?

  PC2   

④哪些设备收到了ARP应答报文?  

PC1

⑤PC1、PC2在PING命令执行前后,其ARP缓存有什么变化?

执行前PC1的ARP缓存

3d31e42b59fe496a886506ce76c0c049.png

 执行前PC2的ARP缓存

ba4eb692bfb042caa9368e747273690b.png

执行后PC1的ARP缓存

de7e3ba3c21b4b8fa3e6ceccca6e9450.png

执行后PC2的ARP缓存

f4e98218d1b64096b21b9672f5de40a7.png

(3)重复(2)一次,观察结果有何不同,分析原因?

d72cb14bd0c343c69dd12905772f8b0f.png

 efbcc604e7fe466495cd147c240fa821.png

不同:第二次发送数据包,数据包到达交换机后直接到达PC1,不再传送到路由器了

原因:交换机已经把mac地址记录在它的内存中了

重复(2)一次,观察结果有何不同,分析原因。
步骤2:打开步骤1 中捕获的ARP请求和ARP应答报文,研究ARP报文格式和封装方式 。

d325874e87714ac6be176f16850b7b57.png
PC1发出的ARP请求报文:

0def7fa1059f4f339f0561314546ae1f.png
PC2收到的ARP请求报文:

4ac054e2317d4884ac33fac6fb758f0b.png
PC2发出的ARP应答报文:

b9b739bd49784c8cadd033bd5ffdea0e.png
PC1收到的ARP应答报文:

fa2b4f2c15094af98c5597b5f956f85e.png

(二)在真实网络中完成:
(1)打开wireshark软件,抓取数据包;【这里我进行抓取手机IP】
(2)通过执行ping命令,测试与主机IP地址192.168.55.254的连通性。然后,停止抓包,显示过滤出ARP包。

1717d995564048978be62672ddf59efa.png

697abad6575c4c7fb704365bdd4c2f74.png

(3)分析ARP请求包

c5dcac211b39468c8291d6d54841e3b9.png

f41f5d65fdc84296af086977e509ad57.png

练习不同广播域(不同子网)内主机间互访时的ARP执行过程。

(1)在Realtime模式下,清除所有设备(PC机及路由器)中的ARP缓存信息。

以一个PC机和路由器作示范:

62a961fb4aa14f719861347e09d99e08.png

e45201eadacf4126b91ff9db4b89635d.png

(2)在simulation模式下,由PC1向PC4发送一个ICMP包,观察包的传递过程,同时注意相关PC机、路由器的ARP缓存变化情况,记录下相关信息,回答以下问题:
ARP请求报文是由哪些设备发出的?

ARP请求报文是由PC2,switch0,路由器发出的

哪些设备收到了ARP请求报文?

PC1、PC3、PC4、Route1、Route0、switch都收到了ARP请求报文。

ARP应答报文是由哪个设备发出的?

ARP应答报文是由PC4发出的

哪些设备收到了ARP应答报文?

PC1、PC2、PC3、Route1、Route0都收到了ARP应答报文。

PC1、PC2在PING命令执行前后,其ARP缓存有什么变化?

执行后的PC1

71c3a1c4fe0f434aa79a26d91713799c.png

 执行后的PC2

dd19cf6bd6c349f293699005c20dfd15.png

(3)对捕获的ARP包进行协议格式分析,并与练习2中的ARP包进行对比,观察有哪些不同。

8abb2294f1dd43ceaf851879c85d5fa9.png

 d1db4c7fc07c41f68461cfa6fc1a11b5.png

(4)重复(2)一次,观察结果有何不同,分析原因。

在重复(2)时,由于PC0和PC1的ARP缓存中已经有对方的MAC地址,因此不需要再发送ARP请求报文,直接发送ICMP包即可。

(5)若此时由PC2向PC4发送一个ICMP包,试分析ARP包的产生和处理过程,并验证之。

当PC2向PC4发送ICMP包时,PC2会先检查自己的ARP缓存中是否有PC4的MAC地址,如果没有,则会发送ARP请求报文,请求PC4的MAC地址。

PC4收到ARP请求报文后,会向PC2发送ARP应答报文,告诉PC2自己的MAC地址。

PC2收到ARP应答报文后,就可以向PC4发送ICMP包了。

●  单一ARP请求报文是否能够跨越子网进行地址解析?为什么?

单一ARP请求报文不能跨越子网进行地址解析。因为ARP请求报文是以广播方式发送的,只能在同一广播域内进行广播,无法跨越不同的广播域。

●  ARP地址解析在跨越子网的通信中所起到的作用?

作用是解析网关的MAC地址,ARP本身无法跨跃不同网段。当数据要发往外部网络时,通常是首先使用ARP请求网关路由器的MAC地址,之后将数据发往网关路由器,由网关路由器进行转发。

练习4   IP协议格式分析

步骤1:进入simulation模式,在Filter中仅选中ICMP或者仅选中IP,由PC1向PC4发送一个Ping包(开始几次有可能失败,试分析原因)

560956f7793e436986fcf90af03c5c68.png

1.网络连接问题:如果PC1与PC4之间的网络连接存在问题,例如链路故障、网络设备故障或路由问题,则可能导致Ping包传输失败

2.设备配置问题:如果PC1或PC4上的设备配置错误,例如IP地址配置错误、子网掩码配置错误或网络接口配置错误,则可能导致Ping包传输失败

从捕获到的数据包中找主机PC1所发送到PC4的所有数据报,分析这些包的MAC首部及IP首部信息,特别注意该包进入该设备及离开该设备时相关信息的变化情况

1.MAC首部:在数据报的MAC首部中,可以找到源MAC地址和目标MAC地址。源MAC地址是主机PC1的MAC地址,目标MAC地址是主机PC4的MAC地址。当数据报进入路由器时,源MAC地址和目标MAC地址会发生变化,因为路由器需要使用自己的MAC地址进行数据包的转发。

2.IP首部:在数据报的IP首部中,可以找到源IP地址和目标IP地址。源IP地址是主机PC1的IP地址,目标IP地址是主机PC4的IP地址。IP首部中的其他字段包括TTL(生存时间)和标识符。TTL表示数据报在网络中的生存时间,每个经过的路由器都会将TTL减1。标识符是路由器对每个数据报进行分段时分配的标识符,用于在数据报重组时进行匹配。

当数据报进入路由器时,IP首部中的TTL会减1,因为每个经过的路由器都会将TTL减1。如果数据报到达路由器时的TTL值为0,路由器会丢弃该数据报。此外,如果路由器对数据报进行了分段,则IP首部中的标识符字段会发生变化。

回答以下问题:

主机PC1所发送的报文,经过路由器到达主机PC4后,报文数据否发生变化?若发生变化,记录变化的字段,并简述发生变化的原因。

主机PC1发送的报文在经过路由器时,可能会根据路由器的配置和网络状况进行一些修改或处理。具体来说,路由器可能会对报文进行转发、路由选择、数据包分段等操作。因此,主机PC1所发送的报文在经过路由器到达主机PC4后,报文数据可能会发生变化。

变化情况:

MAC首部:源MAC地址和目标MAC地址可能会被修改,因为路由器需要使用自己的MAC地址进行数据包的转发。

IP首部:源IP地址和目标IP地址不会变化,因为这些地址是在数据包生成时就已经确定的。但是,TTL(生存时间)字段可能会被减1,因为每个经过的路由器都会将TTL减1。此外,如果路由器对数据包进行了分段,那么IP首部中的标识符字段可能会被修改。

步骤2:在Simulation 模式下,单击 Add Complex PDU(添加复杂 PDU)按钮,然后单击PC1(源)。将会打开 Create Complex PDU(创建复杂 PDU)对话框。在 Destination IP Address:(目的 IP 地址:)字段中输入200.1.2.2。将 TTL: 字段中的值改为 1。在 Sequence Number(序列号)字段中输入 1。在 Simulation Settings(模拟设置)下选择 Periodic(定期)选项。在Interval(时间间隔)字段中输入 2。单击 Create PDU(创建 PDU)按钮。此操作等同于从PC1 上的命令提示符窗口发出命令 ping -t -i 1 200.1.2.2。重复单击 Capture/Forward(捕获/转发)按钮,观察该数据包能否被主机pc4接收到?简述产生这种现象的原因。

03a22912dc3a498aa680a52040cf9a0f.png

8e81c6d84f434724a70af1e6a10e1786.png

630a7b4d662b4f81b61ff6cc130acc1c.png

根据所提供的信息,重复单击Capture/Forward按钮后,数据包应该不能被主机pc4接收到。因为数据包的TTL已经设置为1,这意味着数据包只会在网络中传输一次。当数据包到达第一个路由器时,由于TTL减1为0,数据包将被丢弃,因此无法到达目标主机pc4。

原因:产生这种现象的原因是数据包的TTL值设置为1。每个经过的路由器都会将TTL减1,当TTL减至0时,路由器会丢弃该数据包。因此,即使该数据包能够成功地经过路由器到达主机PC4的路径上,它也会在到达主机PC4之前被丢弃。

练习5 特殊的IP地址

1.直接广播地址

步骤1:在Simulation 模式下,单击 Add Complex PDU(添加复杂 PDU)按钮,然后单击PC1(源)。将会打开 Create Complex PDU(创建复杂 PDU)对话框。在 Destination IP Address:(目的 IP 地址:)字段中输入200.1.1.255,在 Sequence Number(序列号)字段中输入 1。在 Simulation Settings(模拟设置)下选择 Periodic(定期)选项,在Interval(时间间隔)字段中输入 1,其它默认值,单击 Create PDU(创建 PDU)按钮。重复单击 Capture/Forward(捕获/转发)按钮,观察哪些主机接收到了该数据包?分析数据链路层和网络层的地址。

a6661d6bf7cf4e318cf14c99b31f5c8b.png

d9c129a4dbd04e7386171167885a8b92.png

6c29c937bcf54b06870c2991f5055d95.png

e4b1649dffa64c7a90bf2e1ef884782d.png

根据实验设置,目的IP地址是200.1.1.255,这是一个直接广播地址。这意味着该数据包将被

发送到网络200.1.1中的所有主机。因此,主机PC2和PC3也应该能够接收到该数据包,因为它们都位于网络200.1.1中。

在数据链路层,源MAC地址是PC1的MAC地址,而目标MAC地址是FF:FF:FF:FF:FF:FF,这是广播地址。这意味着数据包被发送到网络中的所有主机。

在网络层,源IP地址是PC1的IP地址,而目标IP地址是200.1.1.255,这也是一个广播地址。这表示数据包被发送到网络200.1.1中的所有主机。

通过这样的设置,您成功地使用直接广播地址将数据包发送到了网络200.1.1中的所有主机。

步骤2:在Simulation 模式下,单击 Add Complex PDU(添加复杂 PDU)按钮,然后单击PC1(源)。将会打开 Create Complex PDU(创建复杂 PDU)对话框。在 Destination IP Address:(目的 IP 地址:)字段中输入200.1.2.255,在 Sequence Number(序列号)字段中输入 1。在 Simulation Settings(模拟设置)下选择 Periodic(定期)选项,在Interval(时间间隔)字段中输入 1,其它默认值,单击 Create PDU(创建 PDU)按钮。重复单击 Capture/Forward(捕获/转发)按钮,观察哪些主机接收到了该数据包?分析数据链路层和网络层的地址。897f681eba70467ab07ef404d6596f43.png

cfd3fc984d4c4701a751f18053a6df10.png

3125ff59c8504543973c661455659684.png

0880bc2f29ee458d906d2ffea583afd0.png

根据实验设置,目的IP地址是200.1.2.255,这是一个直接广播地址。这意味着该数据包将被发送到网络200.1.2中的所有主机。因此,只有位于网络200.1.2中的主机PC4可以接收到该数据包。

在数据链路层,源MAC地址是PC1的MAC地址,而目标MAC地址是FF:FF:FF:FF:FF:FF,这是广播地址。这意味着数据包被发送到网络中的所有主机。

在网络层,源IP地址是PC1的IP地址,而目标IP地址是200.1.2.255,这也是一个广播地址。这表示数据包被发送到网络200.1.2中的所有主机。

通过这样的设置,您成功地使用直接广播地址将数据包发送到了网络200.1.2中的所有主机,并且只有位于该网络中的主机PC4可以接收到该数据包。

记录实验结果,填入下表:

主机号

收到步骤1中PC1发送的IP数据报

PC2、PC3

收到步骤2中PC1发送的IP数据报

                                      PC4

分析:结合实验结果,简述直接广播地址的作用。

直接广播地址是一种特殊的IP地址,用于向特定网络中的所有主机发送广播消息。通过使用直接广播地址,可以将数据包发送到指定网络中的所有主机,而不仅仅是单个目标主机。这对于在特定网络中广播消息或进行网络诊断非常有用。

2.受限广播地址

在Simulation 模式下,单击 Add Complex PDU(添加复杂 PDU)按钮,然后单击PC1(源)。将会打开 Create Complex PDU(创建复杂 PDU)对话框。在 Destination IP Address:(目的 IP 地址:)字段中输入255.255.255.255,在 Sequence Number(序列号)字段中输入 1。在 Simulation Settings(模拟设置)下选择 Periodic(定期)选项,在Interval(时间间隔)字段中输入 1,其它默认值,单击 Create PDU(创建 PDU)按钮。重复单击 Capture/Forward(捕获/转发)按钮,观察哪些主机接收到了该数据包?分析数据链路层和网络层的地址。

0598526154e74ed8aeed562ab957e628.png

105f8d22fc7e4874af300a76692b6488.png

在Simulation模式下,执行上述操作后,将创建一个目的IP地址为255.255.255.255的受限广播数据包,并从PC1发送。这个数据包会被发送到与PC1处于同一网络中的所有主机,即PC2和PC3。这是因为受限广播地址只能在一个网络内部广播,而不能跨越不同的网络。所以,只有与PC1在同一网络中的主机(即PC2和PC3)可以接收到这个数据包。

分析数据链路层和网络层的地址:

在数据链路层,源MAC地址是PC1的MAC地址,而目标MAC地址是广播地址(FF:FF:FF:FF:FF:FF),这意味着该数据包被发送到所有主机。

在网络层,源IP地址是PC1的IP地址,而目标IP地址是广播地址(255.255.255.255)。这表示该数据包被发送到所有主机。

记录实验结果,填入下表:

主机号

收到PC1发送的IP数据报

PC2、PC3

未收到PC1发送的IP数据报

                                       PC4

分析:结合实验结果,简述受限广播地址的作用。

受限广播地址(255.255.255.255)主要用于在一个特定网络内部广播消息。这意味着,当一个设备使用受限广播地址发送消息时,该消息只会发送到与发送设备位于同一网络中的其他设备。

在实验中,PC1发送了一个目的地址为255.255.255.255的广播数据包。由于PC1、PC2和PC3都位于同一网络中,它们可以接收到该数据包。然而,PC4位于不同的网络中,因此无法接收到该受限广播消息。

因此,受限广播地址可用于在特定网络内部广播消息,以通知该网络中的所有设备。这种广播方式在网络设备查找、软件更新、网络故障排查等方面非常有用。但需要注意的是,受限广播消息不能跨越不同网络,因此需要在每个网络内部单独广播。

3.环回地址

进入Simulation 模式,单击PC1,进入命令模式,执行ping 127.0.0.1,重复单击 Capture/Forward(捕获/转发)按钮,观察其它主机接能收到PC1发送的数据包吗?为什么?

0ca95e32f0ae416a84fe991bcab0e9aa.png

在Simulation模式下,执行ping 127.0.0.1命令时,PC1会向本地环回地址发送一个ICMP请求数据包。这个数据包的目标IP地址是127.0.0.1,这是一个环回地址,也称为回送地址。

环回地址是专为测试和诊断网络设备而保留的特殊IP地址。当设备使用环回地址发送消息时,该消息只会发送到设备的本地接口,而不会发送到任何外部网络。因此,其他主机无法接收到由环回地址发送的数据包。

在实验中,由于PC1发送的ICMP请求数据包的目标是环回地址127.0.0.1,因此只有PC1自己能够接收到该数据包。其他主机(如PC2、PC3和PC4)无法接收到该数据包,因为它们没有配置环回接口,也没有监听环回地址。

因此,使用环回地址进行测试和诊断时,只有发送设备自己能够接收到发送的数据包,不会影响其他设备或网络。

练习6  IP数据报分片

1.在路由器router0上设置以太网端口的MTU为800字节。

ee3b6ea8144e483b9958720a6d7f01d9.png

2. 在Simulation 模式下,单击 Add Complex PDU(添加复杂 PDU)按钮,然后单击PC1(源),将会打开 Create Complex PDU(创建复杂 PDU)对话框。在 Destination IP Address:(目的 IP 地址:)字段中输入200.1.2.1,在 Sequence Number(序列号)字段中输入 1,在size字段中输入2000,在 Simulation Settings(模拟设置)下选择 Periodic(定期)选项,在Interval(时间间隔)字段中输入 1,其它默认值,单击 Create PDU(创建 PDU)按钮。重复单击 Capture/Forward(捕获/转发)按钮,跟踪数据包的流动情况,特别注意:该包在PC1出来时是否进行了分片,该包在Router0出来时是否进行了分片,该包在Router1出来时是否进行了重组,该包到达PC4后是否进行了重组,回复的Ping命令包是否在PC4处进行了分片,回复的Ping命令包是否在Router1出来时进行了分片。在每一处发生了分片的地方,观察包中与分片有关的几个字段的信息(数据包长度、标识号、标志、偏移值),并记录下必要的信息。

84c512d59c5d4b80abbd65f5c47363cb.png

061243007142401c85d6e5aa27fc3f35.png

 将捕获到的ICMP报文分片信息填入下表,分析表格内容,理解分片的过程。

设备

字段名称

分片序号1

分片序号2

分片序号3

PC1

“标识”字段值

0x1f

0x1f

“还有分片”字段值

0x1

0x0

“分片偏移量”字段值

0x0

0x5c8

传输的数据量

1480

520

Router0

“标识”字段值

0x1f

0x1f

0x1f

“还有分片”字段值

0x1

0x1

0x0

“分片偏移量”字段值

0x0

0x30c

0x5c8

传输的数据量

780

700

520

PC4

“标识”字段值

0x1f

0x1f

0x1f

“还有分片”字段值

0x1

0x1

0x0

“分片偏移量”字段值

0x0

0x30c

0x5c8

传输的数据量

780

700

520

练习7 使用 Ping 命令观察 ICMP

(1)在Realtime模式下,由PC1向PC2发送一个Ping包,测试成功后进入模拟分析状态下。

d7c6fc57ae6e4a92bdc9640b1d6207c9.png

(2)在simulation模式下(在Filter中同时选中ICMP),由PC1向PC2发送一个Ping包,捕获并观察 ping 程序发送和回应的 ICMP 报文。

70464d3efb574d109d2ff7dfa2d4347c.png

fdd4ea95b4a949858750bf7f10a11a73.png

在其中 At Device显示为 PC2 的第一个事件中,这是第一条请报文。单击 Outbound PDU Details查看 ICMP的封装和报文的内容。

8ace541e50584b90980481d2dab0cb5c.png

在其中 At Device显示为 PC1 的下一个事件中,这是第一条应答报文。单击 Inbound PDU Details查看 ICMP 报文的内容。

e75b5afa0cfa462cbc097f59b2819b39.png

察看捕获到的数据,并回答以下问题:

(1)捕获的报文对应的“类型”和“代码”字段分别是什么?

  1. 在ping程序发送的ICMP报文中,类型字段通常为0x0(表示回显请求),代码字段通常为0x0。
  2. 在ping程序接收到的ICMP报文中,类型字段通常为0x0(表示回显应答),代码字段通常为x0。

(2)分析报文中的哪些字段保证了回显请求报文和回显应答报文的一一对应?

ICMP报文中包含了一个标识符(ID)和一个序列号(Seq),这两个字段一起保证了回显请求报文和回显应答报文的一一对应关系。

  1. 标识符(ID)是一个32位的唯一标识符,用于在发送和接收ICMP报文时进行匹配。当发送ICMP回显请求时,发送方会使用一个唯一的ID来标识这个请求。当接收方收到请求后,会将相同的ID包含在回显应答中,以便与原始请求进行匹配。
  2. 序列号(Seq)是一个16位的序列号,用于在发送和接收ICMP报文时进行排序。当发送ICMP回显请求时,发送方会使用一个唯一的序列号来标识这个请求。当接收方收到请求后,会将相同的序列号包含在回显应答中,以便将应答与原始请求进行匹配。同时,接收方还会使用递增的序列号来保证应答的顺序正确。

通过标识符和序列号的共同作用,可以确保每个ICMP回显请求和对应的回显应答之间的唯一性和顺序性,从而实现可靠的通信。

练习8 使用 tracert 命令观察 ICMP

步骤1:使用 tracert 命令观察一个 IP 数据包从源点到终点的转发路径

在 PC1 的命令行窗口中输入命令: tracert 200.1.2.2,观察IP 数据包从 PC1 到 PC4 的转发路径。将命令的输出结果与网络图及设备的IP 地址进行比对。

5e00a440069749599dce490bc53dc235.png

步骤2:在 Simulation 模式中观察学习 tracert 命令的工作原理

(1)进入 Simulation 模式。设置 Event List Filters 只显示 ICMP 事件,并重复步骤 1。最小化 PC1 的配置窗口,运行模拟并捕获事件和数据包。

aa08b36c280d4b59b6b991ac9e43a116.png

6911278d385b4be9bfac125d00fc2817.png

(2)在 Event List中,分别找到其中 At Device 显示为PC1 的事件,单击其彩色正方形,单击 Onbound PDU Details查看 ICMP 报文的内容,注意观察ICMP报文类型和IP报文的TTL值。

7a7d6110f7ab4e018b522595fdc39cb7.png

ec89f52ffe694e7882adba829ea14839.png

12ab7f93ff9745d1991c5ce1388c0c63.png

(3)在 Event List中,分别找到其中 At Device 显示为 Router1和 PC2 的下一个事件,单击其彩色正方形。这分别是第一条 ICMP 超时错误报告报文和应答报告报文。单击 Inbound PDU Details查看 ICMP 报文的内容。

70d0cc9b0072431f802b3125cc113321.png

练习9   ICMP差错报文

1.  捕获目的端不可达的ICMP回应报文

(1)进入Simulation 模式

(2)在主机PC1上ping 200.1.4.1(不存在的IP),观察执行结果。 

b327b506e767492db219812dfb8be94b.png

662bd38efe294de689c89eb7eba06499.png

(3)察看PC1上捕获到的ICMP报文,分析捕获到的是哪一种目的端不可达报文?

f715ddece7bc4fe9bf3b4241df375c34.png 7839307c1d2b434b9b69066f19a398b2.png

c43eeabcf36143c5b1ff36a47bc6360b.png

在捕获到的ICMP报文中,您会看到一个类型为3的报文,代码为1的报文,这表示目的不可达报文。这个报文通常表示网络层无法到达目标主机,可能是因为目标IP地址不存在,或者网络中存在路由问题。

2. 捕获TTL 超时的 ICMP 回应报文

Packet Tracer 不支持 ping -i 选项。在模拟模式中,可以使用 Add Complex PDU(添加复杂 PDU)按钮(开口的信封)设置 TTL。

(1)在Simulation 模式下,单击 Add Complex PDU(添加复杂 PDU)按钮,然后单击PC0(源)。将会打开 Create Complex PDU(创建复杂 PDU)对话框。在 Destination IP Address:(目的 IP 地址:)字段中输入200.1.2.1。将 TTL: 字段中的值改为 1。在 Sequence Number(序列号)字段中输入 1。在 Simulation Settings(模拟设置)下选择 Periodic(定期)选项。在Interval(时间间隔)字段中输入 2。单击 Create PDU(创建 PDU)按钮。此操作等同于从PC1 上的命令提示符窗口发出命令 ping -t -i 1 200.1.2.1。

2b6b91a706b441ec992f2f7c755d1746.png

(2)重复单击 Capture/Forward(捕获/转发)按钮,以在 PC1 与路由器之间生成多次交换。在 Event List(事件列表)中找到第一个数据包,即第一个回应请求。然后单击 Info(信息)列中的彩色正方形。单击事件列表中数据包的 Info(信息)正方形时,将会打开 PDU Information(PDU 信息)窗口。单击 Outbound PDU Details(出站 PDU 详细数据)选项卡以查看 ICMP 报文的内容

36b7b6940b6b4525a1eddb771cc2f163.png

(3)在其中 At Device(在设备)为PC1的下一个事件中,单击其彩色正方形。这是第一条应答。单击 Inbound PDU Details(入站 PDU 详细数据)选项卡以查看 ICMP 报文的内容

c523a22cd0f14e55a5aa11322626fc08.png

(4)将(1)中的 TTL: 字段中的值改为2,重新按以上过程进行测试,注意观察ICMP超时回应报文。

0cead2964745431c9bd254f4c705c9f8.png

5ff351222a3b4f199e0ce3e600c47048.png

六、【思考问题】

1.练习2完成后,哪些PC的ARP缓存拥有PC1的MAC地址记录?哪些PC新添加了PC2的MAC地址记录?在练习2和练习3中,ARP分别被执行了几次?

练习2完成后,PC01、PC2和PC3的ARP缓存中拥有了PC1的MAC地址记录。而PC1和PC3新添加了PC2的MAC地址记录。在练习2和练习3中,ARP分别被执行了2次和3次。

2.ARP缓存的作用是什么?缓存中记录的保存时间是否越长越好?

ARP缓存的作用是保存IP地址与MAC地址的对应关系,以便主机在后续的数据传输中能够使用正确的MAC地址进行数据包的封装。然而,缓存中的记录并不是保存时间越长越好,因为过期的记录可能会造成缓存溢出,而且过期的记录也可能会被删除。

3.主机使用ARP能查询到其他的网段的MAC地址吗?为什么?试比较ARP协议在同网段内解析和跨网段的解析有何异同点?

主机只能查询到同一网段的MAC地址,而无法查询到其他网段的MAC地址。这是因为ARP协议只能在同一网络内进行解析,无法跨网段解析。相比之下,ARP在同网段内解析和跨网段解析的主要区别在于ARP请求的数据包是否能够跨越不同的网络。

4.ARP数据包的长度是固定的吗?试加以解释。

ARP数据包的长度不是固定的,因为其长度取决于数据链路层所能够传输的最大数据包长度。在以太网中,ARP数据包的长度最大为1500字节。

5.至少举出两种不需要发送ARP请求数据包的情况。

不需要发送ARP请求数据包的情况有两种:一是当主机已经拥有目标主机的MAC地址信息时;二是当主机和目标主机在同一物理网络中时。

6.  为什么要设置TTL字段?

TTL字段的作用是限制数据包在网络中的生存时间,以防止数据包在网络中无限期地传输。如果数据包在TTL值所指定的时间内没有被目标主机接收,那么该数据包将被丢弃。

7.   什么样的ICMP报文是由路由器发送出的?什么样的ICMP报文是由目的主机发送出的?

路由器通常会发送两种类型的ICMP报文:超时报告和目的地不可达报告。当路由器转发数据包时遇到超时情况,会发送超时报告;而当路由器无法将数据包转发到目标主机时,会发送目的地不可达报告。目的主机则只会发送目的地不可达报告,当目的主机无法接收数据包时,会向源主机发送该报告。

8. 在 tracert 命令中,为什么源主机对于每个 TTL 值都要重复进行多次探测?

tracert命令中,源主机对于每个TTL值都要重复进行多次探测,以便更准确地确定目标主机的位置。这是因为网络中的某些设备可能会对数据包进行缓存处理,导致数据包在经过多个设备时可能无法被正确地记录下来。通过多次探测可以增加数据包被正确记录的可能性。

9.受限广播地址的作用范围?受限广播地址和直接广播地址的区别?

受限广播地址的作用范围仅限于本地网络,而不能跨越路由器进行广播。相比之下,直接广播地址可以跨越路由器进行广播。因此,受限广播地址和直接广播地址的主要区别在于其广播范围的不同。

10.路由器转发受限广播吗?

是的,路由器会转发受限广播。

11.Ping的数据部分为3000字节,回显请求报文为何被分为3片而不是2片?

当Ping的数据部分为3000字节时,回显请求报文被分为3片而不是2片是因为IP数据报的最大长度为1500字节(包括数据和头部信息),因此需要将数据部分分成两片(每片1480字节)和一个单独的8字节头部信息(用于标识ICMP协议类型和序列号),总共三片。

12.数据部分长度为多少时报文正好被分为2片?

当数据部分长度为1488字节时,报文正好被分为2片。这是因为每片的长度必须小于1500字节(IP数据报的最大长度),因此第一片为1488字节(包括8字节的ICMP头部信息和1480字节的数据),第二片为2字节的ICMP头部信息。

13.不同协议的MTU的范围从296到65535,使用大的MTU有什么好处?使用小的MTU有什么好处?

使用大的MTU有以下好处:首先,可以减少IP分片的情况,从而提高数据传输效率;其次,可以支持更大的数据传输量,从而加快数据传输速度;最后,可以支持更大的应用程序数据,从而提高应用程序的性能。然而,使用小的MTU也有其好处:首先,可以减少网络拥塞的风险;其次,可以减少路由器的处理负担;最后,可以在一定程度上提高网络安全性能(例如防止IP分片攻击)。

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

噗-噗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值