网络层-分组转发
网络层-分组转发
分组转发过程
以下使用的仿真软件为思科的PacketTracer,下载时需要登录。
网络拓扑图
如上图有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:
路由器B:
路由器C:
交换机的MAC表
交换机1
交换机0
场景模拟:
场景1: PC2给PC4发送数据
- 主机PC2发送数据到交换机1 链路层MAC地址为: 源 (0006.2AD5.B396) >> 目的(0001.c936.C302)
- 主机PC2 在路由表中无法找到对应匹配条目,所以将默认网关设置为下一跳。
- 交换机1查找MAC表,将数据从端口3转发到路由器A。网络层IP地址为: 源 (192.168.1.3) >> 目的(192.168.2.1)
- 路由器A 在路由表找到通往目的IP地址(192.168.2.1)的路由条目。下一跳为 172.17.0.1,无法到达目的网络,无法直接交付,需要从端口2转发出去,到达路由器C。
- 路由器C 在路由表找到通往目的IP地址(192.168.2.1)的路由条目。目的网络是直连网络。设备将下―跳设置为目的地址。直接从端口2转发出去,到达主机PC4
- 主机PC4 解析该数据包的目的IP地址与设备的IP地址或广播地址相匹配。设备将数据包解封装。
- 主机PC4 返回一个应答报文,目的IP为 192.168.1.3。该设备将默认网关设置为下一跳。
场景2: PC2给PC0发送数据
- 主机PC2发送数据到交换机1 链路层MAC地址为: 源 (0006.2AD5.B396) >> 目的(0001.c936.C302)
- 主机PC2 在路由表中无法找到对应匹配条目,所以将默认网关设置为下一跳。
- 交换机1查找MAC表,将数据从端口3转发到路由器A。网络层IP地址为: 源 (192.168.1.3) >> 目的(192.168.3.2)
- 路由器A 在路由表找到通往目的IP地址(192.168.3.2)的路由条目。下一跳为 172.18.0.1,无法到达目的网络,无法直接交付,需要从端口0转发出去,到达路由器B。
- 路由器B 在路由表找到通往目的IP地址(192.168.3.2)的路由条目。目的网络是直连网络。设备将下―跳设置为目的地址。直接从端口0转发出去,到达主机PC0
- 主机PC0 解析该数据包的目的IP地址与设备的IP地址或广播地址相匹配。设备将数据包解封装。
- 主机PC0 返回一个应答报文,目的IP为 192.168.1.3。该设备将默认网关设置为下一跳。
问题
1、两个直连的主机设备在不同的网络中是是否可以直接通信?
如上图:三台主机通过链路层设备交换机直接相连,PC11和PC5在同一个网络(192.168.0.0)中,PC22中另一个网络(192.168.0.248)中,但是细心的同学会发现,两个网络的IP地址范围中有重复的。网络是(192.168.0.248)是包含在网络(192.168.0.0)的中的。下面来进行三个场景模拟:
场景1:PC5给PC22发送数据
发送失败,发送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发送数据
数据发送成功,在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地址不在同一个子网内,且默认网关没有设置,数据包直接被丢弃,都没有从主机中发出
- 结果2:成功: 直接将目的IP设置为默认网关,这样PC22就会将数据发送给默认网关,再由默认网关进行转发(实际情况是默认网关即为目的主机,可以直接处理PC22主机的请求)。这样就可以获取到了目的主机的MAC地址,进而成功发送ICMP数据包。
总结:
在不经过网络层设备时,两个主机发送数据需要双方都认为对方与自己处于同一网络(子网)中,这样才可以正常发送数据。但是因为主机是有网络层功能的,可以通过设置默认网关为目的主机的IP,这样就可以通过默认网关(其实也可以理解为使用网关来代替了路由器的功能)来进行转发数据包,从而实现通信。
2、路由器不同端口网络号重复会怎样?
**结果:无法配置,端口0:192.168.0.1/24 ,端口1: 192.168.0.253/30 这两个IP计算后的网络号虽然不同,但是网段内的IP地址范围有重叠,所以别说是不同端口的网络号相同,就是不同网络中的IP地址范围有重复都是无法成功设置的 **。
3、一个路由器下怎么配置多个子网?
从上面的分组转发过程和路由器不同端口网络号重复会怎样?可以知道,路由器通过不同端口来区分不同的子网,然后通过RIP协议或者手动设置等方式完善路由表,从而让路由器达到实现不同网段的路由转发功能的基础条件。