1863 字
9 分钟
网络学习(二):IPv4、子网掩码与 DNS,主机如何找到目的地

1. IP、MAC 和域名为什么要同时存在#

上一篇讲了交换机与 ARP。主机可以通过 ARP 找到邻居的 MAC,但实际访问网站时,输入的往往又是一个域名。

这几个概念解决的是不同层次的问题:

信息主要作用
域名给资源或服务提供便于使用的名字
IP 地址标识网络接口,并参与跨网络寻址
MAC 地址在当前以太网链路上交付帧
默认网关没有更具体路由时,把数据交给的下一跳

这一篇主要整理第二天和第四天笔记。先把地址本身看明白,再看域名怎样与地址联系起来。

2. 一个 IPv4 地址其实是 32 位#

IPv4 常写成点分十进制:

192.168.43.4

四段各占 8 位,所以每段范围是 0~255,总共 32 位。

每个字节从左到右的权重是:

128 64 32 16 8 4 2 1

课堂里的“凑”和“加”很好用:十进制转二进制,凑出对应的权重;二进制转十进制,把值为 1 的位置加起来。

192 = 128 + 64 = 11000000
168 = 128 + 32 + 8 = 10101000
43 = 32 + 8 + 2 + 1 = 00101011
4 = 4 = 00000100
192.168.43.4
= 11000000.10101000.00101011.00000100

反过来,00101110 = 32 + 8 + 4 + 2 = 46。

IPv6 则是 128 位,通常使用冒号分隔的十六进制表示。本文后续计算都针对 IPv4。

3. 子网掩码决定哪里是网络位#

只看到 192.168.43.4,还不能完整判断它属于哪个网段,需要配合掩码。

IP: 192.168.43.4
掩码: 255.255.255.0

这个掩码写成二进制是:

11111111.11111111.11111111.00000000

现代常用的连续掩码中,前面连续的 1 对应网络位,后面的 0 对应主机位。

这里有 24 个 1,所以也可以写成:

192.168.43.4/24

IP 与掩码按位与,得到网络地址:

192.168.43.4 AND 255.255.255.0 = 192.168.43.0

因此,这个普通 /24 子网里:

项目地址
网络地址192.168.43.0
主机地址范围192.168.43.1~192.168.43.254
广播地址192.168.43.255
TIP

不能只看最后一段判断某个地址能不能分配给主机。.0 和 .255 是否是网络地址或广播地址,取决于前缀长度。上面的结论针对这个 /24。

4. 同网段找对方,跨网段找下一跳#

假设主机配置如下,且没有额外的更具体路由:

IP: 192.168.43.4/24
默认网关:192.168.43.1

访问 192.168.43.20 时,目标属于本地直连网段,主机通过 ARP 查询目标本身。

访问 192.168.50.20 时,目标不属于本地网段,主机使用默认路由,查询网关 192.168.43.1 的 MAC。

关键在于:

目的 IP: 192.168.50.20,最终目标
目的 MAC: 网关的 MAC,当前这一跳

网关一般应当在主机能够直接到达的本地链路上。把它设置成一个普通的远端地址,主机就无法正常把第一跳交出去。

同时,IP 子网和广播域也不能完全画等号。二层范围由 VLAN 等结构决定,IP 子网由地址和掩码决定;入门拓扑通常让两者对应,是为了便于管理,并非两个概念本身相同。

5. A、B、C 类地址是理解历史的工具#

课堂介绍了传统分类地址:

类别首字节范围历史上的默认掩码或用途
A 类1~126 为常见普通范围/8
B 类128~191/16
C 类192~223/24
D 类224~239IPv4 组播
E 类240~255保留范围,包含需单独理解的特殊地址

按首位比特划分时,A 类覆盖首字节 0~127,但 0 和 127 有特殊用途,因此课堂中又会出现 1~126 的写法。

现在做地址规划和查路由,应该看 CIDR 前缀,而不是看地址“长得像哪一类”。例如 192.168.0.0/16 的网络位就是 16 位,不能因为首字节是 192 就强行套用 /24。

单播是一对一,广播面向本广播域,组播面向某个组。组播地址用于表示接收组,不能作为普通 IPv4 源地址。

6. 几类经常遇到的特殊地址#

地址或范围含义与使用时的注意点
127.0.0.0/8环回范围,最常见的是 127.0.0.1,表示本机
255.255.255.255受限广播,普通路由器不把它转发到其他网络
子网主机位全 0普通多接入子网的网络地址
子网主机位全 1普通多接入子网的定向广播地址
169.254.0.0/16IPv4 链路本地范围,不能当作跨网段通信的常规地址
10.0.0.0/8私有地址范围
172.16.0.0/12私有地址范围,即 172.16~172.31 开头的地址
192.168.0.0/16私有地址范围

这些特殊用途可对照 IANA 的 IPv4 特殊地址登记表;网络地址和广播地址的计算仍要结合具体掩码。

私有地址可以在不同的独立网络中重复使用。它们不能作为普通公网地址直接在全球互联网路由,家庭网络通常借助 NAT 与公网通信。

6.1 0.0.0.0 要结合上下文看#

这几个写法看起来相近,实际含义不同:

DHCP 初始报文的源 IP 0.0.0.0:客户端还没有可用地址
服务监听 0.0.0.0:通常表示监听所有本地 IPv4 接口
路由前缀 0.0.0.0/0:匹配所有 IPv4 目的地址的默认路由

因此,服务端显示监听 0.0.0.0:80,不代表另一台主机应该访问 http://0.0.0.0/。客户端应该使用服务器实际可达的地址。

7. DNS 把名字查询与网络寻址连接起来#

DNS 并不只保存“域名到 IP”的对应关系,但入门时最常遇到的是查询 A 记录或 AAAA 记录,分别获得 IPv4 或 IPv6 地址。

以 www.example.com 为例,可以从右向左理解名字层级:

根 .
└── com
└── example.com
└── www.example.com

客户端通常先向配置好的递归解析器查询。解析器如果已经缓存了有效结果,就可以直接返回。

缓存未命中时,简化过程是:

客户端 → 递归解析器:请给我最终结果
递归解析器 → 根服务器:向哪里查询 .com?
递归解析器 → .com 服务器:向哪里查询 example.com?
递归解析器 → 权威服务器:查询 www.example.com 的记录
递归解析器 → 客户端:返回结果,并按 TTL 缓存

递归强调替请求方继续完成解析;迭代则允许返回下一步应查询的服务器信息。实际解析可能涉及缓存、别名和多级委派,不是每次都完整走一遍这张图。概念可参见 RFC 1034。

这里 DNS 记录的 TTL 表示缓存有效时间,和 IP 首部限制转发寿命的 TTL 是两个不同用途。

8. 把排查分成两件事#

Windows 上可以先查看本机配置:

Terminal window
ipconfig /all

再单独测试解析:

Terminal window
nslookup www.example.com

如果 IP 通信正常,但域名解析失败,应检查 DNS 服务器地址、到解析器的连通性及查询结果。反过来,即使能解析出地址,也不代表目标端口或应用服务一定正常。

最终,一次按域名访问服务的过程可以连起来看:

查询域名 → 获得目标 IP → 查路由 → 确定下一跳
→ 本地以太网通过 ARP 找 MAC → 发送数据

下一篇:子网划分、VLSM 与 CIDR 汇总。

网络学习(二):IPv4、子网掩码与 DNS,主机如何找到目的地
https://bbcslook.top/posts/guide/hcia-02-ipv4-dns/
作者
BBCSLOOK
发布于
2026-10-16
许可协议
CC BY-NC-SA 4.0

评论区

CC