我是计算机网络的新手,根据我的研究,我了解到转发表将 MAC 地址映射到端口。所以它们被交换机使用。路由表将 IP 映射到 IP ..它们定义了应该用来发送数据的下一跳。所以它们被路由器使用。ARP 表将 IP 地址映射到 MAC 地址。我的问题是主机(包括路由器)需要这些表中的哪一个?很明显,ARP 必须在那里。但是我在某个地方研究过,所有主机都有自己的本地路由表……为什么?通过使用子网掩码,主机可以确定目标地址是本地地址还是其他网络。如果它在其他网络上,它需要知道默认网关 IP。本地路由表是否仅用于存储默认网关 IP?
主机的转发和路由表
所有主机都有自己的本地路由表...为什么?
除了本地环回接口外,主机还可以有多个外部接口,并且每个接口上可以有多个网关。它需要能够做出路由决策,尽管路由表通常非常小。使用默认网关只是最简单(也是最常见)的场景。
检查接口子网掩码和前缀以确定是使用网关还是直接发送(作为自己的网关)已经使用本地路由表。
如果仔细观察,这是一个非常简单的算法:对于路由表中的每个条目,应用网络掩码并比较前缀。如果相等,则使用指示的接口和网关。如果网关==本地接口 IP,则直接从该接口发送。
作为对@Zac67 答案的补充,以用户为例,而不是通过 VPN 连接(例如工作场所)。它现在有 2 个选项将流量发送到远程网络:像往常一样将流量发送到其本地网关或通过 VPN 隧道发送。
楼主怎么选?好吧,通过在其路由表中查找,该路由表在 VPN 隧道连接/断开连接时更新。
关于本地路由表,为什么需要它们?
即使主机不是路由器,如果它连接到 Internet,它也需要参与 IP 路由程序。IP 路由以分布式方式发生。想象一下,IP 数据包从主机 A 到主机 B,通过一个或多个路由器 R1、R2 ...... 主机 A 需要创建 IP 数据包。它还需要一个本地路由表,以便知道如何启动 IP 路由,指向主机 B。
在很多情况下,本地路由表非常简单,只有到自身的环回接口,以及默认网关 IP。从其他条目中“不知道”的所有内容都将转到默认网关。只有环回接口和默认网关的情况下,主机B的目的地址与环回不匹配,默认通过默认网关出去。
它通过本地路由表完成以支持很多灵活性,例如具有多个接口,例如,如果主机具有以太网接口和 WiFi 接口,并且一些流量通过一个,一些通过另一个。或者,如果有VPN,也可以通过本地路由表中的某种虚拟接口来反映。
基本上,本地路由表就像路由器中的 IP 路由表,只是源数据包都来自本地主机。就使用该表来决定将 IP 数据包发送到何处而言,它与路由器中的 IP 路由表非常相似。但是,在主机中,它不会像路由器那样从其他主机接收 IP 数据包并将其转发出去(使用相同的路由表)。