目录

从“有网口就要有 IP 吗”开始:一场关于子网与默认网关的对话

我会一些网络编程,也给电脑配置过 IP 地址、子网掩码和默认网关。但当别人问起“为什么这样填”,我发现自己还没有把这些知识连起来。

这篇文章根据一次学习对话整理。老师每次追问一个关键问题,学生先解释自己的理解,再通过例子修正。讨论以普通 IPv4 以太网为背景;先理解常规配置,再看规则的适用边界。

有网口,就必须有 IP 吗

学生:交换机不是有很多网口吗?是不是每个口都要配置一个 IP?

老师:先分清两件事。网口负责连接网线、传递信号;IP 地址用于 IP 层的寻址。能够收发以太网帧,并不意味着一定要配置 IP。普通二层交换机的接入端口,通常不需要逐个配置 IP。你觉得一台 24 口交换机连接 10 台电脑,需要因为它有 24 个端口,就额外分配 24 个 IP 吗?

学生:不需要。电脑各自需要 IP,交换机这些端口不需要各占一个。

老师:对。非管理型交换机通常插上就能工作。管理型二层交换机可以有管理 IP,方便管理员登录和配置;这个地址会占用一个可分配地址,但不是每个端口各占一个。三层交换机还有路由功能,我们后面再谈。

学生:所以我之前“有网卡、网口,就必须有 IP”的理解不准确。

老师:是的。电脑网卡即使没有配置 IPv4 地址,也仍然可以收发某些以太网帧。我们要根据它参与哪一层通信,讨论它需要什么地址。

交换机怎么找到电脑

老师:既然二层交换机的端口不用各自的 IP 来转发,它靠什么选择出口?

学生:MAC 地址和端口的映射。

老师:对。MAC 地址是以太网接口使用的链路层地址。电脑发送 IP 数据包时,会把它装进以太网帧:包里有目标 IP,帧里有目标 MAC。交换机主要根据帧的目标 MAC,查找对应的出口端口。

老师:假设 A 从端口 1 发来一个帧,交换机可以从中学到什么?

学生:A 的源 MAC 地址可以通过端口 1 找到。

老师:对,这条记录会进入 MAC 地址表。学习看源 MAC,转发看目标 MAC。如果目标 MAC 还没有记录,怎么办?

学生:向所有端口发送?

老师:要缩小范围:在普通转发条件下,复制到同一 VLAN 内,除接收端口以外的其他可转发端口。这叫泛洪。因此,MAC 地址表一开始为空,并不会让交换机完全不能转发。设备回复后,交换机还能继续学习。

VLAN 把什么分开了

学生:这里的 VLAN 是什么?

老师:VLAN 是虚拟局域网。先把它理解成:通过配置,把一台交换机分成几个彼此隔开的二层网络。例如端口 1 到 4 属于 VLAN 10,端口 5 到 8 属于 VLAN 20。端口 1 收到广播时,只向 VLAN 10 内的其他可转发端口传播,不会因此传播到 VLAN 20。

老师:如果 A 在端口 1,B 在端口 5,仅仅把两台电脑的 IP 配成同一子网,能打通这层隔离吗?

学生:不能。IP 配置不会自动改变交换机的 VLAN 配置。

老师:对。后面说“同一个 VLAN”,也默认端口之间实际连通、没有额外隔离策略。简单的即插即用交换机,可以先按所有端口处于同一个二层网络来理解。

子网掩码到底在划分什么

老师:现在回到电脑。IPv4 地址通常写成四段数字,例如 192.168.10.10。每段有 8 个二进制位,整个地址有 32 位。仅看地址长得相似,够不够判断两台电脑属于同一子网?

学生:还要看子网掩码。

老师:对。常规子网掩码用前面连续的 1 标记网络位,后面的 0 标记主机位。/24 表示前 24 位是网络位,等价于掩码 255.255.255.0。剩余 8 位可以变化,所以一个这样的子网包含 256 个地址。

老师:192.168.10.10/24 所在的范围是什么?

学生:192.168.10.0 到 192.168.10.255。

老师:对。普通 IPv4 子网中,主机位全为 0 的是网络地址,全为 1 的是广播地址,通常不分配给主机。所以这里一般可以分配 .1 到 .254,共 254 个。/31 点对点链路、/32 主机路由等有特殊用途,不能机械套用“减二”。

