介绍
以太网交换机工作在第二层即数据链路层,用于在同一网络内部转发以太网帧. 但是,当源和目的IP地址位于不同网络时,以太网帧必须发送给路由器. 路由器负责在不同网络间传递报文,通过路由表来决定最佳路径. 当主机将报文发送至不同的IP地址时,由于主机无法直接与本地网络之外的设备通信,报文被转发至默认网关. 默认网关将数据流从本地网络路由至远端设备.
报文转发过程
路由器在一个接口接收报文并将它从另一个接口转发出去,这一过程的关键步骤是为输出链路将报文封装在适当的数据链路帧中.
路由器主要执行以下步骤:
- 将第二层的帧头和帧尾移除,解析出第三层报文.
- 检查IP报文的目的IP地址,在路由表查找最佳路由.
- 如果找到一条最佳路径,将三层报文封装到新的二层帧中,并将帧转发到输出端口.
如下图所示:设备有三层IPv4地址,以太网接口有二层数据链路地址. 在报文从原设备传输至目的设备的过程中,三层IP地址不会改变. 但是,每一跳随着报文在路由器被解封装和重新封装,二层数据链路地址都会改变.
-
发送报文
PC1给PC2发送报文时,首先确定目的IPv4地址是否同一网络(通过将IP地址和子网掩码做与操作):
同一网络:在ARP缓存表中查找目的IPv4地址的设备MAC地址,进行数据转发;如果ARP缓存没有找到,则PC1产生一个ARP请求获取目的IP地址的MAC地址.
不同网络: 转发请求给默认网关,默认网关的MAC地址和上述一致,ARP缓存表找到则转发, 找不到则发送ARP请求获取默认网关的MAC地址. -
转发至下一跳
R1从PC1接收到以太网帧后执行以下步骤:
- R1检查目的MAC地址,与接收端口FastEthernet 0/0相匹配,因此,将帧复制到buffer
- R1识别到以太网类型为0x800,意味着以太网帧的数据部分包含IPv4部分
- R1解封该以太网帧
- 由于目的IPv4地址与R1直连的任何网络都不相符,