IPv4分类编址详解:A、B、C、D、E五类地址的设计原理与应用场景

IPv4分类编址详解:A、B、C、D、E五类地址的设计原理与应用场景

IP地址的本质与编址思想

在TCP/IP协议族中,IP地址承担着两个核心职责:标识网络中的主机、指明主机所属的网络。一个32位的IPv4地址在逻辑上被切分为**网络号(Network ID)和主机号(Host ID)**两个部分。这种分层结构是路由系统能够高效转发数据包的根基——路由器只需关注网络号即可完成跨网络的寻址,而无需记忆每一台具体主机的位置。

我做了十几年网络架构,每次给新人讲IP分类,都会从一个根本问题切入:为什么要分类? 答案是历史性的——上世纪80年代,互联网刚起步时,IETF需要一种简单的方式让设备从IP地址本身就能判断出网络号占多少位、主机号占多少位。于是有了基于地址首位特征的"分类编址"(Classful Addressing)方案,这就是A、B、C、D、E五类地址的由来。

分类编址的设计原理

32位地址的二进制表达

IPv4地址的标准书写形式是点分十进制(Dotted Decimal Notation),将32位二进制按每8位一组划分为四个八位组(octet),每组转换为十进制并以点号分隔。

二进制:11000000.10101000.00000001.00000001

十进制:192.168.1.1

每个八位组的取值范围是0~255(即2^8=256个值),整个IPv4地址空间共有2^32 ≈ 42.9亿个地址。

分类的判断依据

分类编址的精妙之处在于:地址的最高几位bit决定了它属于哪一类。路由器和主机收到一个IP地址后,只需检查首字节的二进制前缀,即可立刻知道网络号有多长。

类别首位bit特征首字节十进制范围默认掩码网络号位数主机号位数A类0xxxxxxx1 ~ 126255.0.0.08 位24 位B类10xxxxxx128 ~ 191255.255.0.016 位16 位C类110xxxxx192 ~ 223255.255.255.024 位8 位D类1110xxxx224 ~ 239无(组播)——E类1111xxxx240 ~ 255无(保留)——

A类地址详解

A类地址的结构

A类地址使用第一个八位组作为网络号,剩余三个八位组作为主机号。最高位固定为0,因此网络号的有效位数实际为7位。

结构示意:

0 网络号(7bit) 主机号(24bit)

+-+--------------+------------------------+

|0| NetID | HostID |

+-+--------------+------------------------+

数量与容量计算

可用网络数:2^7 = 128个,但实际可用为 126个(去掉0和127这两个保留网络)

每个网络可容纳主机数:2^24 - 2 = 16,777,214 台(减去网络地址和广播地址)

首字节范围:1 ~ 126

关键保留地址

0.0.0.0/8:表示"本网络",常用于默认路由和DHCP初始请求

127.0.0.0/8:环回地址段,最常用的就是 127.0.0.1,用于本机自测

10.0.0.0/8:RFC 1918规定的私有地址段,企业内网最常用

A类地址的典型场景

A类地址因为单网络主机数量极多,最初被分配给超大规模组织。比如:

3.0.0.0/8 → General Electric

9.0.0.0/8 → IBM

12.0.0.0/8 → AT&T

17.0.0.0/8 → Apple

19.0.0.0/8 → Ford Motor Company

我刚入行的时候特别震撼——一家公司就把1600多万个IP独占了。这也正是后来IPv4地址枯竭的重要原因之一。

B类地址详解

B类地址的结构

B类地址使用前两个八位组作为网络号,后两个八位组作为主机号。最高两位固定为10,因此网络号有效位为14位。

结构示意:

1 0 网络号(14bit) 主机号(16bit)

+-+-+----------------+------------------+

|1|0| NetID | HostID |

+-+-+----------------+------------------+

数量与容量计算

可用网络数:2^14 = 16,384 个

每个网络可容纳主机数:2^16 - 2 = 65,534 台

首字节范围:128 ~ 191

私有地址段

RFC 1918在B类范围中预留了:

172.16.0.0 ~ 172.31.255.255 (即 172.16.0.0/12)

注意这是一个连续的16个B类网络的集合,常用于中型企业内网。Docker默认网桥 docker0 通常使用 172.17.0.0/16 就在这个范围内。

B类地址的典型场景

