ip地址的分类和组成

ip地址由网络号和主机号组成,由一个长度为32位的二进制字符表示。但是为了方便记忆,我们一般都转换为点分十进制格式来表示。

点分十进制

点分十进制是把ip地址每8个字节划分为一组,然后转换成四个十进制数字,最后用点分隔这四个十进制数字的表示方法,比如 ‭11000000‬ ‭10101000‬ ‭00000001‬ ‭00000001‬ 的点分十进制表示为192.168.1.1

ip地址的分类有很多种,这里我们深入讨论一下 A B C D E 这种分类。

ip地址32位二进制字符被划分为固定的位数来表示不同的含义,所以就有了A B C D E这五类ip地址。

如下图表示:

IP地址与子网掩码_子网


上图中虚线前面的几位表示网络类别,A类用0表示,B类是10,C类是110,D类是1110,E类是1111(这里有争议,按照规律推测应该是11110)

A类地址:

网络地址范围:1.0.0.0~126.0.0.0

IP地址与子网掩码_ip地址_02

IP地址范围:1.0.0.1~126.255.255.254

A类地址前8位表示网络号,而第一位又用来表示网络类型,所以2-8这7位用来表示网络号,最多可表示2^7=128个网络,然而网络号全为1的网络和网络号全为0的网络有特殊用途,所以A类地址最多有2^7-2=126个网络,

网络号全为1:01111111 也就是127.x.x.x 作为本地软件环回测试,我们常用的是127.0.0.1作为本地环回测试,实际上,如果我们本机搭建了服务器环境,并且开启了服务器环境,无论我们在浏览器地址栏输入127.0.0.2还是127.x.x.x都指向了本地。所以127网段整体都被保留为了本地测试ip。

网络号全为0:00000000 也就是0.x.x.x 作为保留地址,保留地址可以在内网中使用,不可以与公网通信。

后面24位表示主机号,有2^24=16777216,然而主机号全为0和主机号全为1也有特殊用图,所以A类地址每个网络上最多有2^24-2=16777214台主机。

主机号全为1:表示该网络上的所有主机,也就是说,主机号全为1是该网络上的广播地址,并不表示某台主机。

主机号全为0:表示该网络的网络地址,而该网络上没有任何主机

有一种特殊情况就是,网络号全为0,主机号也全为0,即 0.0.0.0,我们用它来表示没有获取到ip地址,即地址缺失。

如上分析,那么最终A类地址的范围是:1.0.0.1~126.255.255.254

ip地址空间共有2^32=4294967296个,A类地址空间占了2^7 * 2^24 = 2^31 个,占了整个ip地址空间的50%


B类地址:

网络地址范围:128.1.0.0~191.255.255.0

IP地址与子网掩码_ip地址_03

IP地址范围:128.1.0.1~191.255.255.254

B类地址前2个字节,也就是前16位表示网络号,而前2位已经固定为 10 用来表示B类网络,所以只剩下14位来表示网络号共有2^14=16384个,而128.0.0.0这个网络是不使用的(具体为何没有找到出处),所以B类的网络个数为16383个,每个网络上的主机个数为2^16-2=65534个,这里同样要除去主机号全为0 和 主机号全为1的ip,整个B类ip地址空间有约2^14 * 2^16 = 2^30 (能用不能用的都算上),大约占整个ip地址空间的25%


C类地址:

网络地址范围 :192.0.1.0~223.255.255.0

IP地址与子网掩码_子网掩码_04

IP地址范围:192.0.1.1~223.255.255.254

C类地址前3个字节,也就是前24位表示网络号,而前3位已经固定为 110 用来表示C类网络,所以只剩下21位来表示网络号共有2^21=2097152个,而192.0.0.0这个网络也是不使用的(具体为何没有找到出处),所以C类的网络个数为2097151个,每个网络上的主机个数为2^8-2 = 254个,这里同样要除去主机号全为0 和 主机号全为1的ip,这个C类ip地址空间约有 2^21 * 2^8 = 2^29个,占这个ip地址空间的12.5%


D类地址:

D类地址作为多播地址使用


E类地址:

E类地址保留为科研使用


通过上面的分析,我们可以得到下图

IP地址与子网掩码_子网_05

单播和多播:

其中 A B C类ip属于单播地址,D类ip属于多播地址。

专用IP地址(私有IP地址):

一个公司中或组织中,并不是所有的主机都需要和互联网直接相连的,所以如果ip地址不能复用的话,这样会造成严重的浪费,所以设计者就在A B C类地址中各保留了一段ip地址作为专用地址,它们可以在不同的内网中重复使用。这些地址不会被当作公用地址被分配。

私有地址的ip范围如下


类别

网络地址范围

IP地址范围

有效IP地址范围

地址前缀表示法

A

10.0.0.0

10.0.0.0~10.255.255.255

10.0.0.1~10.255.255.254

10.0.0.0/8

B

172.16.0.0~172.31.0.0

172.16.0.0~172.31.255.255

172.16.0.1~172.31.255.254

172.16.0.0/12

C

192.168.0.0~192.168.255.0

192.168.0.0~192.168.255.255

192.168.0.1~192.168.255.254

192.168.0.0/16


那么为什么在A  B  C类地址段都有私有地址段呢?

