我们知道,IP 地址(IPv4 地址)由 “网络标识(网络地址)” 和 “主机标识(主机地址)” 两部分组成,例如 192.168.128.10/24,其中的 “/24” 表示从第 1 位开始到多少位属于网络标识,那么,剩余位就属于主机标识了,但是,究竟从第几位开始到第几位算是网络标识,又是从第几位开始到第几位算是主机标识呢?关于这点,有约定俗称的两种类型,最初二者以分类进行区别,而现在基本以子网掩码(网络前缀)区分,不过,大家请注意,在有些情况下依据部分功能、系统和协议的需求,前一种的方法依然存在
一、IP 地址的分类
1、A 类地址
首位是 “0” ,从第 1 位到第 8 位是它的网络标识,后 24 位是它的主机标识,0.0.0.0 ~ 127.255.255.255
2、B 类地址
前两位是 “10” ,从第 1 位到第 16 位是它的网络标识,后 16 位是它的主机标识,128.0.0.0 ~ 191.255.255.255
3、C 类地址
前三位是 “110” ,从第 1 位到第 24 位是它的网络标识,后 8 位是它的主机标识,192.0.0.0 ~ 223.255.255.255
4、D 类地址
前四位是 “1110” ,从第 1 位到第 32 位是它的网络标识,224.0.0.0 ~ 239.255.255.255
D 类地址没有主机标识,常被用于多播
224.0.0.0 ~ 239.255.255.255 都是多播地址的可用范围,其中的 224.0.0.0 ~ 224.0.0.255 不需要路由控制,在同一个链路内也能实现多播,而在这个范围之外设置多播地址会给全网所有组内成员发送多播的包(可以利用生存时间(TTL,Time To Live)限制包的到达范围),此外,对于多播,所有的主机(路由器以外的主机和终端主机)必须属于 224.0.0.1 的组,所有的路由器必须属于 224.0.0.2 的组,类似地,多播地址中有众多已知的地址,它们中具有代表性的部分已列出,见下
5、E 类地址
一直未使用
6、特殊地址
- 主机标识全为0,就成了网络地址,代表这个局域网
- 主机标识全为 1,就成了广播地址,用于给同一个链路中相互连接的所有主机发送数据包
- 127.* 的地址用于本都环回(loop back)测试,通常是 127.0.0.1
7、广播地址
7.1、本地广播
在本地网络内的广播,例如网络地址为 192.168.0.0/24 的情况下,广播地址是 192.168.0.255,因为这个广播地址的 IP 包会被路由器屏蔽,所以不会到达 192.168.0.0/24 以外的其他链路上
7.2、直接广播
在不同网络之间的广播
由于直接广播有一定的安全问题,多数情况下会在路由器上设置为不转发
8、多播
多播可以穿透路由器,还可以将包发送给特定组内的所有主机
二、子网掩码(subnet mask)
随着互联网的覆盖范围逐渐增大,上述划分方案的局限性很快就显现出来了,例如,申请一个 B 类地址,理论上其子网内能允许 65000+ 台主机,A 类地址的子网所能允许的主机数只会更多,然而,在实际网络架构中,不会存在一个子网内有这么多主机的情况,因此大量的 IP 地址都被浪费掉了
针对这种情况提出了新的划分方案,称为无类别域间路由(Classless Inter-Domain Routing, CIDR)
- 引入一个额外的子网掩码来区分网络号和主机号
- 子网掩码也是一个 32 位的正整数,它对应 IP 地址网络号部分的位全部为 “1” ,对应 IP 地址主机号部分的位全部为 “0”
- 将 IP 地址和子网掩码进行 “按位与” 操作,得到的结果就是网络地址
- 网络号和主机号的划分与这个 IP 地址是 A 类、B 类还是 C 类无关
- 划分粒度比上述类地址更小
通过上例,我们可以看到,子网掩码长度可以不同(26 != 16),这就是可变长子网掩码(Variable Length Subnet Mask, VLSM),在 CIDR 被应用到互联网的初期,网络内部采用固定长度的子网掩码机制,也就是说,当子网掩码的长度被设置为 /25 以后,域内所有的子网掩码都得使用同样的长度,然而,有些部门可能有 500 台主机,另一些部门可能只有 50 台主机,如果全部采用统一标准,就难以架构一个高效的网络结构,为此人们提出组织内要使用可变长度的、高效的 IP 地址分配方式,于是产生了一种可以随机修改组织内各个部门的子网掩码长度的机制 - VLSM,它可以通过域间路由协议转换为 RIP2 以及 OSPF 实现,根据 VLSM 可以将网络地址划分为主机数为 500 个时子网掩码长度为 /23,主机数为 50 个时子网掩码长度为 /26,从而在理论上可以将 IP 地址的利用率提高至 50%