前言

补档篇No.1。原文写于2023年8月22日左右。

公司有台超古老的Linksys 路由器,搭测试环境时一直无法成功,后面发现是无法做回程路由(静态路由),导致下接三层交换机时全网无法访问。

原因

回程路由是指数据包在到达目的地后返回源头的路径。

对于路由器到三层交换机的通信,回程路由是确保数据包能够顺利地返回源设备,从而完成双向通信。具体流程如下:

  • 路由器会根据路由表来判断数据包的转发路径,并且在发送数据包之前,需要知道目的MAC地址。为了获取目的MAC地址,路由器会向局域网中的ARP广播请求(同网段内),询问哪个设备拥有该目的IP地址。配置了指向三层交换机的路由后,路由器就会将数据包发到连接三层交换机的端口,传递给三层交换机。
  • 当三层交换机收到这个ARP请求时,它会识别出自己是目的设备,并通过配置的指向路由器的路由,向路由器回复自己的MAC地址。
  • 一旦路由器接收到三层交换机的MAC地址,它就可以将数据包封装并通过路由表上的条目进行发送。

具体场景

延展

1.Router-Router

如果是两台主机用路由器跨网段通信(非点对点),则两个路由需要互相做路由互指的情况下即可完成跨网段通讯。

具体场景

主机A(PC1)的IP地址:192.168.1.2,子网掩码:255.255.255.0
主机B(PC2)的IP地址:192.168.2.2,子网掩码:255.255.255.0
路由器R1的接口IP地址(连接192.168.1.0/24):192.168.1.1
路由器R1的接口IP地址(连接中间子网):192.168.3.1
路由器R2的接口IP地址(连接中间子网):192.168.3.2
路由器R2的接口IP地址(连接192.168.2.0/24):192.168.2.1

具体流程

  1. 主机A判断目的地址
    • 主机A判断目标IP地址(192.168.2.2)不在它的子网内,因此需要发送到默认网关(192.168.1.1)。
  2. 主机A获取默认网关的MAC地址
    • 主机A发送ARP请求广播:Who has 192.168.1.1? Tell 192.168.1.2
    • 路由器R1回复:192.168.1.1 is at AA:BB:CC:DD:EE:FF
    • 主机A将路由器R1的MAC地址缓存到ARP表中。
  3. 主机A发送数据包到路由器R1
    • 数据包的目标IP地址:192.168.2.2
    • 数据包的目标MAC地址:AA:BB:CC:DD:EE:FF
  4. 路由器R1查找路由表
    • 路由器R1查找路由表,发现到192.168.2.0/24的下一跳是192.168.3.2(R2)。
  5. 路由器R1获取R2的MAC地址
    • 路由器R1在中间子网192.168.3.0/24内发送ARP请求:Who has 192.168.3.2? Tell 192.168.3.1
    • 路由器R2回复:192.168.3.2 is at BB:CC:DD:EE:FF:GG
    • 路由器R1将R2的MAC地址缓存。
  6. 路由器R1转发数据包到路由器R2
    • 数据包的目标IP地址:192.168.2.2
    • 数据包的目标MAC地址:BB:CC:DD:EE:FF:GG
  7. 路由器R2查找路由表
    • 路由器R2查找路由表,发现192.168.2.0/24是直接连接的网络。
  8. 路由器R2获取主机B的MAC地址
    • 路由器R2在192.168.2.0/24子网内发送ARP请求:Who has 192.168.2.2? Tell 192.168.2.1
    • 主机B回复:192.168.2.2 is at CC:DD:EE:FF:GG:HH
    • 路由器R2将主机B的MAC地址缓存。
  9. 路由器R2转发数据包到主机B
    • 数据包的目标IP地址:192.168.2.2
    • 数据包的目标MAC地址:CC:DD:EE:FF:GG:HH

小结

  • ARP请求和回复 在不同子网内分别进行:主机A与R1之间、R1与R2之间、R2与主机B之间。
  • 路由表 在路由器R1和R2中用于决定数据包的下一跳。
  • 数据包 在不同的网络段中会有不同的目标MAC地址,但目标IP地址保持不变。

也就是说,通过逐步解析和转发,数据包最终从主机A到达了主机B,主机AB成功完成了通讯流程。

2. Router to Router 点对点

而如果是两台路由跨网段通信(点对点),则需要互相做路由互指的情况下,同时在端口处绑定对方的MAC地址,才能够互相通讯。

以下是ARP协议的包结构,如下图1。

图1

以下是IP协议数据包结构,如下图2。

图2

人贵有自知之明。