IP 数据包如何知道要采用哪个网关?

IP 数据包如何知道要采用哪个网关?

假设同一网络上有两个网关。如果我理解正确的话,发送方计算机上的 IP 路由表将决定哪些数据包通过哪个网关进行路由。

IP 路由表包含网关的 IP 地址。

那么网关的这个IP地址在发送IP数据包时是如何使用的呢?

答案1

TL;DR:网关的地址仅存储在保存该 TCP/IP 数据包的以太网帧中

在服务器->交换机->路由器流量以及服务器->交换机->服务器流量中,IP 寻址实际上不起任何作用。这是底层协议的世界,很可能是以太网。所以这是一个依靠 MAC 寻址运行的世界。

因此,您只需要解决默认网关是 IP 地址的困惑。好吧,它是,有点像……向人类展示的那样……但该网关的 IP 是仅有的需要做一件事,那就是问:谁在这附近有 192.168.1.1?答案是网关是 MAC 88:99:aa:bb:cc:dd:ee:ff。(这是 ARP 查询/响应,两个世界之间的转换器。)实际使用的是 MAC。数据包在以太网级别转到该 MAC,尽管在 IP 级别数据包指定了最终接收方的完全不相关的目标 IP 地址。

因此,通过设置以太网帧的“目标 MAC”字段,数据包被标记为发往选定的网关。如果有多个网关,该字段将确定该网络上的哪个网关将接收该数据包。(“帧”是保存数据包或数据包的一部分的底层胶囊。)

概括:虽然路由表是 IP 的核心,但其名为 Next Hop 的列是绝不当数据包通过网络传输时,使用 IP 寻址实现。下一跳实际上始终使用以太网、MPLS 或其他底层协议:

$ ip route show
 192.168.98.0/24     via 192.168.99.1 dev eth0
|                   |                         |
|  <- IP world ->   | <- underlying world  -> |
|                   |                         |

上面,即使底层世界提到了类似的东西192.168.99.1,这是一个 IP 世界概念,它们实际上并不是字面意思。

答案2

IP 数据报头只包含源和目标的地址信息。根据目标,路由器应该知道下一步将数据包转发到哪里,这些信息存储在路由表中。

可能有静态路由地址或其子网的信息以及默认网关其余部分则使用。本地网络通常如此:可能存在到其他本地网络的静态路由和到其余部分(即 Internet)的默认网关。如果存在多个默认网关即路由到0.0.0.0::,活动路由由其选择偏爱或者公制价值。

当目的地之间有多条路由时,事情会变得更加复杂,就像 Internet 级别的 ISP 之间一样。路由器之间共享信息的方法有多种:路由信息协议(安息吧),开放最短路径优先(OSPF)边界网关协议(BGP)。无论如何共享此信息,路由表都知道下一跳,而 IP 数据包只知道其最终目的地。

答案3

简短而简单的答案:它没有被编码在数据包中,或者它是以太网目标地址,这取决于您如何看待它。 IP /以太网堆栈查看哪个网关处理目标IP地址,向网关IP地址发送ARP请求以获取其MAC地址,然后将数据包发送到网关的MAC地址。然后网关转发数据包并再次执行相同的操作。这假设以太网网络。

我想我回答了你的问题。我曾经也想知道同样的事情。你的问题也可以解释为,给定一个特定的路由表,主机如何决定将传出的数据包发送到哪个网关。

答案4

当然,需要检查的一个细节是路由是否匹配。如果我要发送到 192.0.2.55/24,并且有一条路由可用于到 10.55.0.0/16 的流量,那么这条路由将被忽略,因为它不适用。

通常会考虑的下一个标准是让更具体的路由优先于更一般的路由。我所说的“具体”路由是指较小的子网。换句话说,使用 /CIDR 表示法时数字较大,使用“子网掩码”表示法时子网掩码较大。换句话说,目标网络的可能地址较少。

因此,“默认网关”(也称为“最后手段网关”)通常为所有到 0.0.0.0/0 网络的流量指定一个目的地。任何较小网络的路由都将比该路由“更具体”,并将获得优先权。因此,192.0.2.0/24 将具有更高的优先级。

第三,路由通常有另一个字段,称为“度量”,有时也有不同的名称,如“优先级”。如果您有多个大小相同的网络,这可能会产生影响。

这些“度量”值可能是自动生成的(例如,使用更高速的网络来传输更多的流量),但可以手动调整。

所发送的 IP 数据包中编码的有关要采用的网关的信息在哪里?

IP 数据包不包含任何有关路由的信息,除了指定目标 IP 地址。路由详细信息由沿途处理路由的设备确定,并且此类详细信息通常不放在 IP 数据包中。(因此,设备不会查找此类详细信息,因为它不存在。由于设备不会查找此类信息,因此尝试包含此类信息是毫无意义的。)

RFC 791 第 11 页显示了 IP 数据包中信息的“ASCII ART”样式表。在该表之后,该文档显示了详细信息(例如,第 15 页描述了“选项”部分)。

相关内容