B类适合中等规模组织,例如大学、跨国公司分部等。每个网络容纳6万多台主机,规模适中,曾经是高校最爱的资源——清华大学就拥有 166.111.0.0/16,北京大学拥有 162.105.0.0/16。

C类地址详解

C类地址的结构

C类地址使用前三个八位组作为网络号,最后一个八位组作为主机号。最高三位固定为110,网络号有效位为21位。

结构示意:

1 1 0 网络号(21bit) 主机号(8bit)

+-+-+-+----------------------+------------+

|1|1|0| NetID | HostID |

+-+-+-+----------------------+------------+

数量与容量计算

可用网络数:2^21 = 2,097,152 个

每个网络可容纳主机数:2^8 - 2 = 254 台

首字节范围:192 ~ 223

私有地址段

192.168.0.0 ~ 192.168.255.255 (即 192.168.0.0/16)

这个地址段几乎所有家用路由器、SOHO环境都在使用。192.168.1.1、192.168.0.1 是大家最熟悉的网关地址。

C类地址的典型场景

C类网络规模小但数量多,适合小型办公网、家庭网络、子分支机构。每个C类网络仅254台主机,正好契合小型LAN的实际需求。

D类与E类地址

D类:组播地址

D类地址不分网络号和主机号,整个32位作为一个组播组标识(Multicast Group ID)。

范围:224.0.0.0 ~ 239.255.255.255

典型用途:路由协议通信、视频会议、IPTV、流媒体推送

常见的D类地址:

224.0.0.1 所有主机组(all-hosts)

224.0.0.2 所有路由器组(all-routers)

224.0.0.5 OSPF 所有路由器

224.0.0.6 OSPF 指定路由器

224.0.0.9 RIPv2

224.0.0.18 VRRP

239.0.0.0/8 管理边界范围(私有组播,类似私网IP)

E类:保留地址

E类地址(240.0.0.0 ~ 255.255.255.255)被IETF标记为"保留供未来使用",至今未正式分配,普通主机收到目的地为E类的报文一般会丢弃。其中 255.255.255.255 是受限广播地址,仅在本地链路有效,不被路由器转发。

网络地址、广播地址、可用地址

每个网络中有两个地址不能分配给主机:

网络地址(Network Address)

主机号全为0的地址,用于标识这个网络本身。例如 192.168.1.0/24 中的 192.168.1.0 就是网络地址,路由表里写的也是这个。

广播地址(Broadcast Address)

主机号全为1的地址,发送到此地址的数据包会被该网络内所有主机接收。例如 192.168.1.0/24 的广播地址是 192.168.1.255。

主机地址数量公式

可用主机数 = 2^主机位数 - 2

举几个具体例子:

A类网络 10.0.0.0/8 可用主机 = 2^24 - 2 = 16,777,214

B类网络 172.16.0.0/16 可用主机 = 2^16 - 2 = 65,534

C类网络 192.168.1.0/24 可用主机 = 2^8 - 2 = 254

子网掩码与网络号的提取

子网掩码的作用

子网掩码(Subnet Mask)是一个与IP地址等长的32位数字,1的部分标识网络位,0的部分标识主机位。通过IP地址与掩码进行按位与(AND)运算,即可提取出网络号。

IP地址: 192.168.1.100 → 11000000.10101000.00000001.01100100

子网掩码: 255.255.255.0 → 11111111.11111111.11111111.00000000

按位与: 11000000.10101000.00000001.00000000

网络号: 192.168.1.0

默认掩码(Classful Mask)

A类:255.0.0.0 /8

B类:255.255.0.0 /16

C类:255.255.255.0 /24

CIDR斜杠表示法

/n 表示掩码前n位为1。这种表示法源自CIDR(无类别域间路由),简洁高效:

192.168.1.0/24 等价于 255.255.255.0

10.0.0.0/8 等价于 255.0.0.0

172.16.0.0/12 等价于 255.240.0.0

私有地址与公有地址

三段私有地址(RFC 1918)

类别地址段CIDR表示容量A类10.0.0.0 ~ 10.255.255.25510.0.0.0/81个A类网络B类172.16.0.0 ~ 172.31.255.255172.16.0.0/1216个B类网络C类192.168.0.0 ~ 192.168.255.255192.168.0.0/16256个C类网络

私有地址的核心特征是不可在公网上路由,必须经过NAT转换才能访问互联网。这是缓解IPv4枯竭的关键技术之一。

特殊用途地址

0.0.0.0/8 本网络(仅作为源地址)

