当报文传递到中间路由器时,路由器在每一跳都会更新数据包的链路层头部(即MAC地址部分),以确保数据包能够继续正确转发到下一跳路由器。下面是具体的过程:
1. 中间路由器的MAC地址处理
- 每个中间路由器在接收到数据包后,会首先查看数据包的目标MAC地址。如果目标MAC地址匹配自己的某个接口的MAC地址,路由器就会接收这个数据包。
- 路由器接收到数据包后,会剥离掉数据链路层头部,因为在跨越每一跳时,新的链路层信息(即MAC地址)都需要重新封装。
2. 查找下一跳路由器
- 路由器查看数据包中的目标IP地址,并在自己的路由表中查找下一跳路由器(根据最长前缀匹配原则)。
- 路由表中的匹配条目会包含下一跳IP地址和要使用的出接口。路由器通过这一信息决定数据包的转发路径。
3. 重新封装链路层头部
-
路由器在决定出接口后,需要在链路层重新封装数据包的MAC地址部分:
- 源MAC地址:设置为当前路由器出接口的MAC地址。
- 目标MAC地址:设置为下一跳路由器的接口MAC地址。
-
如果当前路由器的ARP缓存中已有下一跳路由器的MAC地址,则直接使用该MAC地址。
-
如果ARP缓存中没有下一跳路由器的MAC地址,路由器会发起一个ARP请求,通过ARP协议获取下一跳路由器的MAC地址,并将该映射关系存入ARP缓存。
4. 转发到下一跳
- 路由器将封装后的数据包发送到出接口,通过新的链路层头部信息(包含更新的源和目标MAC地址)将数据包发送到下一跳路由器。
- 这种过程会在每一跳都重复,直至数据包到达最终的目的网络。
示例:中间路由器的MAC地址处理过程
假设数据包从设备A(IP地址192.168.1.10)发送到设备B(IP地址203.0.113.5),并需要经过以下路由器:
- 路由器1到路由器2再到路由器3(目标网络的边界路由器)。
在每一跳中,MAC地址的更新情况如下:
-
从设备A到路由器1:
- 源MAC地址:设备A的MAC地址。
- 目标MAC地址:路由器1接口的MAC地址。
-
从路由器1到路由器2:
- 路由器1剥离掉收到的数据包的链路层头部。
- 路由器1查找路由表,发现下一跳为路由器2。
- 路由器1封装新的链路层头部:
- 源MAC地址:路由器1的出接口MAC地址。
- 目标MAC地址:路由器2的接口MAC地址(通过ARP获得)。
- 路由器1将数据包发送给路由器2。
-
从路由器2到路由器3:
- 路由器2重复上述过程,查找路由表,确认下一跳是路由器3。
- 路由器2封装新的链路层头部:
- 源MAC地址:路由器2的出接口MAC地址。
- 目标MAC地址:路由器3的接口MAC地址(通过ARP获得)。
- 路由器2将数据包发送给路由器3。
总结
在传递过程中的每一跳,路由器都会更新链路层的源和目标MAC地址,设置目标MAC地址为下一跳路由器的MAC地址,从而逐步将数据包送往最终的目的地。这种更新使得数据包能够通过多个网络和路由器正确地传输到目标设备所在的网络。
2万+

被折叠的 条评论
为什么被折叠?



