IP地址
# 简介
IP地址是位于第三层(网络层)的一个协议,它分为IPv4和IPv6,我们着重讨论IPv4。
IPv4地址是由一组32位的二进制数组合而成,为了方便人类观看,亦可转换为十进制表示,如192.168.1.1
。
# 地址分类
IPv4地址被划分为两个分段,分别是网络段和主机段。 IPv4地址也被分为4类
# A类地址
地址范围1.0.0.0
到127.255.255.255
私网地址 10.0.0.0
# B类地址
地址范围128.0.0.0
到191.255.255.255
私网地址 172.16.0.0
到172.31.0.0
# C类地址
地址范围192.0.0.0
到223.255.255.255
私网地址192.168.0.0
到192.168.255.0
# D类地址
多播、组播地址
地址范围224.0.0.0
到239.255.255.255
224.0.0.1
特指所有主机
# 网络号与广播号
在地址中,头尾两个地址通常不使用,因为是留作网络号和广播号的。
所谓网络号,例如192.168.1.0
,为了表示192.168.1.1~192.168.1.254
所谓广播号,即是指192.168.1.255
# 主机数量计算
假设我们有个网段是192.168.1.0/24
,我想知道能分配多少个主机使用。
首先,我们知道完整的地址是32位的,并且已经有24为被划分为网络位,因此主机位只剩下8位。
我们可以得出2^8=256
,但由于网络号和主机号的占用,因此实际上我们只有2^8=256 - 2 = 254
# 为什么要广播号
假设我们有个网络环境,该网络环境下连接着多台设备,但不幸的是路由器R损毁了,我们要更换一个新的路由器,在更换后,网关IP仍然保持不变(因为是人为设定的),但网关的MAC地址却发生了变化,这导致了该网络内的所有主机因找不到网关MAC,无法访问互联网。
我们在先前ARP协议中说到过,设备可以通过主动发送ARP报文去获取指定IP设备的最新MAC地址,但实际情况下,我们可能有成百上千台设备,这种方式效率太低了,因此我们要利用到IP的广播号实现该需求。
新路由器会主动发送一条报文,其中包括了发送方IP
、接收方IP
、发送方MAC
、接收方MAC
,
由于我们希望所有设备能收到该报文并更新,因此发送方IP
、发送方MAC
、接收方MAC
都能知道填写什么值,但唯独接收方IP
我们不知道,这时就需要IP广播号了,当我们填写255
时所有主机设备在收到包后会查看到并选择接收而不是丢弃。
# 子网划分
上述说明中,我们提及了一个概念
192.168.1.0/24
,这是默认情况下C类网络的划分方式,但实际情况下,我们的网络可能只是一个家庭网络,并不需要那么多主机号,因此我们可以通过子网划分对默认的网络进行进一步划分。
我们知道IPv4地址是由32位组成的,上述的例子可以看见默认情况是前24位作为网络号,当转化为二进制后,地址将变成11111111 11111111 11111111 00000000
,在这种情况下,我们知道有256(包含网络号和广播号)个主机地址。但当地址变为11111111 11111111 11111111 10000000
时,我们单个子网可使用的地址就减少了,因为2^7=128
,我们可以通过手动划分网络位来修改子网的规模。但实际上,我们只是划分了子网的大小,总数还是不变的
# 奇葩的网络地址
100.1.1.1/32
,这对于我们先前所说的情况有些异类,因为先前的例子都是需要至少一个网段地址和广播地址,但很明显/32
有且只有一个地址,