127.0.0.0/8 环回地址

169.254.0.0/16 链路本地地址(APIPA,DHCP失败时自动分配)

100.64.0.0/10 运营商级NAT(CGN)

192.0.2.0/24 文档示例地址(TEST-NET-1)

198.51.100.0/24 文档示例地址(TEST-NET-2)

203.0.113.0/24 文档示例地址(TEST-NET-3)

分类编址的局限与CIDR的兴起

分类编址虽然简单直观,但存在严重的资源利用问题:

地址浪费问题

假设一个组织需要500台主机:

申请一个C类网络(254台):不够用

申请一个B类网络(65534台):严重浪费——剩下65000多个地址闲置

这就是经典的"C类太小、B类太大"困境。整个90年代,B类地址被以飞快的速度耗尽。

路由表膨胀

随着C类地址被大量分配,全球路由表迅速膨胀,给骨干路由器带来巨大压力。

CIDR的解决方案

1993年,RFC 1518/1519引入无类别域间路由(CIDR),彻底打破了A/B/C类的边界:

用 /n 形式自由指定网络位长度

支持变长子网掩码(VLSM),按需切分

通过路由聚合(Supernetting) 将多个连续网络合并为一条路由通告

举例:把4个连续的C类网络聚合:

192.168.0.0/24

192.168.1.0/24 → 聚合为 192.168.0.0/22

192.168.2.0/24

192.168.3.0/24

聚合后路由表中只需一条记录,大幅减少了表项数量。

实战:识别IP地址的类别

Python代码示例

def classify_ip(ip: str) -> str:

"""Identify the class of an IPv4 address based on the first octet."""

first_octet = int(ip.split('.')[0])

if 1 <= first_octet <= 126:

return f"{ip} -> Class A (default mask /8)"

elif first_octet == 127:

return f"{ip} -> Loopback (reserved)"

elif 128 <= first_octet <= 191:

return f"{ip} -> Class B (default mask /16)"

elif 192 <= first_octet <= 223:

return f"{ip} -> Class C (default mask /24)"

elif 224 <= first_octet <= 239:

return f"{ip} -> Class D (multicast)"

elif 240 <= first_octet <= 255:

return f"{ip} -> Class E (reserved)"

else:

return f"{ip} -> Invalid"

# Test cases

test_ips = [

"10.0.0.1",

"172.16.5.4",

"192.168.1.100",

"8.8.8.8",

"224.0.0.1",

"127.0.0.1",

]

for ip in test_ips:

print(classify_ip(ip))

输出:

10.0.0.1 -> Class A (default mask /8)

172.16.5.4 -> Class B (default mask /16)

192.168.1.100 -> Class C (default mask /24)

8.8.8.8 -> Class A (default mask /8)

224.0.0.1 -> Class D (multicast)

127.0.0.1 -> Loopback (reserved)

Linux命令行验证

# View interface IP address and mask

ip addr show eth0

# Calculate network and broadcast addresses

ipcalc 192.168.1.100/24

# Output example:

# Address: 192.168.1.100

# Netmask: 255.255.255.0 = 24

# Network: 192.168.1.0/24

# Broadcast: 192.168.1.255

# HostMin: 192.168.1.1

# HostMax: 192.168.1.254

# Hosts/Net: 254

子网划分实例

以C类网络 192.168.10.0/24 为例,划分成4个等长子网:

原网络:192.168.10.0/24,掩码 255.255.255.0

借2位作为子网位 → 新掩码 /26(255.255.255.192)

子网1:192.168.10.0/26 范围 .0 - .63 (可用 .1 - .62)

子网2:192.168.10.64/26 范围 .64 - .127 (可用 .65 - .126)

子网3:192.168.10.128/26 范围 .128 - .191 (可用 .129 - .190)

子网4:192.168.10.192/26 范围 .192 - .255 (可用 .193 - .254)

每个子网可容纳62台主机(2^6 - 2 = 62)。

🎈 相关推荐

粤苗接种App下载安装
365体育投注软件下载

粤苗接种App下载安装

📅 10-11 👀 4469
京东闪购价持续多久?和秒杀有区别吗?
365体育投注软件下载

京东闪购价持续多久?和秒杀有区别吗?

📅 12-06 👀 4257
分类:对〔神性〕具有特殊效果
英国365网站正规吗

分类:对〔神性〕具有特殊效果

📅 06-28 👀 263