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 = 11000000168 = 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/24IP 与掩码按位与,得到网络地址:
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~239 | IPv4 组播 |
| 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/16 | IPv4 链路本地范围,不能当作跨网段通信的常规地址 |
| 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 上可以先查看本机配置:
ipconfig /all再单独测试解析:
nslookup www.example.com如果 IP 通信正常,但域名解析失败,应检查 DNS 服务器地址、到解析器的连通性及查询结果。反过来,即使能解析出地址,也不代表目标端口或应用服务一定正常。
最终,一次按域名访问服务的过程可以连起来看:
查询域名 → 获得目标 IP → 查路由 → 确定下一跳 → 本地以太网通过 ARP 找 MAC → 发送数据下一篇:子网划分、VLSM 与 CIDR 汇总。