Bootstrap

【某农业大学计算机网络实验报告】实验三 IP数据报发送和转发流程

实验目的:

1)掌握基本的网络配置方法。

2)观察 IP 数据报的发送和转发流程,掌握 IP 转发分组的原理。

实验器材:

一台Windows操作系统的PC机。

实验准备:

1.配置网络拓扑:为开展实验内容,首先在 Packet Tracer 7.3.1 模拟器中配置好如下的网络拓扑结构。如下图所示,具体包括两台路由器,路由器2分别连接交换机0与交换机1,交换机0连接PC0与PC1,交换机1连接PC2与PC3,路由器4连接交换机2,交换机2连接PC4与PC5:

另:配置过程中交换机端口指示灯可能呈橙色,单击主窗口右下角 Realtime (实时)Simulation(模拟)模式切换按钮数次,即可加速完成交换机的初始化。

2. 配置 IP 地址和子网掩码:根据实验要求,对于每台主机与路由器的接口配置IP地址,点击 PC,打开参数表如下所示,在每台 PC 的配置窗口中配置合理的 IP 地址和子网掩码,除此在此次实验中我们需要重点关注各个主机的MAC地址,因此我们可以在此处点击【Config】—>【FastEthernet0】—>【MAC Address】处查看主机的MAC地址:

三个网络的网络地址分别为:128.96.39.0/25,128.96.39.128/25,192.4.153.0/26,相邻路由器所在网络地址为:128.96.40.0/25。对于每个设备,按照下表在配置窗口中配置合理的 IP 地址和子网掩码:

主机名

IP地址

子网掩码

PC0

128.96.39.5

255.255.255.128

PC1

128.96.39.6

255.255.255.128

PC2

128.96.39.131

255.255.255.128

PC3

128.96.39.132

255.255.255.128

PC4

192.4.153.5

255.255.255.192

PC5

192.4.153.6

255.255.255.192

对于路由器的各端口配置如下:

主机名

IP地址

子网掩码

路由器2-0

128.96.39.7

255.255.255.128

路由器2-1

128.96.39.133

255.255.255.128

路由器2-2

128.96.40.3

255.255.255.128

路由器4-0

128.96.40.4

255.255.255.128

路由器4-1

192.4.153.7

255.255.255.192

根据实验要求,我们特意选取了与实验手册中不同的地址,将所有主机和路由器的 IP 地址、MAC 地址、子网掩码都注释在相应设备处,网络的最终配置如下,其中我们可以发现路由器接口为红色,这是因为路由器接口尚未开启:

3.配置默认网络:即为每个主机配置一个连接的路由器的接口的IP地址作为默认网关,在为每个主机配置IP地址与子网掩码相同的位置,选择【Default Gateway】,输入IP地址即可配置默认网关:

主机 PC0 和 PC1 配置默认网关为 128.96.39.7;主机 PC2 和 PC3 配置默认网关为 128.96.39.133;主机 PC4 和 PC5 配置默认网关为 192.4.153.7;

4.配置静态路由:点击选择【Config】—>【ROUTING】—>【Static】,首先为路由器2配置静态路由如下图所示,其含义为:配置网络192.4.153.0/26 的下一跳地址为128.96.40.4,即需要配置的网络连接的路由器哪一接口与此路由器相连:

同样为路由器4配置静态路由,但需额外注意的是,路由器2连接了两个网络,因此我们需要为路由器4配置两个静态路由,实验手册中使用了路由聚合方法,我们实验过程中不采用此方法,设置两个静态路由如下图所示:

实验内容:

任务一:观察 ARP 表与路由表

1. 观察ARP表:主机如何查看ARP表的方法我们在之前实验内容中已有学习,此次实验中重点关注路由器的ARP表与路由表:点击 Inspect 按钮,再点击路由器 ,选择 ARP 表,或者进入路由器的命令行界面,输入 enable 进入特权模式,再输入 show arp,也可查看路由器的 ARP 表:

通过观察我们可以看到,此时我们没有任何的数据传输动作,但路由器中已存在了部分的IP地址与MAC地址及其对应接口的信息,这说明路由器会自动存储其接口的相关信息

