IPv4寻址、子网掩码与CIDR
IPv4
IPv4地址长度为32位(4字节),通常以点分十进制记法(dotted-decimal notation)表示。例如11000001 00100000 11011000 00001001的点分十进制表示为193.32.216.9。
点分十进制把32位分成4个字节,每个字节写成0~255之间的十进制数,中间用点隔开:
| 二进制 | 11000001 | 00100000 | 11011000 | 00001001 |
|---|---|---|---|---|
| 十进制 | 193 | 32 | 216 | 9 |
IP地址由网络号(subnet part)和主机号(host part)构成,网络号相同的IP地址属于同一网段。
严格来说,IP地址标识的是主机或路由器的接口(interface),而不是设备本身。一台主机通常只有一个接口;路由器连接多条链路,每个接口都有自己的IP地址。同一网段内的接口不经过路由器就能直接通信。
IP地址分类
国际标准组织ISO将IP地址分为5大类。
A类地址的网络有(全为0和1的地址保留),每个网络能容纳个主机。
B类地址的网络有,每个网络能容纳个主机。
C类地址的网络有,每个网络能容纳个主机。
D类地址被用于多点广播(multicast),多点广播地址用来一次寻址一组计算机。
E类地址为将来使用保留,仅作实验和开发用。
按首字节的十进制范围也可以快速判断类别:A类为1~126,B类为128~191,C类为192~223,D类为224~239,E类为240~255。每个网络中主机号全为0的地址表示网络本身,主机号全为1的地址是该网络的广播地址,所以可分配的主机数都要减2。
国际规定有一部分IP地址用于局域网,不在公网中使用。它们的范围是:
- 10.0.0.0 10.255.255.255
- 172.16.0.0 172.31.255.255
- 192.168.0.0 192.168.255.255
此外还有一些特殊地址:127.0.0.0/8用于本机环回测试(例如127.0.0.1),0.0.0.0表示“本主机”(主机还不知道自己的地址时使用),255.255.255.255是本地链路上的受限广播地址。
知识测验
子网掩码(subnet mask)
目前因特网的地址分配策略采用的是无类别域间路由选择CIDR(Classless InterDomain Routing),IP地址的形式为a.b.c.d/x,其中最高x位构成了IP地址的网络部分。
这样就能够把每类IP地址进一步分成更小的网络,从而显著提高了IP地址的分配效率,有效解决了IP地址资源紧张的局面。例如200.23.16.0/23表示IPv4地址的前23位为网络部分。
前缀长度/x也可以写成子网掩码:掩码的前x位全为1,其余位全为0。例如/23对应的掩码是:
把IP地址(address)与子网掩码(mask)逐位相与,就得到网络地址(network);主机号有位,其中全0和全1两个地址不能分配给主机:
| 项目 | 200.23.16.0/23 |
|---|---|
| 子网掩码 | 255.255.254.0 |
| 网络地址(主机号全0) | 200.23.16.0 |
| 广播地址(主机号全1) | 200.23.17.255 |
| 可分配地址 | 200.23.16.1 ~ 200.23.17.254 |
| 可分配主机数 |
主机发送数据报前也要用到掩码:它把自己的地址和目的地址分别与自己的掩码相与,如果得到的网络地址相同,就在本地链路上直接交付;否则把数据报交给默认路由器(默认网关)。
翻转比特,拖动网络号与主机号的分界
解锁完整互动实验、进阶解析与精选参考答案。
知识测验
子网划分
一个组织得到一个地址块之后,可以继续借用主机号的高位,把它划分成更小的子网。前缀每增加1位,地址块就被对半分开。不同子网可以使用不同的前缀长度,这称为变长子网掩码(VLSM)。为一个需要台主机的子网选择前缀时,应满足:
例如需要200台主机的子网至少要/24(254个可用地址),需要20台主机的子网至少要/27(30个可用地址)。分配时通常从需求最大的子网开始,以免小子网把地址空间切得零碎,导致大块地址无法连续分配。
把一个/23划分给四个部门
解锁完整互动实验、进阶解析与精选参考答案。
求192.168.10.77/26所在子网
某主机配置为192.168.10.77/26。求它的点分十进制子网掩码、网络地址、广播地址、可分配主机范围和可分配主机数。192.168.10.130与它在同一子网吗?
用Python判断两台主机是否在同一子网
不使用ipaddress模块,编写Python程序:把点分十进制地址转换为32位整数,套用前缀掩码,对每一对地址打印两个网络地址以及它们是否在同一子网。使用以下三组:192.168.10.77与192.168.10.100(/26),192.168.10.77与192.168.10.130(/26),200.23.17.5与200.23.16.200(/23)。