一、 路由表 (Routing Table)
路由表是网络层进行路径选择的核心依据,它本质上是一份“网络交通地图”,告诉路由器去往不同目标网络应该走哪条路。
-
作用位置:主要存在于路由器中,主机中也有一张简化的路由表(通常只包含本地网络和默认网关)。
-
核心作用:当路由器收到一个IP数据包时,它会提取出数据包的目的IP地址,并在此表中查找匹配的条目,以决定将该数据包从哪个物理接口发送给**哪一个下一跳(Next Hop)**设备。
-
表的结构与展示:
目的网络地址 (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 |
【字段解析】
-
目的网络地址 (Destination Network):标识目标主机所在的网段地址。
-
子网掩码 (Netmask):与目的IP地址进行“与”运算,以判断该IP是否属于此目的网络。这是进行最长前缀匹配的关键。
-
下一跳 (Next Hop):指示数据包应该发往的下一个路由器的IP地址。
-
如果目标网络与路由器直接相连(如上表第一行),此项通常为
On-link
或全零,表示可以直接通过接口发送到目标主机。 -
如果目标网络是远程网络,此项则为通往该网络的下一个路由器的IP地址。
-
-
转发接口 (Interface):路由器用于发送数据包的物理端口(如
Eth0
、WAN0
等)。 -
度量值 (Metric):(可选) 一个表示路径“成本”的数值,由路由协议(如RIP的跳数、OSPF的Cost)计算得出。当存在多条去往同一目的地的路径时,路由器会优先选择度量值最低的路径。
特别注意:最后一行 0.0.0.0/0
是默认路由(Default Route)。当在路由表中找不到任何与目的IP匹配的条目时,数据包将按照默认路由的指示进行转发,这通常指向互联网出口。
二、 ARP缓存表 (ARP Cache)
如果说路由表是宏观的“跨省地图”,那么ARP表就是微观的“同城街道门牌号手册”。它的存在是为了解决一个根本问题:IP地址和MAC地址的转换。
-
作用位置:存在于所有启用IP协议的主机和路由器中。
-
核心作用:在同一个局域网(广播域)内,当一台设备(主机或路由器)知道目标设备的IP地址,但要实际发送数据(封装成以太网帧)时,它必须知道对方的MAC地址。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) |
【字段解析】
-
IP地址 (Internet Address):局域网内某台设备的IP地址。
-
MAC地址 (Physical Address):与该IP地址对应的设备的物理网卡地址。
-
类型 (Type):
-
动态 (Dynamic):通过ARP(地址解析协议)广播请求,并从对方的ARP应答中自动学习并缓存的条目。动态条目有一个生存时间(TTL),超时后会老化并被删除。
-
静态 (Static):由网络管理员手动配置的永久性条目,不会老化。
-
三、 两张表的协同工作流程
这两张表在数据转发过程中紧密配合,缺一不可。我们以“主机A(192.168.1.10
)向远程的主机B(172.16.10.20
)发送数据”为例,看看路由器R1(网关192.168.1.1
)是如何工作的:
-
数据包到达路由器:主机A将IP包封装在以太网帧中,目的MAC是其网关R1的MAC地址,发送给R1。
-
查找路由表:R1接收到帧,解封装后看到IP包的目的地址是
172.16.10.20
。它立即查询自己的路由表。 -
匹配路由条目:R1在路由表中进行最长前缀匹配,找到了
172.16.0.0/16
这一条目。- 获得转发信息:路由表告诉R1:“你应该把这个包发给下一跳路由器,它的IP地址是
10.0.0.2
,并且要从你的Eth1
接口发出去。”
- 获得转发信息:路由表告诉R1:“你应该把这个包发给下一跳路由器,它的IP地址是
-
查找ARP缓存表:现在,R1知道了下一跳的IP地址(
10.0.0.2
),但要封装成帧发送出去,它还需要10.0.0.2
这个IP对应的MAC地址。于是,R1开始查询自己的ARP缓存表。 -
获取下一跳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缓存表。
-
-
封装并转发:R1获取到下一跳的MAC地址后,将原始IP包重新封装成一个新的以太网帧,其中:
-
源MAC地址是R1的
Eth1
接口的MAC地址。 -
目的MAC地址是下一跳路由器
10.0.0.2
的MAC地址。 -
最后,将这个新帧从
Eth1
接口发送出去。
-