学生:那把这个 /24 划成 /26,到底是什么意思?

老师:就是把原来的地址范围分成更小的网络。网络位增加两位,主机位剩下六位,每个小子网有 2⁶ = 64 个地址。四个范围依次是 .0~.63、.64~.127、.128~.191、.192~.255。这表达的是地址规划;设备还需要实际配置对应的掩码,网络设备也需要配合。

老师:那么 192.168.10.130/26 的网络地址和广播地址是什么?

学生:.192 和 .255?

老师:那是下一个子网的边界。先找 130 落在哪一组:它在 128 到 191 之间。因此网络地址是 192.168.10.128,广播地址是 192.168.10.191,通常可分配 .129~.190。诀窍是先找整组范围,再取这一组的首尾。

学生:子网掩码似乎有很多用途。

老师:这些用途来自同一个规则:区分网络位与主机位。规划时,它决定子网容量;配置时,它帮助确定本机子网;发送时,它参与判断目标是否在本地。具体计算可以把本机 IP、目标 IP 分别与本机掩码做逐位与运算,也就是对应位都为 1 时结果才为 1;结果相同,就表示按这个掩码判断,两者的网络部分相同。

子网只能分成四个吗

学生:为什么总说分成四个?不能是其他数量吗?

老师:四个只是需求示例。一个 /24 完整划成等长子网时,改成 /25 得到两个,改成 /26 得到四个,改成 /27 得到八个。每多固定一位网络位,就把每个范围再分成两半。需要五个同等大小的网络,你会怎么选?

学生:划成八个,先用五个,保留三个。

老师:对,还要确认每个子网容量足够。/27 每个有 32 个地址,通常能分配 30 个;如果需要 20 台电脑和一个网关接口,总共 21 个地址,就够用。

老师:“一个 /24 不可能划分成恰好三个子网”,这句话总是成立吗?

学生:应该加上“大小相同,而且完整划分”。

老师:准确。如果大小可以不同,就能分为一个 /25 和两个 /26:前者覆盖 .0~.127,后两者覆盖 .128~.191 和 .192~.255。这种按不同容量划分的方法叫可变长子网划分,简称 VLSM。各范围必须正确对齐,并且不能重叠。

同一子网,还需要什么条件

老师:A 是 192.168.1.10/24,B 是 192.168.2.20/24。两者接在同一交换机、同一 VLAN,没有网关和其他路由。能正常进行 IP 通信吗?

学生:好像可以,因为可以得到对方的 MAC。

老师:这里遗漏了顺序:电脑先根据路由决定下一步交给谁,再设法取得相应的 MAC。A 判断 B 不在本地子网,又找不到可用路由,通常就不会直接询问 B 的 MAC。二层网络连通,不会自动补出 IP 路由。

老师:如果两者都改成 /16 呢?

学生:网络地址都变成 192.168.0.0,所以会尝试直接交付。

老师:对。当需要知道本地 IPv4 目标的 MAC 时,电脑会用 ARP,也就是地址解析协议,发出广播询问“谁拥有这个 IP”,目标设备再回复自己的 MAC。没有防火墙等其他阻碍时,两者现在可以通信。

老师:如果保持 /16,却把 A、B 分别放进 VLAN 10 和 VLAN 20 呢?

学生:A 仍然认为 B 在本地,会直接发起 ARP;但广播到不了 B,所以不能通信。

老师:正确。因此,掩码决定主机怎样判断,本地链路决定帧实际能否到达。仅仅改大掩码,不能跨过 VLAN 隔离。

学生:那加入路由器就行了吗?

老师:当前掩码下,仅加路由器还不够,因为 A 仍把 B 当成本地目标。常规做法是一个 VLAN 配一个不同的 IP 子网。例如 A 改为 192.168.1.10/24,B 改为 192.168.2.20/24,再让具备路由功能的设备分别连接两个 VLAN,并配置各自的网关。也可以把两者放回同一 VLAN、同一子网,直接通信。选择取决于是否需要保留隔离。

老师:还有一个前提:两台设备会各用自己的掩码判断。如果 A 是 192.168.10.10/24,B 是 192.168.10.70/26,它们的判断相同吗?

学生:不同。A 认为 B 在本地;B 所在范围是 .64~.127,认为 A 不在本地。即使 A 的数据到达 B,B 的回复也需要相应路由。

