Sim*_*hid 14 iptables ip-routing
假设同一网络上存在两个网关。如果我理解正确,发件人计算机上的 IP 路由表决定哪些数据包通过哪个网关路由。
IP 路由表包含网关的 IP 地址。
这个网关的IP地址在发送IP数据包时是如何使用的?
kub*_*zyk 17
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 级别拥有不同的目的地。
因此,通过设置以太网帧的“目标 MAC”字段,将数据包标记为去往选定的网关。如果有多个网关,该字段确定该网络上的哪个网关将获得它。(“框架”是一个底层胶囊,用于保存数据包或数据包的一部分。)
概括:虽然路由表是 IP 协议的核心,但当数据包通过线路时,它们的列说下一跳从未使用 IP 寻址实现。下一跳实际上总是使用以太网、MPLS 或其他底层协议:
$ ip route show
192.168.98.0/24 via 192.168.99.1 dev eth0
| | |
| <- IP world -> | <- underlying world -> |
| | |
Run Code Online (Sandbox Code Playgroud)
IP 数据报头只包含源地址和目的地址信息。根据目的地,路由器应该知道下一步将数据包转发到哪里,并且该信息存储在路由表中。
地址或其子网可能有静态路由信息,其余部分使用默认网关。这通常是本地网络的情况:可能有到其他本地网络的静态路由和其他本地网络的默认网关,即 Internet。在若干情况下,默认网关,即路由到0.0.0.0或::,活性人会通过它所选择的偏好或公制值。
当目的地之间有多条路由时,事情会变得更加复杂,因为在 Internet 级别的 ISP 之间存在路由。路由器之间共享信息的方法有多种:路由信息协议(RIP)、开放最短路径优先(OSPF) 和边界网关协议(BGP)。无论这些信息如何共享,路由表都知道下一跳,而 IP 数据包只知道其最终目的地。