629 字
3 分钟
IP 路由与默认网关是如何工作的
IP 路由决定一个 IP 包从当前主机或路由器发往哪个下一跳。设备查路由表,按目的 IP 匹配路由前缀;多条路由匹配时通常选择最长前缀(最具体的网络),并依据度量、策略等规则确定出口和下一跳。路由表可包含直连网段、静态路由和动态路由协议学习到的路由。
主机若发现目的地址属于本地子网,会在本链路直接发送;若不属于本地子网,就把包交给默认网关。网关是下一跳路由器在本地网络上的接口地址。路由器逐跳查看目的 IP 并转发,每次转发都重新封装链路层帧,IP TTL/Hop Limit 递减以避免环路;经过 NAT 时 IP/端口还可能被改写。
路由器通常不修改普通 IP 包的源和目的地址(NAT 是例外),但会替换每一跳的二层头部。因此链路层 MAC 地址是逐跳的,而 IP 地址表示端到端网络层目的。配置错误的掩码、网关或回程路由都可能导致单向可达。
实际路由排查应分别看去程和回程。客户端能把包送到服务端,不表示服务端一定有回程路由;多网卡主机、非对称路由和策略路由都可能造成只通一个方向。traceroute 通过 TTL/Hop Limit 探测提供路径线索,但中间设备不响应探测时结果不完整,不能把星号直接判为故障。
常见追问
默认网关是什么?
当没有更具体的路由匹配时使用的下一跳。它通常是本地子网中的路由器地址,并非“整个网络唯一的出口”。
什么是最长前缀匹配?
若目的地址同时匹配 /16 和 /24,通常优先用 /24,因为它匹配位数更多、范围更具体。之后仍可能受路由优先级和策略影响。
路由器会改写 MAC 地址吗?
路由器转发到下一链路时会生成新的链路层帧,源和目的 MAC 因而变成该链路上的接口与下一跳;IP 层地址一般保持端到端含义。
TTL 为什么递减?
每经过一个路由跳点就递减,归零后丢弃并通常返回 ICMP 超时报文,避免路由环路中的包无限循环。
目录