网络层-分组转发

网络层-分组转发

分组转发过程

以下使用的仿真软件为思科的PacketTracer,下载时需要登录。

网络拓扑图

image-20220417134634346

如上图有6个网络,分别为172.17.0.0,172.16.0.0,172.18.0.0,192.168.1.0,192.168.2.0,192.168.13.0

路由表内容

路由器A:

image-20220417135956130

路由器B:

image-20220417140117039

路由器C:

image-20220417140051951

交换机的MAC表

交换机1

image-20220417142306312

交换机0

image-20220417142404937

场景模拟:

场景1: PC2给PC4发送数据

  1. 主机PC2发送数据到交换机1 链路层MAC地址为: 源 (0006.2AD5.B396) >> 目的(0001.c936.C302)
  2. 主机PC2 在路由表中无法找到对应匹配条目,所以将默认网关设置为下一跳。
  3. 交换机1查找MAC表,将数据从端口3转发到路由器A。网络层IP地址为: 源 (192.168.1.3) >> 目的(192.168.2.1)
  4. 路由器A 在路由表找到通往目的IP地址(192.168.2.1)的路由条目。下一跳为 172.17.0.1,无法到达目的网络,无法直接交付,需要从端口2转发出去,到达路由器C
  5. 路由器C 在路由表找到通往目的IP地址(192.168.2.1)的路由条目。目的网络是直连网络。设备将下―跳设置为目的地址。直接从端口2转发出去,到达主机PC4
  6. 主机PC4 解析该数据包的目的IP地址设备的IP地址广播地址相匹配。设备将数据包解封装。
  7. 主机PC4 返回一个应答报文,目的IP为 192.168.1.3。该设备将默认网关设置为下一跳。

场景2: PC2给PC0发送数据

  1. 主机PC2发送数据到交换机1 链路层MAC地址为: 源 (0006.2AD5.B396) >> 目的(0001.c936.C302)
  2. 主机PC2 在路由表中无法找到对应匹配条目,所以将默认网关设置为下一跳。
  3. 交换机1查找MAC表,将数据从端口3转发到路由器A。网络层IP地址为: 源 (192.168.1.3) >> 目的(192.168.3.2)
  4. 路由器A 在路由表找到通往目的IP地址(192.168.3.2)的路由条目。下一跳为 172.18.0.1,无法到达目的网络,无法直接交付,需要从端口0转发出去,到达路由器B
  5. 路由器B 在路由表找到通往目的IP地址(192.168.3.2)的路由条目。目的网络是直连网络。设备将下―跳设置为目的地址。直接从端口0转发出去,到达主机PC0
  6. 主机PC0 解析该数据包的目的IP地址设备的IP地址广播地址相匹配。设备将数据包解封装。
  7. 主机PC0 返回一个应答报文,目的IP为 192.168.1.3。该设备将默认网关设置为下一跳。

问题

1、两个直连的主机设备在不同的网络中是是否可以直接通信?

image-20220417150522312

如上图:三台主机通过链路层设备交换机直接相连,PC11和PC5在同一个网络(192.168.0.0)中,PC22中另一个网络(192.168.0.248)中,但是细心的同学会发现,两个网络的IP地址范围中有重复的。网络是(192.168.0.248)是包含在网络(192.168.0.0)的中的。下面来进行三个场景模拟:

场景1:PC5给PC22发送数据

image-20220417151508464

发送失败,发送ICMP数据时没有MAC地址,所以需要能打过ARP协议获取目的MAC地址,但是ARP数据包发送失败,原因是因为目的主机接收到ARP数据帧时,检测到源IP地址与目的IP地址不在同一网络中,ARP进程直接丢弃该数据帧。所以ICMP数据包超时失败

目的IP地址: 192.168.0.253/24

目的网络掩码:255.255.255.248

目的地址范围: 192.168.0.248 ~ 192.168.0.255

源IP地址:192.168.0.1 (明显不在目的网络的IP地址范围内)

场景2:PC11给PC22发送数据

image-20220417153240715

数据发送成功,在PC22看来源IP在自己的网络IP地址范围内,所以认为是同一个网络中的设备,可以直接交付

目的IP地址: 192.168.0.253/24

目的网络掩码:255.255.255.248

目的地址范围: 192.168.0.248 ~ 192.168.0.255

源IP地址:192.168.0.254 (在目的网络的IP地址范围内)

场景3:PC22给PC5发送数据

  • 结果1:失败: 目的IP地址不在同一个子网内,且默认网关没有设置,数据包直接被丢弃,都没有从主机中发出

image-20220417154039494

  • 结果2:成功: 直接将目的IP设置为默认网关,这样PC22就会将数据发送给默认网关,再由默认网关进行转发(实际情况是默认网关即为目的主机,可以直接处理PC22主机的请求)。这样就可以获取到了目的主机的MAC地址,进而成功发送ICMP数据包。

image-20220417154626057

总结:

在不经过网络层设备时,两个主机发送数据需要双方都认为对方与自己处于同一网络(子网)中,这样才可以正常发送数据。但是因为主机是有网络层功能的,可以通过设置默认网关为目的主机的IP,这样就可以通过默认网关(其实也可以理解为使用网关来代替了路由器的功能)来进行转发数据包,从而实现通信。

2、路由器不同端口网络号重复会怎样?

**结果:无法配置,端口0:192.168.0.1/24 ,端口1: 192.168.0.253/30 这两个IP计算后的网络号虽然不同,但是网段内的IP地址范围有重叠,所以别说是不同端口的网络号相同,就是不同网络中的IP地址范围有重复都是无法成功设置的 **。

image-20220417161633034

3、一个路由器下怎么配置多个子网?

从上面的分组转发过程路由器不同端口网络号重复会怎样?可以知道,路由器通过不同端口来区分不同的子网,然后通过RIP协议或者手动设置等方式完善路由表,从而让路由器达到实现不同网段的路由转发功能的基础条件。

posted @ 2022-04-17 13:49  菜阿  阅读(404)  评论(0编辑  收藏  举报