默认网关何时出场

学生:默认网关是不是用来转发所有跨子网数据的?

老师:先说简单配置:只有本地子网路由和默认路由时,本地目标直接交付,其他目标交给默认网关。更准确的规则是:发送前查路由表,没有更具体的匹配时,才使用默认路由。默认网关就是默认路由指定的下一跳设备。

老师:A 是 192.168.1.10/24,默认网关是 192.168.1.1。访问 192.168.2.80 时,A 查询谁的 MAC?

学生:远端 192.168.2.80 的 MAC?

老师:应查询本地网关 192.168.1.1 的 MAC。ARP 广播通常不会被路由器转发到远端子网。A 先把帧交给本地可以到达的网关。此时数据包的目标 IP 是谁?

学生:仍然是 192.168.2.80;只有当前帧的目标 MAC 是网关的 MAC。

老师:正确。路由器收到帧、取出 IP 数据包,再根据自己的路由决定下一跳,并为下一段链路重新封装。这里先不考虑 NAT 等地址转换。电脑把数据交给网关,也不意味着网关一定知道怎么送达,或者目标一定能回复。

老师:默认网关可以随意填一个远处的 IP 吗?

学生:不可以。普通以太网配置中,它通常需要在本机可以直接到达的子网内,否则连第一步交付都做不到。

老师:对。特殊的链路或显式路由配置可以有例外,但填写一个地址本身不会建立通路。

老师:如果路由表另外有一条:到 192.168.2.0/24 经由 192.168.1.254;默认路由则经由 192.168.1.1。访问 192.168.2.80 会选谁?

学生:选 192.168.1.254,因为 /24 比默认路由更具体。

老师:对。这叫最长前缀匹配:在匹配目标的路由中,优先选前缀更长的。默认路由写成 0.0.0.0/0,匹配范围最宽。依据是匹配长度,不是路由表的显示顺序。

老师:如果 192.168.1.254 关机,但那条具体路由仍保留、仍被系统选中,会自动改走默认网关吗?

学生:不一定。默认路由是匹配规则上的后备,不是自动故障接管的保证。

老师:正确。要改变选择,需要具体路由被撤销、调整,或有相应的故障切换机制。同样,“本地能访问,远端不能访问”也不能直接证明默认网关填错了;沿途路由、防火墙、目标设备和返回路径都可能影响结果。

换个情境检验理解

老师:最后只做一道综合题。A 是 10.1.2.10/24。路由表中,本地 10.1.2.0/24 直接交付;到 172.16.0.0/16 经由 10.1.2.254;默认路由经由 10.1.2.1。两个下一跳设备都在本地 VLAN 且正常。如果 ARP 缓存中没有对应记录,访问 10.1.2.80、172.16.5.20 和 192.168.8.8 时,分别查询谁的 MAC?如果删除默认路由,哪项访问会受影响?

读到这里,可以先停下来,用自己的话回答,再展开下面的推理。这是留给读者的新题,下面的示范答案不代表原学习者已经完成了这次检验。

展开示范推理

学生:访问 10.1.2.80,匹配本地子网路由,查询目标自己的 MAC。访问 172.16.5.20,匹配具体的 /16 路由,查询下一跳 10.1.2.254 的 MAC。访问 192.168.8.8,没有更具体路由,查询默认网关 10.1.2.1 的 MAC。

老师:删除默认路由后呢?

学生:按题目给出的路由,前两项仍有匹配路径;第三项失去可用路由。这里判断的是本机如何发送,不保证目标服务一定可用。

老师:回头看,你修正了哪些理解?

学生:有网口不一定要配置 IP;交换机的 MAC 表为空也能先泛洪。子网掩码决定网络位和主机位,计算边界要先找到所属范围。同一 VLAN 不等于同一 IP 子网,同一 IP 子网也不保证二层可达。电脑先选择路由,再确定查询谁的 MAC;默认网关只在默认路由被选中时使用。

老师:还有什么尚未确定?

学生:我还需要实际查看电脑的路由表和 ARP 缓存,验证发送过程。跨越第三段的子网计算、复杂 VLSM 规划,以及路由器连接多个 VLAN 的实际配置,也需要继续练习。现在我能解释基本关系,但不能因此说已经掌握所有网络故障排查。