因为他们容纳的主机数量是不一样的,如果主机数量比较少,那么使用C类的私有地址就可以了,如果主机数量比较多(例如超过了C类网络可以容纳的主机数量),又想把它们划分在同一个局域网内,那么就应该根据具体数量,选用B类私有地址,或A类私有地址。

子网掩码概述:

此处我需要引用一段经典的解释来说明子网掩码的存在意义


  与IP地址关系最为紧密的要算子网掩码,在较复杂的网络中,子网掩码的作用并不比

IP地址弱。
  IP地址以网络号和主机号来标识网络上的主机,只有在一个网络号下的计算机之间才能
直接互通,不同网络号的计算机要通过网关(Gateway)才能互通,但这样的划分在某些情
况下显得并不十分灵活。为此IP网络还允许划分成更小的网络,称为“子网(Subnet)”,这
样就产生了“子网掩码”。
子网掩码用来判断任意两个IP地址是否属于同一子网络,只有在同一子网的计算机才能
直接互通。要将一个网络划分为多个子网,网络号将会占用原來的主机位。如对于一个C类
地址,标准规定是用24位来标识网络号,如要将其划分为两个子网,则需要占用1位原来
的主机标识位。此时网络号位变为25位,而主机号位则变为7位。同理,借用两个主机位
则吋以将一个C类网络划分为4个子网,依次类推。
  计算机可以从子网掩码中看出这一网络是否划分子网。子网掩码和IP地址一样有32位,
确定子网掩码的方法是将它与IP地址中标识网络号的所有对应位都用“1”表示,而与主机
号 对 应 的位都用“0”表示。如分为两个子网的C类IP地址用25位来标识网络号,则其子
网掩码为:11111111 11111111 11111111 10000000,即 255.255.255.128。于是,A 类地址的默
认子网掩码为255.0.0.0: B类EP地址的默认子网掩码为255.255.0.0; C类IP地址的默认子
网掩码为255.255.255.0。这就是在设置一个IP地址的子网掩码时通常不用手工输入,而是由
系统根据所配置的IP地址自动确定的原因。

  子网掩码不能单独存在,它必须结合IP地址一起使用才有意义。子网掩码只有一个作用,
就是将某个IP地址划分成网络地址和主机地址两部分。子网掩码确定了个IP地址的32位
二进制数字中哪些是网络号,哪些是主机号。这对于采用TCP/IP协议的网络来说非常重要,
只有通过子网掩码,才能表明一台主机所在的子网与其他子网的义系,使网络正常工作。如
在Windows2000Server中,给一个网卡指定IP地址,系统会自动填入一个默认的子网掩码。
比如,网卡所配置的IP地址为“192.168.1.10”,则系统会自动配置它的子网掩码为
“255.255.255.0”。—般情况下,使用默认子网掩码就可以了。
IP地址的子网掩码设置不是仟意的。如果将子网掩码设置得过大,也就是说子网范围扩
大,那么根据子网寻径规则,很可能发往和本地机不在同一子网内的目的主机的数据,会因
为错误的判断而认为目的机是在同一子网内。这样数据包将在本子网内循环,直到超时被抛
弃,使数据不能正确到达目的机,导致网络传输错误。如果将子网掩码设置得过小,那么就
会将本来属于同一子网内的机器之间的通信当做是跨子网传输,数据包都交给默认网关处

理,这样势必增加默认网关的负担,造成网络效率下降。因此,子网掩码应该根据网络的规
模进行设置。
    如果一个局域网的规模不超过254台电脑,则可以采用“255.255.255.0”作为子网掩码,
现在大多数局域网都不会超过这个数宇,因此“255.255.255.0”是最常用的1P地址子网掩码。
如果超过了254台电脑,而又想把所有电脑配置在一个局域网内,就必须使用B类地址,但
这是不推荐使用的,因为B和A,以及C类中大多数IP地址都是公用网使用的,如果在局
域网中采用了公用网的IP地址,当局域网中的主机连上因特网时,就会发现一些网站访问不
了,原因就是IP地址冲突。当然,如果局域网中的主机根本不上公用网,使用哪类IP地址
都可以,但实际上在当今信息社会中这是不可能的。 

——摘自《网管员必读——网络基础(第2版)》5.1.2 子网掩码概述


子网掩码与IP地址计算网络号和主机号:

 例如有一个个C类地址为192.9.200.13,按其IP地址类型,它的默认子网掩码为255.255.255.0,则它的网络号和主机号可按如下方法得到:
(1)将 IP 地址 192.9.200.13 转换为二进制数 11000000 00001001 11001000 00001101
(2)将子网掩码 255.255255.0 转换为二进制数 11111111 11111111 11111111 00000000
(3)将以上两个二进制数进行逻辑与(AND)运算,得出的结果即为网络部分。“11000000 00001001 11001000 00001101” 和 “11111111 11111111 11111111 00000000” 进行“与”运算, 得到 “11000000 00001001 11001000 00000000”,即 “192.9.200.0”,这就是这个IP地址的网络号,或称为“网络地址”
(4)将子网掩码的二进制数值取反后,再与1P地址进行逻辑与(AND)运算,得到的结果,为主机部分。如将“00000000 00000000 00000000 11111111 (子网掩码的值取反)”, 和 “11000000 00001001 11001000 00001101” 进行“与”运算后得到 “00000000 00000000 00000000 00001101”,即“0.0.0.13”,这就是这个IP地址的主机号(可简化为“13”)。