2.观察路由表:点击 Inspect 按钮,再点击路由器,选择路由表,或者进入路由器的命令行界面,输入enable 进入特权模式,再输入 show ip route,也可查看路由器的路由表:

路由器中的路由表用于存储如何将数据包从源地址路由到目标地址的信息,第一行其中的 C 表示直连网络,L 表示路由器的接口,S 为静态路由,具体信息还包含目标网络,它对应的接口与下一跳地址。

任务二:观察数据包的发送过程

(1)添加 PC0 到 PC2 的 ICMP 报文,观察 PC0、路由器 6、PC2 的ARP缓存表的变化:

1.首先我们利用之前实验准备中学习的打开ARP表的方法,分别打开PC0、路由器2、PC2的ARP缓存表如下图所示,可以看到PC0与PC2的ARP缓存表为空,而路由器2中的ARP缓存表只有其接口信息:

2PC0开始发送ICMP数据包,但因为不知道下一跳的MAC地址,因此首先向交换机0发送ARP数据包,交换机 0 收到后广播给 PC1和路由器2PC1 由于不匹配自动丢弃该帧,路由器 2则接收该ARP数据包,同时在其ARP缓存表中记录了PC0IP地址、MAC地址与对应接口

3. 之后,路由器2需要回复信息给交换机0,交换机0则将应答数据包转发给PC0,因此PC0ARP缓存表中记录下了路由器2PC0所在网络连接的接口的IP地址、MAC地址并与交换机的接口相对应起来

4. 在已知MAC地址后,PC0即可成功发送ICMP数据包到达路由器2,路由器2 ARP 数据包通过 G0/1 发送给交换机1,交换机1以广播形式将ARP数据包发送,PC2接收,同时在其ARP缓存表中存储路由器接口G0/1 IP 地址、 MAC 地址与交换机的接口对应起来,PC3则丢弃该ARP数据包:

5. PC2在成功接收ARP数据包后产生应答数据,由交换机1转发给路由器2,同时路由器2存储PC2 IP 地址、MAC 地址与对应接口等信息

6.在上一步骤结束后,即为ICMP数据包从路由器2发送到交换机1再转发给PC2的过程,在这一过程中PC0PC2与路由器2ARP缓存表都不再发生变化。

(2)添加 PC0 到 PC5 发送 ICMP 报文,观察 PC0、路由器 6、路由器 7,PC5 的ARP缓存表的变化及数据包的转发情况,或者采用 ping 命令测试:

1. 首先我们利用之前实验准备中学习的打开ARP表的方法,分别打开PC0、路由器2、路由器4、PC5的ARP缓存表如下图所示,可以看到PC5的ARP缓存表为空,路由器4中的ARP缓存表只有其接口信息,而PC0与路由器2由于上一步骤中的实验,已经存在了部分的信息:

2. PC0ARP缓存表中因为已经存储了路由器2MAC地址信息,因此直接向交换机0发送ICMP数据包,交换机将ICMP数据包转发给路由器2,此时路由器2为确定下一跳地址为多少需要广播发送ARP数据包给路由器4,同时,路由器4ARP缓存表记录下路由器2的右侧接口的IP地址、MAC地址与接口信息

3. 路由器4收到数据后需要向路由器2回复一个应答数据包,应答数据包达到路由器2后,路由器2同时在其ARP缓存表中记录下路由器4左侧接口的IP地址、MAC地址与其对应的接口信息

4.路由器4在确定了下一跳地址后,将ICMP数据包转发给路由器4,路由器4为确定下一跳地址,同样需要广播发送ARP数据包,ARP数据包到达交换机2,交换机2将该数据包广播给PC4PC5PC4丢弃,PC5接收,同时在其ARP 缓存表中记录下了路由器4下方接口的IP地址、MAC地址与对应的接口信息

5. PC5在收到路由器的4ARP数据包后需要回复一个应答包给交换机2,交换机2将此应答包转发给路由器4路由器4接收后,记录下PC5IP地址、MAC地址与对应的接口信息

6. 在上一步骤结束后,即为ICMP数据包从路由器4发送到交换机2再转发给PC5的过程,在这一过程中PC0PC5、路由器2与路由器4ARP缓存表都不再发生变化。

3)清空主机和路由器的 ARP 缓存,重复上述实验过程。

