首先介绍下什么是IP地址?
——————————————————————————————————————————————————————
IP地址是IP通信的基础,好比人的身份证号码,用来标识一台设备或接口,通信的基础是基于IP地址来进行通信的。IP地址的格式是由32位点分十进制组成。例如:192.168.1.1。当初设计IP地址的时候,无法预测爆炸性的增长,设计的IP地址可用共43亿,已经无法满足当前提出的万物互联的需求。
——————————————————————————————————————————————————————
发展历程
这里介绍的IP地址是IPv4版本。
4段十进制数字,每一段最大不能超过255。在2019年11月IPv4地址已经分配完毕了,已经无可用地址分配。为了进一步扩大互联网的发展,通过IPv6重新定义空间,IPv6采用128位地址长度,2的128次方,可以为地球每一粒沙子分配一个IP地址,真正的能实现万物互联的理念。
——————————————————————————————————————————————————————
IP地址类型
IP地址在当初研发规划的时候,已经定义了IP地址的规范及范围。IP地址的范围是0.0.0.0-255.255.255.255。又定义了IP地址的使用类型:公有地址(公网地址)和私有(私网地址)地址。
公有地址是真正用于互联网的广域网通信使用,该IP地址属于注册备案地址。由Inter NIC因特网信息中心机构统一规划分发给三大洲,再由各大洲分配到各国家使用,国家在自定义分配给运营商,运营商在分配到各个单位部门及个人用户。这些地址全部注册备案登记。
私有地址属于非注册备案地址,专门为企业/个人内部使用,一部分原因就是为了解决IPv4不够用。
私网地址分了A、B、C、D、E类地址,D、E类地址用于科学研究领域保留使用。
A类地址范围:10.0.0.0-10.255.255.255
B类地址范围:172.16.0.0-172.31.255.255
C类地址范围:192.168.0.0-192.168.255.255
IPv4地址的范围和私有地址的范围都是固定的规划好的规范。以上的信息记住这些定义规范。
————————————————————————————————————————————————————————
IP地址为什么是32位点分十进制?
我们首先来看看IPv4地址如何转换二进制的,以C类私网地址192.168.1.1为例
我们确定规范定义中,每段的数字范围是0-255,那么总共是256。以一种非常简单的规则关系来描述。
256一直除以2,得出的是128/64/32/16/8/4/2/1,除了8次,共8位。用11111111来表示。
可以更进一步的理解,11111111就等同于:128 64 32 16 8 4 2 1
4组8个1,就是32位,11111111.11111111.11111111.11111111=255.255.255.255,所以叫32位点分十进制地址。
—————————————————————————
在用竖版来确认下位置。
1 1 1 1 1 1 1 1
128 64 32 16 8 4 2 1
那么在回头看192.168.1.1的二进制是多少,我们不需要去进行十进制和二进制的算法除余的转换,只需要记住128 64 32 16 8 4 2 1和11111111的对应关系。
把192.168.1.1展开,按照对应关系补全数字即可。
192=128+64
168=128+32+8
1=1
1=1
那么只需要填充数字即可,按照8位去填充,用上那个数字就置1,不用就为0.
192 = 1 1 0 0 0 0 0 0 按照128 64 32 16 8 4 2 1,128和64都用上了为1,其余没用上都为0。
168 = 1 0 1 0 1 0 0 0
1 = 0 0 0 0 0 0 0 1
1 = 0 0 0 0 0 0 0 1
128 64 32 16 8 4 2 1这个规律一定要记住,记住这个规律数字,在进行转换的时候可以快速转换。在计算相加的时候,都是以最大数来相加。
—————————————————————————
在来随便举个例子,都可以快速的列出二进制
如私网范围B类地址:172.20.200.149,这个地址。直接套用规律数字
规律数字:128 64 32 16 8 4 2 1
172 = 128+32+8+4
20 = 16+4
200 = 128+64=8
149 = 128+16+4+1
得出的结果:
128 64 32 16 8 4 2 1
172 = 1 0 1 0 1 1 0 0
20 = 0 0 0 1 0 1 0 0
200 = 1 1 0 0 1 0 0 0
149 = 1 0 0 1 0 1 0 1
那么172.20.200.149的二进制就是:10101100.00010100.11001000.10010101
这里已经能很快速的计算出IP地址的转换。其实很简单的,搞清楚逻辑,感觉小学水平逻辑。在来看看每次电脑配置了192.168.1.1IP地址后,为什么会自动出现一个子网掩码。255.255.255.0
————————————————————————————————————————————————————
子网掩码
子网掩码的唯一作用就是用来确定,双方通信的IP地址是否是同一网段的地址,如同一网段则通信,不同网段则不能直接通信。
在回顾下,A/B/C类私网地址规定的子网掩码。
A类地址范围:10.0.0.0-10.255.255.255 子网掩码:255.0.0.0
B类地址范围:172.16.0.0-172.31.255.255 子网掩码:255.255.0.0
C类地址范围:192.168.0.0-192.168.255.255子网掩码:255.255.255.0
这些设计IP地址的机构规定的A/B/C三类地址的范围及掩码。
现在看看掩码是如何确定两个IP地址是否同一网段,如果没有掩码,单纯的IP地址是毫无意义。
比如:192.168.1.1这个IP和192.168.2.1这个IP,你说他是一个网段的吗?你说他是,他就是,你说他不是,也不是。因为没有证据来证明他就是或不是。子网掩码就是来证明他们是否在同一个网段。这里又引入了,IP地址的网络位和主机位。
C类地址掩码255.255.255.0,255.255.255,代表网络位,0代表主机位。
你这么理解,192.168.1.1/255.255.255.0,代表网络位的范围的数字不能变动,只有主机位能变动。
网络位:代表这个IP地址所处的网段。主机位:代表这个IP地址可以分配给主机使用的地址。
在进一步想象下,这个C类IP192.168.1.0,网络位就占用了32位中的前3段,也就是24位。剩余的8位是主机位。所以C类地址,能分配的IP地址为0-255个,共256个IP地址。范围:192.168.1.0-192.168.1.255。
———————————————————————
我们继续举例:那么是否在同一范围?
192.168.1.1,掩码255.255.255.0和192.168.1.10,掩码255.255.255.0是在同一个网段。
192.168.1.1,掩码255.255.255.0和192.168.2.10,掩码255.255.255.0,就不在同一个网段了。
按照网络位不变动的情况下,这两个地址的网络位:192.168.1段网络和192.168.2段网络,分别就成了两个网络。意味着这两个地址不可以通信。
我们是如何计算呢?规定了IP地址和掩码进行与运算后来确定是否在同一网段。与运算规则:1与1等于1,1与0=0,0与0=0。
以192.168.1.0/255.255.255.0和192.168.2.0/255.255.255.0为例
对比是否在同一网段,我们就不用列出主机位了,只需列出网络位,
192.168.1 = 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1
255.255.255 = 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1
经过与运算: = 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 0 1
192.168.2. = 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 1 0
255.255.255 = 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1
经过与运算 = 1 1 0 0 0 0 0 0 . 1 0 1 0 1 0 0 0 . 0 0 0 0 0 0 1 0
那么与运算出的结果,11000000.10101000.00000001,和11000000.10101000.00000010,很明显不一致,所以他们代表了各自的网段。
在来说说主机位:192.168.1.0/255.255.255.0,主机位的范围0-255,256个可用地址,是如何计算出来的呢?
这里只列出主机位,二进制我们都知道,逢1进位。
192.168.1.0 = 0 0 0 0 0 0 0 0 >主机位的最后8位,掩码确定了能变动的数字只有后8位。前24位不变。
192.168.1.1 = 0 0 0 0 0 0 0 1 >1
192.168.1.2 = 0 0 0 0 0 0 1 0 >2
192.168.1.3 = 0 0 0 0 0 0 1 1 >2+1=3
192.168.1.4 = 0 0 0 0 0 1 0 0 >4
192.168.1.5 = 0 0 0 0 0 1 0 1 >4+1=5
........................
192.168.1.253 = 1 1 1 1 1 1 0 1 >128+64+32+16+8+4+1=253
192.168.1.254 = 1 1 1 1 1 1 1 0 >128+64+32+16+8+4+2=254
192.168.1.255 = 1 1 1 1 1 1 1 1 >128+64+32+16+8+4+2+1=255
主机位就是这么推导出来的。算就是这么算的。所以,一个C类地址的网段,每个网段它只能容纳254个可用IP。
IP通信又规定了,每个网段的第一个IP为网络地址,最后一位为广播地址。都是设备保留地址。
所以,192.168.1.0/255.255.255.0这个C类网段地址真正可以分配给主机的IP:192.168.1.1-192.168.1.254
——————————————————————————————————————————————————————
了解了C类地址,再来看看B类地址和A类地址。
C类很简单,一眼望去就知道容纳的IP范围,可分配给主机使用的IP范围。
那么B类地址如何计算呢?B类地址规定的掩码255.255.0.0,所以说,网络位变少了,增大了主机位,意味着可分配给终端的IP更多了。
以172.16.0.0/255.255.0.0。看看主机位有多少?注意观察关键的节点
主机位
172.16.0.0 = 0 0 0 0 0 0 0 0 . 0 0 0 0 0 0 0 0 >0
172.16.0.1 = 0 0 0 0 0 0 0 0 . 0 0 0 0 0 0 0 1 >1
172.16.0.2 = 0 0 0 0 0 0 0 0 . 0 0 0 0 0 0 1 0 >2
172.16.0.3 = 0 0 0 0 0 0 0 0 . 0 0 0 0 0 0 1 1 >2+1=3
..........................................
172.16.0.255 = 0 0 0 0 0 0 0 0 . 1 1 1 1 1 1 1 1 >128+64+32+16+8+4+2+1=255
172.16.1.0 = 0 0 0 0 0 0 0 1 . 0 0 0 0 0 0 0 0 >1.0
172.16.1.1 = 0 0 0 0 0 0 0 1 . 0 0 0 0 0 0 0 1 >1.1
............................................
172.16.1.255 = 0 0 0 0 0 0 0 1 . 1 1 1 1 1 1 1 1 >1. 128+64+32+16+8+4+2+1=255 1.255
172.16.2.0 = 0 0 0 0 0 0 1 0 . 0 0 0 0 0 0 0 0 >2.0
172.16.2.1 = 0 0 0 0 0 0 1 0 . 0 0 0 0 0 0 0 1 >2.1
..........................................
172.16.254.254= 1 1 1 1 1 1 1 0 . 1 1 1 1 1 1 1 0 >128+64+32+16+8+4+2=254. 128+64+32+16+8+4+2=254 254.254
172.16.254.255= 1 1 1 1 1 1 1 0 . 1 1 1 1 1 1 1 1 >128+64+32+16+8+4+2=254. 128+64+32+16+8+4+2+1=255 254.255
172.16.255.0 = 1 1 1 1 1 1 1 1 . 0 0 0 0 0 0 0 0 >128+64+32+16+8+4+2+1=255. 0 255.0
...........................................
172.16.255.255 = 1 1 1 1 1 1 1 1 . 1 1 1 1 1 1 1 1 >255.255
中间省略了很多步骤,可以看出B类地址容纳的IP地址在C类256的基础上又翻倍了。
前面提到的网络IP和广播IP,如首位192.168.1.0和192.168.1.255,在B类地址中,0和255出现的时候,并不一定就代表是网络位和主机位,在分解中的172.16.0.255和172.16.1.0,它们只是主机可分配的IP地址。
所以172.16.0.0的可用IP范围是:172.16.0.0-172.16.255.255,网络IP:172.16.0.0,广播IP:172.16.255.255
C类地址只有8位主机位。那么就是2的8次方=256除去首尾=254可用主机。
B类地址有16位主机位,就是2的16次方-2=65536-2=65534个可用主机。
A类地址有24位主机位,就是2的24次方-2=16777214个可用主机。
————————————————————————————————————————————————————
其他
地址的规范:
192.168.1.1/255.255.255.0,这是一个标准的C类主机地址,可以简写为:192.168.1.1/24
172.16.0.1/255.255.0.0,这是一个标准的B类地址,可以简写为:172.16.0.0/16
10.0.0.0/255.0.0.0,这是一个标准的A类地址,可以简写为:10.0.0.0/8
如果出现192.168.1.0/24,那么这个地址代表的是,192.168.1.0网段的意思。如果出现192.168.1.5/24,那么这个地址代表的是,192.168.1.5的主机IP。