搜索
当前位置:首页 > 知识 > route路由

route路由

发表于 2026-10-17 06:19:29 来源:烟消火灭网

路由器收到一个数据包,拆开一看,目标地址是 192.168.1.100。它翻了翻自己的路由表,发现这个地址匹配到了 192.168.1.0/24 这一条,下一跳是 eth0。于是它把包从 eth0 扔了出去。整个过程不到一毫秒,没人觉得这有什么稀奇。

但路由这件事,本质上是一连串的"猜"。

你打开浏览器,输入一个域名,DNS 告诉你它对应 104.18.32.7。你的电脑不知道这个 IP 在哪,它只知道一件事:如果目标不在我所在的子网里,那就交给默认网关。默认网关是谁?通常是你家路由器,192.168.1.1。这一步就已经是一次路由决策了——你的电脑在问自己:这个包该不该我亲自送?不该,那就甩给网关。

网关拿到包,看目标 IP 是 104.18.32.7。它也不认识。但它有一条默认路由,指向运营商给的下一跳地址。于是包又被转手了。运营商的路由器拿到包,这回它认识——104.18.32.7 属于某个 BGP 宣告的网段,它知道往哪个方向送。一个数据包从你手指离开回车键,到抵达服务器,中间可能经过十几台路由器,每一台都在做同一件事:查表,匹配,转发。

路由表长什么样?你在 Linux 上敲 ip route,会看到类似这样的东西:

default via 192.168.1.1 dev eth0 192.168.1.0/24 dev eth0 proto kernel scope link 10.0.0.0/8 via 192.168.1.254 dev eth0

第一行是默认路由,意思是"其他所有我不知道的,都交给 192.168.1.1"。第二行是本地子网,直连,不用经过网关。第三行是手动加的一条静态路由,告诉系统去 10.x.x.x 的包走另一个网关。

匹配规则是"最长前缀优先"。如果目标地址是 10.1.2.3,它同时匹配 10.0.0.0/8 和默认路由 0.0.0.0/0,但 /8 比 /0 长,所以走 10.0.0.0/8 那条。这个规则简单到可以用一句话说清楚,但它是整个互联网能正常运转的基础之一。

有一次我在一台服务器上加了一条路由,写成了 ip route add 172.16.0.0/12 via 10.0.0.1,结果整个 172.16.0.0/12 的流量全被吸到了那台网关上。问题是那台网关只认识其中一小部分地址,剩下的全丢了。排查了半天才发现,我本来只想加一条 /24 的路由,手滑写成了 /12。前缀长度差了几位,影响范围差了几百万个地址。

动态路由协议做的事,就是让路由器之间互相告诉对方"我这边有哪些网段"。OSPF、BGP、RIP,名字不同,核心逻辑差不多:邻居之间交换信息,各自算出到每个目标的最优路径。BGP 是互联网的骨干协议,它不关心延迟、带宽这些"技术指标",它关心的是策略——哪个 AS 愿意帮你转发,哪个 AS 你不信任,哪条路径政治上更合适。BGP 选路经常选出一条延迟更高的路径,因为策略优先于性能。这事让很多网络工程师头疼,但互联网本来就是这么跑起来的。

家用场景下,路由通常简单得过分。你的手机连上 Wi-Fi,拿到一个 192.168.1.x 的地址,默认网关是路由器。路由器有一条默认路由指向光猫,光猫有一条默认路由指向运营商。就这么三层,没了。所有复杂的路由决策都发生在你看不见的地方——运营商的机房、IXP 的交换点、海底光缆两端的骨干路由器。

你访问一个网站,数据包可能在东京、洛杉矶、法兰克福各转了一次,每一跳都是一台路由器在查表。表是别人配的,规则是别人定的,路径是别人选的。你唯一能控制的是自己这台机器上的那张小表——而且大多数人从来没打开看过。

随机为您推荐
友情链接
版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright © 2016 Powered by route路由,烟消火灭网   sitemap

回顶部