主机清空 ARP 缓存方法:与删除交换机的交换表类似,点击主页面左上角的【Select(Esc)】进入主机的显示页面,选择【Desktop】—>【Command Prompt】,主机命令提示符输入 arp -d 即可清空主机 arp 缓存表,再次打开ARP Table即可看见缓存表为空:

路由器清空 ARP 缓存方法:进入路由器命令行界面,进入特权模式,输入 clear arp,或点击重新给设备上电按钮直接重启,可以通过开关路由器接口的开关以重置路由器的ARP缓存表:

重复步骤一:

步骤一中PC0、PC2与路由器2的ARP缓存表的初始状态如下左图所示,最终状态如下右图所示,由于我们上述实验内中步骤一的初始状态各个ARP缓存表即为初始状态,因此重复步骤并未有太大区别:

重复步骤二:

1.重复步骤二前,PC0PC5、路由器2与路由器4ARP缓存表的初始状态如下图所示:

2. PC0开始发送ICMP数据包,但因为不知道下一跳的MAC地址,因此首先向交换机0发送ARP数据包,交换机 0 收到后广播给 PC1和路由器2PC1 由于不匹配自动丢弃该帧,路由器 2则接收该ARP数据包,同时在其ARP缓存表中记录了PC0IP地址、MAC地址与对应接口

3. 之后,路由器2需要回复信息给交换机0,交换机0则讲应答数据包转发给PC0,因此PC0ARP缓存表中记录下了路由器2PC0所在网络连接的接口的IP地址、MAC地址并与交换机的接口相对应起来

4. PC0ARP缓存表存有下一跳的IP地址与MAC地址后,PC0向交换机0发送ICMP数据包,交换机0转发给路由器2,但此时路由器2不清楚下一跳的MAC地址,因此需要发送ARP数据包给路由器4路由器4收到路由器2ARP数据包,同时记录下路由器2对应的IP地址、MAC地址与其对应的接口信息

5. 路由器4向路由器2返回应答包,路由器2接收到后同时在其ARP缓存表中记录下路由器4IP地址、MAC地址与其对应的接口信息

6.路由器4由于不清楚下一跳的MAC地址,需要向交换机2发送一个ARP数据包,而交换机2ARP数据包广播给PC4PC5PC4丢弃,PC5成功接收,并记录下路由器4IP地址、MAC地址与对应的接口信息

7. PC5在收到路由器的4ARP数据包后需要回复一个应答包给交换机2,交换机2将此应答包转发给路由器4路由器4接收后,记录下PC5IP地址、MAC地址与对应的接口信息

8. 在上一步骤结束后,即为ICMP数据包从路由器4发送到交换机2再转发给PC5的过程,在这一过程中PC0PC5、路由器2与路由器4ARP缓存表都不再发生变化。

总结:在此次的重复步骤二的实验中,其最大的改变在于路由器2连接的网络部分,由于发送端不再有其它主机的MAC地址信息,因此在向其它网络发送数据包的过程中,需要首先发送ARP数据包给路由器2记录下路由器2的MAC地址才可继续发送ICMP数据包,但此过程并不影响我们后续路由器4所在的网络间的数据传输,这也充分体现了我们互联网中,有路由器连接的各个网络相互之间互不影响的特点。

实验结果、分析与结论:

思考题:

1)配置新的网络 IP 地址、子网掩码、默认路由以及路由表的静态路由:

五个网络的网络地址分别为:192.168.11.0,192.168.11.64,192.168.22.0,192.168.11.128,192.168.44.0,网络掩码均为:255.255.255.192,相邻路由器所在网络地址为:192.168.11.64与192.168.1.128。对于每个设备,按照下表在配置窗口中配置合理的 IP 地址和子网掩码:

主机

IP地址

子网掩码

PC0

192.168.11.2

255.255.255.192

PC1

192.168.11.3

255.255.255.192

PC2

192.168.22.2

255.255.255.192

PC3

192.168.22.3

255.255.255.192

PC4

192.168.44.2

255.255.255.192

PC5

192.168.44.3

255.255.255.192

对于路由器的各端口配置如下:

主机

IP地址

子网掩码

路由器0-0

192.168.11.1

255.255.255.192

路由器0-1

192.168.11.65

