📄 一句话概括
目标不在本网段就把包交给默认网关;路由器查路由表只答一件事——下一站去哪,逐跳接力直到终点。
📝 本节和前面几节的关系
本机配置认齐了,本节正式出门:包离开本网段的第一步,以及路由器这个指路人怎么指路。
一、为什么需要指路人
发包前先按掩码算一算:目标在不在我的网段? 在本网段:直接按 MAC 投递给对方(9.8 的 ARP 问门牌); 不在:把包交给默认网关——ipconfig 里的那个 192.168.1.1,通常就是家里的路由器。
二、路由表:只答下一站
路由器脑子里有一张路由表:目标网络 → 下一跳(交给谁); 它不背全球地图,每台只负责指一步:像问路时【去北京我不知道,但你先到济南】; 表里总有一条默认路由(0.0.0.0/0)兜底——不认识的统统交给上一级,正是它让逐跳接力能一路走到互联网骨干。
三、实验怎么做
跑 ipconfig 看【默认网关】——那是你的第一站指路人;
route print 还能看到本机自己的路由表——电脑其实也存着一张迷你指路表;
下一节用 tracert 把整条接力链亲眼列出来。
四、动手 Demo:查路由表决定下一跳
给 8.8.8.8 发包,看本机与路由器各按什么规则决定下一站。
rt = [("192.168.1.0/24", "直连"), ("0.0.0.0/0", "网关 192.168.1.1")]
target = "8.8.8.8"
for net, nexthop in rt:
hit = net.startswith("0.0.0.0") or target.startswith("192.168.1.")
print(net, "->", nexthop, "| 匹配" if hit else "| 不匹配")
实跑输出:
--------------------------------------------------------------------
实验 4——路由器是数据传输过程中的指路人
--------------------------------------------------------------------
发一个包给 8.8.8.8, 本机一看: 目标不在我网段, 怎么办?
交给【默认网关】——家里那台路由器(ipconfig 里的默认网关 192.168.1.1)。
路由器脑子里有一张路由表, 只答一个问题: 【下一站去哪】
路由表条目 下一跳 能匹配 8.8.8.8 吗
--------------------------------------------------------------------
192.168.1.0/24 直连, 从局域网口送 否(网段不符)
0.0.0.0/0 (默认路由) 运营商的下一台路由器 是(兜底全收)
本机(192.168.1.100) -> 网关(192.168.1.1) -> 运营商 -> …… -> 8.8.8.8
路由器不背全球地图, 每台只负责指一步——像接力问路:
【去北京? 我不知道, 但你先到济南】。9.6 就看这条接力链长什么样。
目标 8.8.8.8 不匹配局域网网段,落到默认路由——交给网关,第一跳完成。 每台路由器都在做同样的事:查表、转交——接力不歇直到终点。
30 秒实验
- 跑 ipconfig 记下你的默认网关,想想它大概是哪台设备。
- 跑 route print(需命令提示符),找出里面的默认路由那一行。
常见误区
- 以为路由器知道完整路线——它只存【下一跳】,路线是逐跳问出来的。
- 以为跨网段的包直接飞到目标——必须经网关接力,每跳都在换 MAC(9.8 实证)。
自测三问(点开对答案)
1. 目标不在本网段时包交给谁? —— 默认网关——通常就是家里的路由器。 2. 路由表回答什么问题? —— 只答【下一站去哪】,不背全程地图。 3. 默认路由的作用? —— 兜底——不认识的目标统一交给上一级。- ☐ 下一节(9.6 实验 5:查看路由器的路由过程)
相关笔记
- 实验 2:查看计算机的 IP 地址 — 网关那行就在这份输出里
- 🌐 计算机网络 · 索引 — 12 课第六章整章讲路由
- 💻 计算机是怎样跑起来的 · 索引