IP地址与路由基础:从子网掩码到网关转发的校招考点解析

IP地址与路由基础:从子网掩码到网关转发的校招考点解析 最近在帮几个准备校招的同学做模拟面试发现一个挺普遍的现象问OSI七层模型能背问TCP三次握手也能画图但一旦追问到IP地址和路由的细节——比如“给你一个IP和子网掩码怎么判断两台主机能不能直接通信”或者“ping不通的时候你会按什么顺序排查”很多人一下子就卡住了。这个现象很有意思。IP地址体系和路由基础几乎是所有校招技术公开课里排在最前面的内容看起来最简单但恰恰是面试官最喜欢用来区分候选人的题。因为这类题表面上考记忆实际考的是你有没有把“编址、寻址、转发”这条链路真正串起来。这篇文章不打算罗列概念定义而是从一个准备校招的视角把IP地址、子网掩码、网关、路由表、静态路由、动态路由这些词放进一条完整的逻辑链里。读完你会得到一套能应对追问、能拿去跑实验、也能迁移到真实排障的理解框架。1. 先把“路由”说清楚同一个词两种完全不同的工作1.1 网络里的路由不是前端里的路由如果你搜过“路由”这个词一定会看到两类完全不同的内容一边是linux添加路由、ospf动态路由配置实验、静态路由、bgp路由反射器另一边是vue路由、react和vue路由差异、vue3 vite 动态路由。这两类“路由”虽然都叫路由但工作层次完全不一样。前端路由单页应用SPA里URL 和页面组件之间的映射关系。vue-router、react-router 解决的是“浏览器地址变了页面渲染哪个组件”的问题。网络路由网络层设备根据路由表决定一个数据包从源地址出发该走哪条路径到达目的地址。这里的主角是路由器、三层交换机以及每一台主机上的路由表。校招笔试里如果出现“路由”这个词要先判断语境。如果题干提到 URL、组件、浏览器那是前端路由如果提到数据包、网关、下一跳、路由表那是网络路由。不少同学栽在没分清语境把 vue-router 的机制拿去回答网络层路由问题或者反过来。1.2 为什么面试官爱从“路由”切入因为这是一种成本极低的“分层”题。面试官只需要问你一个问题“在浏览器里输入一个网址到页面显示出来路由在这个过程中做了什么”你就会回答浏览器根据域名查 DNS拿到目标 IP应用层组装 HTTP 请求传输层建立 TCP 连接网络层把数据包交给路由决策判断目标 IP 在哪个网段下一跳是谁数据包经过若干路由器转发到达目标服务器服务器返回响应浏览器解析渲染前端路由再决定展示哪个页面。能把这个链路完整讲出来的人说明他对网络分层、IP地址、路由、DNS、HTTP 都有基本框架。讲不清楚的人后面任何追问都会露馅。这里也顺便提醒一句网络层路由和前端路由不是对立的它们是同一条请求链路上不同层次的分工。复习的时候不要只盯着一端试着把全链路走一遍。2. IP地址的本质不是一串数字而是一套编址规则2.1 为什么网络需要IP地址而不是只用MAC地址很多人背过“IP地址是网络层的地址MAC地址是链路层的地址”但不知道为什么。这就要回到一个基本问题寻址的规模不同。MAC地址是设备出厂时烧录在网卡上的物理地址全球唯一但它没有“位置”概念。你拿着一个MAC地址无法判断这个设备在哪个网络、离你有多远。如果全网设备都用MAC地址直连通信每个交换机要记住全网所有设备的MAC位置转发效率会非常低。IP地址不一样。它虽然也是数字但被拆成了“网络部分 主机部分”。网络部分决定了设备属于哪个网段主机部分决定了它在网段里的编号。这种带层级结构的编址方式让路由器只需要维护“到哪个网段走哪条路”而不需要知道网段里每一台设备的精确位置。这就像寄快递IP地址的网段部分相当于城市和街道MAC地址相当于具体门牌号。快递员先按城市分拣到了街道再按门牌号送到门口。如果所有快递都只写门牌号分拣中心根本无法工作。2.2 面试高频的特殊地址127.0.0.1、私有地址、广播地址热词搜索里有一批高频问题127.0.0.1是什么ip地址、ip地址 子网掩码 网关、一张网卡二个ip地址。这些都是校招的常见考点而且面试官喜欢连环追问。先看 127.0.0.1。它是 IPv4 的环回地址Loopback Address表示“本机”。访问 127.0.0.1数据包不会离开本机网卡而是在本机网络协议栈内部完成一次环回。所以它是一个非常好用的连通性测试工具如果 127.0.0.1 都 ping 不通说明本机 TCP/IP 协议栈有问题如果 127.0.0.1 ping 得通但局域网内其他主机 ping 不通问题就出在网卡配置、IP地址或链路层。再看私有地址。IPv4 地址空间有限于是划分了一段不对外路由的私有地址专门用于局域网内部。私有地址段CIDR表示地址范围10.0.0.0/810.0.0.0 - 10.255.255.255172.16.0.0/12172.16.0.0 - 172.31.255.255192.168.0.0/16192.168.0.0 - 192.168.255.255私有地址的特点是在公网不能直接路由访问公网时需要通过 NAT网络地址转换映射为公网地址。所以你家里的路由器一般都用 192.168.x.1 作为管理地址因为这是私有地址段里最常见的内网网段。广播地址也经常考。以 10.10.7.64/26 这个网段为例它的广播地址是主机位全为 1 的那个地址也就是 10.10.7.127。发给广播地址的数据包会发给网段内所有主机。2.3 一张网卡配置多个IP地址是什么场景热词里有“一张网卡二个ip地址”这也是个容易被追问的点。Linux 下可以给一张物理网卡配置多个IP地址例如ip addr add 192.168.1.10/24 dev eth0 ip addr add 192.168.2.10/24 dev eth0这种做法的常见场景是服务器需要同时接入多个业务网段但物理网卡不够或者需要让同一个服务监听多个IP地址。注意配置多IP之后路由表里会同时出现多条直连路由系统在做源地址选择时会根据目标网段和路由优先级决定用哪个源IP发出数据包。如果路由策略没配好容易出现“能收包但回包走错网卡”的诡异问题。一个小建议校招面试时被问到多IP场景不用急着讲得很深先把“为什么需要多IP”和“多IP对路由选择的影响”说清楚就比大部分人强了。如果面试官继续追问再展开策略路由PBR相关内容。3. 子网掩码与子网划分校招笔试的固定送分题3.1 子网掩码到底在“掩”什么子网掩码Subnet Mask是 IP 地址体系里最容易被忽略却被考得最多的概念。它的作用只有一句话用来划分 IP 地址中哪些位是网络位哪些位是主机位。掩码写成二进制时前面是一串连续的 1后面是一串连续的 0。例如 255.255.255.0 对应二进制是 24 个 1 加 8 个 0所以也叫 /24。1 的部分代表网络位0 的部分代表主机位。判断两台主机是否在同一网段方法是用同一个掩码分别和两个 IP 做按位与AND运算如果结果相同说明网络位部分相同两台主机就在同一网段可以直接通过链路层通信不需要经过网关。举一个校招笔试最常见的例子主机A192.168.1.10/24主机B192.168.1.20/24掩码255.255.255.0192.168.1.10 与 255.255.255.0 按位与结果是 192.168.1.0。192.168.1.20 与 255.255.255.0 按位与结果也是 192.168.1.0。两者相同所以 A 和 B 在同一网段可以直接通信。如果主机 B 变成了 192.168.2.20/24按位与结果是 192.168.2.0和 A 的 192.168.1.0 不同就不在同一网段A 必须把数据包交给网关由网关路由转发。这个“按位与”的判断过程是所有网段计算题的核心。很多同学一开始觉得难其实是没理解“掩码决定边界”这个本质。3.2 算一个真实的校招题10.10.7.64/26 有多少可用IP热词里有一道很经典的题“10.10.7.64/26 有多少个可用ip地址”。先算主机位的位数。/26 表示网络位占了 26 位IPv4 总共 32 位所以主机位是 32 - 26 6 位。主机位有 6 位说明这个子网里一共有 2^6 64 个地址。但这 64 个地址里有 2 个不能用主机位全为 0 的地址网络地址代表整个网段本身10.10.7.64/26 就是网络地址主机位全为 1 的地址广播地址10.10.7.127。所以可用IP地址数量是 64 - 2 62 个。这道题的完整解法可以总结成四步看掩码位长算出主机位位数32 - 26 6算出子网地址总数2^6 64减去网络地址和广播地址64 - 2 62如果题目要求“可分配给主机的地址”再考虑网关占用实际可用的是网关地址加其余主机地址。注意这里有一个很容易踩的坑。如果把 /26 误以为是 26 个主机位就会算成 2^26得出一个巨大的错误答案。先做减法再做幂运算顺序不能反。类似的常见题还有 /30。/30 的主机位只有 2 位地址总数是 4可用地址是 2。常用于两个路由器之间的点对点链路因为只需要两个可用地址给链路两端。下面这张常用掩码换算表建议背到条件反射掩码CIDR主机位数可用主机数255.255.255.0/248254255.255.255.128/257126255.255.255.192/26662255.255.255.224/27530255.255.255.240/28414255.255.255.252/30223.3 子网划分题里最常见的三个坑第一个坑忘记减 2。只要是经典的主机数量题网络地址和广播地址不能分配给主机这个规则一定要刻在脑子里。只有一种特殊情况就是 /31 掩码。/31 只有两个地址按标准算法减 2 就是 0 个可用地址所以后来 RFC 3021 允许 /31 用于点对点链路两个地址都能用。但校招笔试题如果没特别说明默认还是要减 2。第二个坑把网关和广播地址搞混。网关通常使用网段内的第一个可用地址或最后一个可用地址但它仍然是一个普通主机地址不是一个特殊地址。很多路由器默认管理地址是 192.168.1.1也就是网段的第一个可用地址但这不是硬性规定。第三个坑掩码换算不熟。看到 255.255.255.192要能快速反应过来这是 /26主机位是 6 位。换算表不是为了背而背是为了在笔试时条件反射地用出来。4. 从IP到转发网关、ARP、路由表如何协作4.1 同网段和跨网段转发路径的分水岭一台主机要发送数据包首先会做一次“同网段判断”用本地掩码和目标IP做按位与看结果是否等于本地网络地址。如果在同一网段主机直接通过 ARP 协议广播查询目标 IP 的 MAC 地址然后封装以太网帧发送。整个过程不经过网关。如果不在同一网段主机会把数据包发给默认网关Default Gateway。网关通常是连接本网段和上游网络的路由器接口地址。这里的 ARP 值得注意。如果目标不在同一网段主机查询的是“网关 IP 的 MAC 地址”而不是“目标 IP 的 MAC 地址”。原因是数据包的网络层目标是最终目的IP但链路层的下一跳是网关。这个“网络层目标和链路层下一跳分离”的设计是理解路由转发的关键。4.2 网关配置错了会发生什么网关是校招面试里问得非常多、也最容易出场景题的点。常见的错误有三类没配网关主机只能和同网段设备通信跨网段直接“网络不可达”。网关配错比如把 192.168.1.2 配成了网关但 192.168.1.2 不是路由器的接口数据包会发到一个普通主机上对方收到后不知道该怎么处理直接丢弃表现为“能 ping 通网关但上不了外网”。网关本身不通网段里根本没有这个IP数据包发出去就是黑洞。排查网关问题有一个固定思路先 ping 本机回环地址确认协议栈正常再 ping 同网段的其他主机确认链路层正常再 ping 网关确认出口正常最后 ping 网关对端或公网地址确认路由策略正常。这个顺序也叫“由近及远”排障法。4.3 路由表查询的核心原则最长前缀匹配路由器不是“记住每一台主机怎么走”而是“记住每个网段怎么走”。它维护一张路由表表里的每一条记录通常包含目的网络/掩码、下一跳地址、出接口、路由来源直连、静态、动态。当一个数据包到达路由器时路由器会在路由表里查找匹配目标地址的路由条目。如果有多条路由都能匹配路由器选择最长前缀匹配Longest Prefix Match的那一条。前缀越长表示目的网络范围越精确。举个例子路由表里有两条路由一条是 0.0.0.0/0默认路由匹配所有地址一条是 192.168.1.0/24。数据包的目标地址是 192.168.1.10那么 192.168.1.0/24 这条路由的前缀是 24比 0.0.0.0/0 的 0 长所以路由器选择走 192.168.1.0/24。默认路由是一类特殊路由目的网络是 0.0.0.0/0用于匹配所有不在路由表里的目标地址。它是网络的“最后兜底”也是出口路由器的标配。如果你在自己的 Linux 机器上执行 ip route show通常会看到一行default via 192.168.1.1 dev eth0这就是默认路由意思是“去任何没明确路由的地方都交给 192.168.1.1 这个网关”。5. 静态路由和动态路由面试里怎么讲才有区分度5.1 静态路由不是“简单”而是“可控”静态路由是管理员手动配置的路由条目。它不会自动感知网络拓扑变化一旦链路断了静态路由不会自动切换到备用路径。看起来这是缺点但在特定场景下反而是优点。什么场景适合静态路由网络规模小、拓扑稳定不需要动态收敛需要精确控制流量走向不想让动态协议自己决定作为动态路由的备份或兜底。Linux 下添加静态路由的常见写法有# 添加一条到 10.10.20.0/24 网段的静态路由下一跳是 192.168.1.254 ip route add 10.10.20.0/24 via 192.168.1.254 # 查看路由表 ip route show # 删除路由 ip route del 10.