255.255.255.192

路由器1-0

192.168.11.66

255.255.255.192

路由器1-1

192.168.22.1

255.255.255.192

路由器1-2

192.168.11.129

255.255.255.192

路由器2-0

192.168.11.130

255.255.255.192

路由器2-1

192.168.44.1

255.255.255.192

根据实验要求,我们将所有主机和路由器的 IP 地址、MAC 地址、子网掩码都注释在相应设备处,网络的最终配置如下,其中我们可以发现路由器接口为红色,这是因为路由器接口尚未开启:

2)重复观察上述实验过程,要有必要的分析:

上述所有的实验过程与内容看上去复杂,但其实本质就是一个链路层与网路层相互协作传输数据包的一个过程,为方便理解与后续的学习,将该过程总结如下:

在数据准备发送之前,我们唯二已知的即发送主机与接收主机的两个IP地址,

首先是网络层部分:网络层部分的首要任务为数据包下一步应发往何处,即确定下一跳的IP地址,通过将目的IP地址与主机所在的网络的子网掩码做与运算,如果目的地址在本网络内部,则直接将数据包交由交换机进行转发,如果不在本网络内部,则将下一跳的IP地址认定为默认网关

已知下一跳的IP地址后,将数据封装成帧准备在链路层上进行数据传输,由此我们进入

链路层的部分:如果主机中的ARP缓存表已知IP地址与其对应的MAC地址,则直接发送ICMP数据包即可,但如果未知,则需要利用到ARP协议,由主机向路由器发送ARP数据包,通过接收应答包记录路由器的MAC地址,在得到MAC地址后,即可开始发送ICMP数据包

以上就是ICMP数据包从一个主机到其下一个地址的一个网络层与链路层协同工作的完整过程,这样一个过程实现了相邻地址间的数据的传输,此后,数据包从路由器到路由器,从路由器再到主机也都是上述过程的一个不断重复

3)在任务二中,路由器为什么会丢失数据包:

数据包被路由器丢弃的本质原因在于路由器不清楚数据包的下一跳地址直接原因在于路由器中的静态路由配置错误或不完善

当路由器接收到ICMP数据包后,路由器通过解析帧信息得到了目的地的IP地址,通过将目的IP地址与路由表中的各个选项的子网掩码做与运算,判断路由器需要将ICMP数据包发送给哪一个网络,也就是获得下一跳的IP地址,但如果路由器在路由表中没有找到与目的地址匹配的网络,自然无法获得下一跳的IP地址,也无法进行数据传输功能,因此会丢失该数据包。

虽然本人在此次实验中因为路由器网络配置与静态路由配置的正确,没有出现路由器丢失数据包的情况,但在与同学沟通交流的过程中发现许多同学都出现了上述的情况,我认为根本原因在于对于静态路由配置的原理理解不够准确:以思考题1中配置路由器1的静态路由为例,静态路由的作用在于帮助路由器1记录,当目的地址在网络3内时,路由器1中的ICMP数据包的下一跳的IP地址为路由器2的左侧接口。相信有了这样的理解后无论遇到什么样的网络大家都能为路由器配置正确的静态路由。

4)观察 3 个及以上路由器构成的网络的数据包转发过程:

以我们在步骤一中配置的由三个路由器组成的网络为例,我们从PC0向PC5发送数据包,观察数据包的转发过程:

1.首先我们利用之前实验准备中学习的打开ARP表的方法,分别打开PC0、路由器、路由器1、路由器2、PC5的ARP缓存表如下图所示,可以看到PC0与PC5的ARP缓存表为空,而路由器0、路由器1、路由器2中的ARP缓存表只有其接口信息:

2.PC0在判断目的地址与其并不在同一个网络后,需要将ICMP数据包发送给默认网关,也就是我们设定的路由器0与其网络连接的接口,但由于在其ARP缓存表中查询不到默认网关的MAC地址,因此需要发送一个ARP数据包给交换机0,交换机0将ARP包广播给路由器0与PC1,PC1丢弃,路由器0接收的同时记录下PC0IP地址、MAC地址与其对应的接口信息

