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


11

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

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

发送IP数据包时如何使用网关的IP地址?


1
数据包不“知道”,路由器决定路由器和所选网关之间存在的任何链路将其发送到哪个网关。(正如答案所指出的,以太网是IP流量的众所周知的通用第2层。)
Peter Cordes,

Answers:


14

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

服务器->交换机->路由器流量以及服务器->交换机->服务器流量是IP寻址实际上不起作用的地方。这是基础协议的世界,很可能是以太网。因此,这是一个在MAC寻址上运行的世界。

因此,您只需要解决默认网关是IP地​​址的困惑。是的,...在启动时...但是网关IP参数只需要做一件事,那就是问:谁在这里有192.168.1.1?答案是网关是MAC 88:99:aa:bb:cc:dd:ee:ff。(这是ARP查询/响应,即两个世界之间的转换程序。)数据包在以太网级别上到达该MAC,尽管事实上它可能在IP级别上拥有不同的目的地。

因此,通过在以太网帧的“目标MAC”字段中对数据包进行编码,可以将该数据包标记为到达所选网关。如果存在多个网关,则该字段确定该网络上的哪个网关将获取它。(“框架”是一个底层封套,用于保存数据包或部分数据包。)


2
我走得更远,说这是实际上唯一回答问题的唯一答案。
彼得·格林

3
同样,它不仅适用于默认网关,还适用于路由表中任何条目的“下一跳”地址。
彼得·格林

2
当然,除了以太网以外,还有其他的1/2层协议。IEEE LAN协议具有MAC地址,但是其他协议则不使用任何东西。
罗恩·莫平

6

IP数据报头仅包含源和目标的地址信息。根据目的地,路由器应该知道下一步将数据包转发到何处,并且此信息存储在路由表中。

地址或其子网可能有静态路由信息,其余部分使用默认网关。在本地网络上通常是这种情况:可能存在到其他本地网络的静态路由,而其余部分(即Internet)可能是默认网关。如果有多个默认网关,即路由到0.0.0.0::,则活动网关将通过其“首选项”或“ 指标”值进行选择。

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


1
还值得一提的是基于策略的路由,其中​​可以根据各种标准(例如源ip或防火墙标记)选择不同的路由表。
布拉奇利

不要忘了解释一下,当有两个可能的匹配项时,最长的前缀匹配项优先于其他所有内容。
罗恩·莫平

问题不在于路由器如何转发数据包,而在于发送者首先如何将其发送到正确的路由器。
Barmar

@Barmar:这个问题的原始版本可以用两种方法解释,这回答了另一种方法。根据路由表选择路由器的过程在原始计算机上是相同的。因此,我仍然觉得这个答案很有用,而另一个答案却可以降低一层。他们互相补充。
Esa Jokinen

我刚刚检查了编辑历史记录。我没有发现原始版本有任何相关差异。问题是数据包如何到达由路由表确定的路由器。
Barmar

2

一种可能性是网络配置有第一跳冗余协议(FRHP),例如VRRP或HSRP。FHRP具有主机使用的虚拟网关地址,发送到该虚拟地址的流量被其中一台物理路由器接收,然后转发流量。如果主路由器发生故障,则辅助路由器可以确定并接管转发数据包。


在任何情况下,数据包都无法确定它们采用的路径。根据路由器路由表中的信息,每个数据包都独立且独立于其他任何数据包转发,并且如果路由表发生更改,则从同一源到同一目标的数据包可以采用不同的路径。

路由器通过三种方式学习路由:

  1. 直接连接的网络
  2. 静态配置的路由
  3. 通过动态路由协议

2

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

我想我回答了你的要求。我曾经想知道同一件事。您的问题也可以解释为主机如何根据给定的特定路由表来决定将外发数据包发送到哪个网关。


0

当然,要注意的一个细节是路线是否匹配。如果我发送到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页上描述了“选项”部分)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.