📄 一句话概括
IP 地址是 32 比特、8 位一组点分成 4 段的编号;实际使用时切成网络号+主机号两截——从哪切由子网掩码决定,分配时可以按需取任意长度。
📝 本节和前面几节的关系
1.1 节把消息写好了,但消息要寄给谁还没定;本篇开始认识收件地址——IP。
一、32 比特怎么写
二进制写起来太长,8 位一组换算成 0~255 的十进制, 点分四段——172.20.1.1 这样的写法。
二、网络号 + 主机号
地址前半截(网络号)标明在哪个网段, 后半截(主机号)标明网段里的哪台机器。 切分点不固定,由子网掩码说了算。
三、掩码的两种写法
255.255.255.0(四段写法)与 /24(位数写法)等价: 前 24 位是网络号。
四、动手 Demo:IP 地址的算术
把点分十进制和二进制对上号,再用掩码切一刀:
ip = [172, 20, 1, 1]
bits = ' '.join(format(x, '08b') for x in ip)
print('二进制:', bits)
mask = [255, 255, 255, 0]
net = [a & b for a, b in zip(ip, mask)]
print('网络号:', '.'.join(map(str, net)))
print('主机号:', ip[3])
实跑输出:
--------------------------------------------------------------------
IP 地址的算术
--------------------------------------------------------------------
32 比特、8 位一组点分成 4 段,先看两种写法等价性:
二进制 点分十进制
----------------------------------------------------
10101100 00010100 00000001 00000001 172.20.1.1
11000000 10101000 00000000 00000001 192.168.0.1
----------------------------------------------------
网络号 + 主机号怎么切,掩码说了算。掩码 255.255.255.0:
地址 172.20.1.1 AND 掩码 255.255.255.0
=> 网络号 172.20.1.0,主机号 .1
掩码也能写成位数:255.255.255.0 等价于 /24——
前 24 位是网络号,剩下 8 位归主机。
AND 运算就是按位取公共部分——掩码为 255 的段原样保留, 为 0 的段清零;这就是【切分点】的物理含义。
30 秒实验
- 用 Python 算 192.168.0.1/24 的网络号。
- 把掩码改成 /16,看网络号和主机号怎么变。
- 查一下自家路由器分配的地址和掩码,套一遍本节算式。
常见误区
- 以为 IP 地址总是按 8 的倍数切——掩码可以是任意位数(如 /27)。
- 以为点分十进制是一台机器的【名字】——它是编号,重装系统后可能换。
自测三问(点开对答案)
1. IPv4 地址有多少比特? —— 32 比特。 2. 255.255.255.0 等价于位数写法的什么? —— /24。 3. 网络号和主机号的切分点由什么决定? —— 子网掩码。- ☐ 下一节(1.2.2 域名和IP地址并用的理由)
相关笔记
- IP地址的结构(单播IP地址) —— 12 课的展开版
- IP地址范围的分隔符(子网掩码) —— 掩码细讲
- 🔌 网络是怎样连接的 · 索引