3.路由器0接收到ARP数据包后,返回一个应答包给交换机0,交换机0则转发给PC0,PC0接收到应答包的同时,记录下路由器0IP地址、MAC地址与对应的交换机的接口信息,在已知MAC地址后,PC0即可向路由器0发送ICMP数据包

4.路由器0在接收到ICMP数据包后,根据解析其中的帧得到的IP地址了解需要发往的下一跳是路由器1,但由于在其ARP缓存表中没有路由器1对应接口的MAC地址,因此需要向路由器1发送一个ARP数据包,路由器1在接收ARP数据包的同时,记录下了路由器0左侧对应接口的IP地址、MAC地址与接口信息

5. 路由器1接收到ARP数据包后,返回一个应答包给路由器0,路由器0接收到应答包的同时,记录下路由器1右侧接口的IP地址、MAC地址与对应的交换机的接口信息,在已知MAC地址后,路由器0即可向路由器1发送ICMP数据包

6.路由器1接收到ICMP数据包后,解析得到目的IP地址结合静态路由得知ICMP需要发给路由器2,但由于ARP缓存表中没有路由器2的MAC地址信息,因此向路由器2发送ARP表,路由器2接收到ARP表后,同时记录下路由器1右侧的IP地址、MAC地址与接口信息

7. 路由器2接收到ARP数据包后,需要返回一个应答包给路由器1,路由器1接收到应答包的同时,记录下路由器2左侧接口的IP地址、MAC地址与对应的交换机的接口信息,在已知MAC地址后,路由器1即可向路由器2发送ICMP数据包

8.路由器2接收到ICMP数据包后,通过解析帧信息得知此数据包需要发送给所连接的网络中的PC5,但由于ARP缓存表中没有PC5MAC地址信息,因此向交换机1发送一个ARP数据包,交换机1广播给PC5,PC5接收到ARP数据包的同时,记录下路由器2IP地址、MAC地址与对应的交换机接口信息

9. PC5接收到ARP数据包后,需要返回一个应答包给交换机1,交换机1将应答包转发给路由器2,路由器2接收到应答包的同时,记录下PC5IP地址、MAC地址与对应的交换机的接口信息,在已知MAC地址后,路由器2即可向PC5发送ICMP数据包

10. 在上一步骤结束后,即为ICMP数据包从路由器2发送到交换机1再转发给PC5的过程,在这一过程中PC0PC5、路由器0、路由器1与路由器2ARP缓存表都不再发生变化。

实验心得与体会:

  1. 此次IP数据报发送和转发流程实验课的内容与操作虽多,但其实只要核心理解了网络层与链路层协同工作的原理,就可以轻松理解明白,所有的步骤不过是一个先网络后链路,先IP地址后MAC地址不断重复查询传输的过程,特别是ARP协议与MAC地址的查找我们已经使用了两次实验课的时间来学习掌握,因此本次实验课的内容相对原理来说也较为简单;
  2. 我们本次实验课中主要的实验步骤的观察集中在链路层上,也就是各个主机ARP缓存表的变化,同样也就是观察ARP数据包为什么要发,怎么发,发到哪里的问题。我认为ARP协议最大的有点在于它是一个自学习协议,如果ARP缓存表中没有目标IP地址对应的MAC地址,主机会自动发送ARP请求,除此之外,一个主机发送对应ARP数据包后,接收的和发送的ARP缓存表都能记录更新,这种自动学习和更新机制减少了手动配置的需要,同样也减少了数据传输中的工作量;
  3. 本次实验课中我认为收获最大之处,第一点在于对复杂网络的配置工作,在之前的实验中,我们都只是对少数几个主机进行了简单的IP地址与子网掩码的配置,而在此次实验中,我们不仅涉及到了多个网络间的IP地址配置,还通过特定要求自行设计了不同与课本与手册上的IP地址,除此之外,还了解了默认网关与静态路由等重要概念,加深了自我对IP地址知识的学习;
  4. 第二点,在于对路由器强大功能的理解:路由器作为用于连接不同的网络的桥梁,可以帮助数据包在相隔甚远的网络之间进行传播,也能够分割广播域,使得一个网络中的广播消息不会传播到其他网络中,这些功能都依赖于路由器中的路由表,路由器根据目标地址在其路由表中信息,决定将数据包转发到哪一个网络接口或路由器,这个过程就被称为数据包转发。
;