有人能向我解释一下 IP 路由的工作原理吗?
例如,如果我 ping 123.123.123.123,每个路由器如何知道要走哪条路,如转储中所示traceroute
。
答案1
如果您需要更多详细信息,请告诉我,此解释将简化。它并不完全准确,但应该能给您一个很好的解释。
它基本上会冒泡。当您执行 ping x 时。如果您的计算机在路由表中没有地址 x,它将转到网关(如果您查看路由表,它将是具有目标默认或的路由表0.0.0.0
),然后它将查看路由表以查看它是否有与此地址或 IP 范围匹配的路由,例如,如果它有123.123.123.0/24
路由,它将将其发送到与该路由关联的任何 IP 地址。如果没有,它将执行与您的计算机相同的操作,将其发送到默认路由。
以您的计算机为例,当您的 ISP 收到此信息时,这个过程将结束,它会将其发送到它知道有此地址的路由的任何对等方(或者很可能有,它们在该级别共享路由表)。然后发生相反的过程,它会向下移动到更具体的范围,直到到达有问题的计算机。
- 你的电脑(不匹配,发送到默认路由)
- 你的路由器(不匹配,发送到默认路由)->
- ....
123.0.0.0/8
路由器 X(与关联地址 10.10.10.1匹配)123.123.0.0/16
路由器地址为 10.10.10.1(与相关地址 123.123.0.1匹配)123.123.123.0/24
路由器地址为 123.123.0.1(与相关地址 123.123.123.1匹配)- 123.123.123.1 处的路由器直接连接到该计算机(或通过交换机),并且它向该计算机发送数据包,因为它知道该计算机的网卡 mac 地址。
命令route
和traceroute
(tracert
对于 Windows)可能有助于更清楚地说明这一点。在 UNIX 上,这些命令有一个-n
选项,使它们显示地址而不是特定地址的 DNS 名称。
使用路线,我的默认路线是显示为:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth0
这里的IFACE很重要,因为它告诉电脑这个192.168.1.1的路由器连接了什么网卡,我的电脑会把所有位置不明的数据包都通过网卡发送出去eth0
。
答案2
每个路由器都会收到一个带有目标地址的 IP 数据包。它会根据与目标最匹配的具体路由来选择下一跳。
如果我们从您的计算机开始,它将安装两条(可能更多,但“两条”是典型情况)路由。一条用于它所在的 LAN,另一条用于 0.0.0.0/0(“互联网”,通常称为默认路由)。如果您 ping 的机器不在 LAN 本地,则数据包将被发送到默认网关。
然后,每个中间路由器,直到连接目标 LAN 的路由器,都会做同样的事情。查找到达目的地的最具体路由,然后发送数据包。
中间路由器很可能已经使用一种或多种路由协议(BGP、OSPF 或类似协议)了解了最佳路由,以减轻管理负担并提供容错措施。