一、 路由表 (Routing Table)

路由表是网络层进行路径选择的核心依据,它本质上是一份“网络交通地图”,告诉路由器去往不同目标网络应该走哪条路。

目的网络地址 (Destination Network) 子网掩码 (Netmask) 下一跳 (Next Hop) 转发接口 (Interface) 度量值 (Metric)
192.168.1.0 255.255.255.0 On-link / 0.0.0.0 Eth0 1
172.16.0.0 255.255.0.0 10.0.0.2 Eth1 20
0.0.0.0 0.0.0.0 202.118.1.1 WAN0 10

【字段解析】

  1. 目的网络地址 (Destination Network):标识目标主机所在的网段地址。

  2. 子网掩码 (Netmask):与目的IP地址进行“与”运算,以判断该IP是否属于此目的网络。这是进行最长前缀匹配的关键。

  3. 下一跳 (Next Hop):指示数据包应该发往的下一个路由器的IP地址。

    • 如果目标网络与路由器直接相连(如上表第一行),此项通常为On-link或全零,表示可以直接通过接口发送到目标主机。

    • 如果目标网络是远程网络,此项则为通往该网络的下一个路由器的IP地址。

  4. 转发接口 (Interface):路由器用于发送数据包的物理端口(如 Eth0WAN0 等)。

  5. 度量值 (Metric):(可选) 一个表示路径“成本”的数值,由路由协议(如RIP的跳数、OSPF的Cost)计算得出。当存在多条去往同一目的地的路径时,路由器会优先选择度量值最低的路径。

特别注意:最后一行 0.0.0.0/0默认路由(Default Route)。当在路由表中找不到任何与目的IP匹配的条目时,数据包将按照默认路由的指示进行转发,这通常指向互联网出口。


二、 ARP缓存表 (ARP Cache)

如果说路由表是宏观的“跨省地图”,那么ARP表就是微观的“同城街道门牌号手册”。它的存在是为了解决一个根本问题:IP地址和MAC地址的转换

IP地址 (Internet Address) MAC地址 (Physical Address) 类型 (Type)
192.168.1.1 00-aa-00-62-c6-09 动态 (dynamic)
192.168.1.101 00-bb-00-73-d8-12 动态 (dynamic)
192.168.1.254 00-cc-00-84-e9-23 静态 (static)

【字段解析】

  1. IP地址 (Internet Address):局域网内某台设备的IP地址。

  2. MAC地址 (Physical Address):与该IP地址对应的设备的物理网卡地址。

  3. 类型 (Type)

    • 动态 (Dynamic):通过ARP(地址解析协议)广播请求,并从对方的ARP应答中自动学习并缓存的条目。动态条目有一个生存时间(TTL),超时后会老化并被删除。

    • 静态 (Static):由网络管理员手动配置的永久性条目,不会老化。


三、 两张表的协同工作流程

这两张表在数据转发过程中紧密配合,缺一不可。我们以“主机A(192.168.1.10)向远程的主机B(172.16.10.20)发送数据”为例,看看路由器R1(网关192.168.1.1)是如何工作的:

  1. 数据包到达路由器:主机A将IP包封装在以太网帧中,目的MAC是其网关R1的MAC地址,发送给R1。

  2. 查找路由表:R1接收到帧,解封装后看到IP包的目的地址是172.16.10.20。它立即查询自己的路由表

  3. 匹配路由条目:R1在路由表中进行最长前缀匹配,找到了 172.16.0.0/16 这一条目。

    • 获得转发信息:路由表告诉R1:“你应该把这个包发给下一跳路由器,它的IP地址是10.0.0.2,并且要从你的Eth1接口发出去。”
  4. 查找ARP缓存表:现在,R1知道了下一跳的IP地址(10.0.0.2),但要封装成帧发送出去,它还需要10.0.0.2这个IP对应的MAC地址。于是,R1开始查询自己的ARP缓存表

  5. 获取下一跳MAC地址

    • 情况A:ARP表中有记录。R1直接从表中查到10.0.0.2对应的MAC地址。

    • 情况B:ARP表中无记录。R1会通过Eth1接口发送一个ARP广播请求:“谁是10.0.0.2?请把你的MAC地址告诉我。” 目标路由器10.0.0.2收到后会单播回复其MAC地址。R1收到后,将此映射关系存入ARP缓存表。

  6. 封装并转发:R1获取到下一跳的MAC地址后,将原始IP包重新封装成一个新的以太网帧,其中:

    • 源MAC地址是R1的Eth1接口的MAC地址。

    • 目的MAC地址是下一跳路由器10.0.0.2的MAC地址。

    • 最后,将这个新帧从Eth1接口发送出去。