假设在同一网络上存在两个网关。如果我理解正确,那么发送方计算机上的IP路由表将决定通过哪个网关路由哪些数据包。
IP路由表包含网关的IP地址。
发送IP数据包时如何使用网关的IP地址?
假设在同一网络上存在两个网关。如果我理解正确,那么发送方计算机上的IP路由表将决定通过哪个网关路由哪些数据包。
IP路由表包含网关的IP地址。
发送IP数据包时如何使用网关的IP地址?
Answers:
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”字段中对数据包进行编码,可以将该数据包标记为到达所选网关。如果存在多个网关,则该字段确定该网络上的哪个网关将获取它。(“框架”是一个底层封套,用于保存数据包或部分数据包。)
IP数据报头仅包含源和目标的地址信息。根据目的地,路由器应该知道下一步将数据包转发到何处,并且此信息存储在路由表中。
地址或其子网可能有静态路由信息,其余部分使用默认网关。在本地网络上通常是这种情况:可能存在到其他本地网络的静态路由,而其余部分(即Internet)可能是默认网关。如果有多个默认网关,即路由到0.0.0.0
或::
,则活动网关将通过其“首选项”或“ 指标”值进行选择。
当目的地之间存在多条路由时,事情就变得更加复杂,就像Internet级别的ISP之间一样。有几种在路由器之间共享信息的方法:路由信息协议(RIP),开放式最短路径优先(OSPF)和边界网关协议(BGP)。无论如何共享此信息,路由表都知道下一跳,而IP数据包仅知道其最终目的地。
当然,要注意的一个细节是路线是否匹配。如果我发送到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页上描述了“选项”部分)。