在 IP地址分类 中,我们知道分类的 IP 地址有 A/B/C/D/E 类,为什么分类呢?
因为各种网络的差异很大,有的网络主机多,有的网络主机少,把 IP 地址划分成 A/B/C/D/E 类,是为了更好的满足不同用户的需求。
这里我们需要去解决一个问题, A 类、 B 类、 C 类,分别可以支持多少个网络,每一个网络里面又可以支持多少台主机?每一台主机至少要有一个 IP 。
A 类地址,由 8 位网络号和 24 位主机号构成, 8 位网络号的第一位是固定的 0 ,剩下的 7 位不固定,每一位有两种选择: 0 和 1 。所以, A 类可以支持的网络数是 2 的 7 次方, 128 个。 24 位主机号每一位可以是 0 ,可以是 1 ,所以,每一个 A 类网络可以支持的主机数是 2 的 24 次方,等于 16277216 ,但是有些网络号、主机号是不能分配的。
哪一些不能分配呢?
A 类地址不可分配的网络
8 位网络号全 0 的这个网络是保留不能被分配的,第一个可分配的网络号是 00000001
,最大网络号 01111111
,即 127 ,作为本地环回测试地址,不分配,最大的可分配的网络号是 01111110
,即 126 ,所以 A 类地址有两个网络号是不能分配的,一个是最小网络号保留,还有一个是最大网络号 127 用于本地环回测试地址,那么 A 类地址可分配的网络数就是 $ 2^{8-1}-2=126 $ 。
主机号由 24 位比特组成,第一个不能分配的主机号是主机号全 0 的,全 0 这种情况表示的是网络地址,还有就是主机号全 1 的,它表示的是这个网络里面的广播地址,所以 A 类网络里面不可以分配的主机号就包含这两个。那么一个 A 类网络里面可以分配的 IP 地址数量就是 $ 2^{24}-2=16777214 $ 。
什么是网络地址和广播地址?
比如我们分配一个 A 类的网络号 00000100
即 4 ,这个网络的网络地址,就是 4.0.0.0
,即主机号全是 0 ,广播地址是 4.255.255.255
,即主机号全是 1 ,这两个地址不能分配给这个网络里面的任何一个主机。
广播地址可以这样理解,当你发数据的时候,指定目的 IP 地址如果是广播地址,数据就会发送到这个网络里面所有的主机上。
网络地址,标识一个网络的位置,主要是让路由器寻址网络。
比如图中,我们有三个网络,每一个网络中有若干个主机,三个网络通过一个路由器连在一起,路由器有三个接口,每一个网络都有自己的一个网络地址,假设网络 N1 的网络地址是 4.0.0.0
,网络 N2 的网络地址是 10.0.0.0
,网络 N3 的网络地址是 11.0.0.0
,都是 A 类地址,这个网络地址就是用于寻址的。路由器中有一张路由表,路由表里面记录了网络地址和它对应的下一跳。比如 N1 网络中的某一主机,发消息给 N3 网络的某一主机,数据到路由器后,目的 IP 地址对应的网络地址是 11.0.0.0
,下一跳就从接口 2 出去,这样我们根据网络地址就可以找到这个网络在整个因特网上的位置。
A 类地址
对于 A 类地址,网络号是 8 位,最小的网络号 0 保留不分配,第一个可分配的网络号是 1 ,网络地址是 1.0.0.0
,最大网络号是 127 ,网络地址是 127.0.0.0
,本地环回测试使用,不分配,最小的本地环回测试地址是 127.0.0.1
,最大的本地环回测试地址是 127.255.255.254
,因为 127.255.255.255
是广播地址,最后一个可以分配的网络号是 126 ,对应的网络地址是 126.0.0.0
,除去最小网络号 0 和最大网络号 127 , A 类地址可以分配的网络数是 $ 2^{8-1}-2=126 $ 。每个 A 类网络中,除去主机号全 0 的网络地址和全 1 的广播地址,可以分配的 IP 地址数量是 $ 2^{24}-2=16777214 $ 。
B 类地址
B 类地址由 16 位网络号和 16 位主机号组成, 16 位的网络号中前面两位固定是 10 ,所以 B 类的这个网地址的最小网络号是 10000000 00000000
,也就是 128.0
,网络地址即后面的16 位主机号全 0 ,也就是 128.0.0.0
,广播地址即后面的 16 位主机号全 1 ,即 128.0.255.255
,最大网络号 10111111 11111111
,即 191.255
,这是 B 类地址最后一个可以分配的网络号,网络地址是 191.255.0.0
,广播地址是 191.255.255.255
,所以, B 类地址可以分配的网络数是 $ 2^{16-2}=16384 $ ,每个 B 类网络中,除去主机号全 0 的网络地址和全 1 的广播地址,可以分配的 IP 地址数量是 $ 2^{16}-2=65534 $ 。
C 类地址
C 类地址由 24 位网络号和 8 位主机号组成, 24 位的网络号中前面三位固定是 110 ,第一个可分配的网络号是 11000000 00000000 00000000
,也就是 192.0.0
,网络地址即后面的 8 位主机号全 0 ,就是 192.0.0.0
,广播地址即后面的 8 位主机号全 1 ,即 192.0.0.255
,最后一个可分配的网络号 11011111 11111111 11111111
,也就是 223.255.255
,网络地址是 223.255.255.0
,广播地址是 223.255.255.255
,所以, C 类地址可以分配的网络数是 $ 2^{24-3}=2097152 $ ,每个 C 类网络中,除去主机号全 0 的网络地址和全 1 的广播地址,可以分配的 IP 地址数量是 $ 2^{8}-2=254 $ 。
我们来看一个例子,
IP 地址 | 类别 | 是否可以分配 |
---|---|---|
0.1.2.3 | A | 否(保留的网络号) |
1.2.3.4 | A | 可分配 |
126.255.255.255 | A | 否(广播地址) |
127.0.0.1 | A | 否(本地环回测试) |
128.0.255.255 | B | 否(广播地址) |
166.16.18.255 | B | 可分配 |
172.18.255.255 | B | 否(广播地址) |
192.255.255.252 | B | 可分配 |
192.0.0.255 | C | 否(广播地址) |
196.2.3.8 | C | 可分配 |
218.75.230.30 | C | 可分配 |
223.255.255.252 | C | 可分配 |
每一个 IP 地址,根据左起第一个字节,即左起第一个十进制的值,可以判断网络类型,小于等于 127 的属于 A 类, 128~191 的属于 B 类, 192~223 的属于 C 类。
判断网络类别之后,根据网络类别,我们可以得到 IP 地址中的网络号和主机号, A 类地址网络号为左起第一个字节, B 类地址网络号为左起前两个字节, C 类地址网络号为左起前三个字节,根据网络号和主机号,我们可以判断这个 IP 地址是否可以分配,以下三种情况的地址不能分配: A 类网络号 0 和 127 ,主机号全 0 的网络地址,主机号全 1 的广播地址。
微信公众号「padluo」,分享数据科学家的自我修养,既然遇见,不如一起成长。关注【老罗说AI】公众号,后台回复【文章】,获得整理好的【老罗说AI】文章全集。