网络寻址¶
约 1272 个字 预计阅读时间 6 分钟
IP 地址和子网掩码¶
IP 地址是用于标识特定主机的逻辑地址,为了与 Internet 上其它设备通信,它必须唯一、不冲突
每个网卡NIC都有各自的 IP 地址
IPv4¶
IP 地址是一个 32 位二进制 01 串,以八位为一组,划分为四个八位字节,每个字节以十进制数表示,中间用点号分割,即 点分十进制记法
IP 地址具有层次性,前面部分标识主机所在的网络,后面部分标识该网络中特定的主机。两部分的位数对于不同用途有着不同分配,子网掩码用来表明 IP 地址中,哪一部分代表网络,哪一部分代表主机:IP 与子网掩码按位与操作,所得的部分即为网络部分
Example
例如 IP 地址 192.169.1.100 与其子网掩码 255.255.255.0
其网络部分为 192.169.1 ,主机部分为 100
除此之外,还可以用前缀长度的方式表示子网掩码,即 "/" 后紧跟着为 1 的位数。如上例中 IP 地址及其子网掩码可以表示为 192.169.1.100/24
但是需要注意,主机部分全部为 0 的 IP 地址是该网络的网络地址;主机部分全部为 1 的 IP 地址是该网络的广播地址。这两个地址不能分配给具体的主机。
所以计算子网掩码对应网络可存在主机数量时,要减去 2
IPv4 地址可以分为五类,其中 A、B、C 类是商业类用途,可分配主机;D 类仅保留供组播使用;E 类保留用于实验用途。
为了延缓 IPv4 地址耗尽,组织内部可以使用私有地址进行通信,但是私有地址不能连接 Internet ,需要经过网络地址转换(NAT)变成共有地址才能在 Internet 通信。
- 借助 NAT ,可将传出数据包的私有源 IP 地址转换为公有源 IP 地址
- 借助 NAT ,可将传入数据包的公有目的 IP 地址转换为私有目的 IP 地址
RFC 1918 规定私有地址可取的范围如下:
无线路由器的 WAN 口一般是公有地址,LAN 口是私有地址,因此它们的 IP 地址必须属于不同网络,即 网络部分不同。
IPv6¶
IPv4 地址早在2011年2月就被 ICANN 分配殆尽,我们需要更大的地址空间!
IPv6 地址是一个 128 位的二进制数值,一般以 32 个 16 进制数字表示,其一般格式为:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
- 字段中的前导 0 可以省略,例如 09C0 可写作 9C0
- 连续的零字段可表示为 :: ,但每个地址只能用一次 ::
示例:
- 0:0:0:0:0:0:0:1 表示为 ::1 ,即 localhost
- 2031:0000:130F:0000:0000:09C0:876A:130B
- 可表示为 2031:0:130F::9C0:876A:130B
IPv6 使用前缀长度表示地址的前缀部分(相当于网络部分),典型的前缀长度为 /64 。剩余部分统称为接口 ID (相当于主机部分)
如 2001:DB8:A::/64
子网划分¶
创建 IPv4 子网的时候会将一个或多个主机位作为网络位,具体做法是延长子网掩码,从地址的主机部分借用若干位来增加网络位。
借用的主机位越多,可以定义的子网也就越多。为了增加子网数量而借用的位越多,每个子网的主机数量就越少。
假设企业选择了私有地址 10.0.0.0/8 作为其内部网络地址。该网络地址可以在一个广播域中连接 16,777,214 个主机。显然,在一个子网上拥有超过 1600 万台主机并不理想。
企业可以进一步在二进制八位组边界 /16 处对 10.0.0.0/8 地址进行子网划分,如表所示。这能让企业定义多达 256 个子网(例如,10.0.0.0/16 – 10.255.0.0/16),每个子网可以连接 65,534 个主机。注意,前两个二进制八位组标识地址的网络部分,而后两个二进制八位组用于标识主机 IP 地址。
子网地址 (256 个可能的子网) | 主机范围 (每个子网可能有 65,534 个主机) | 广播 |
---|---|---|
10.0.0.0/16 | 10.0.0.1 - 10.0.255.254 | 10.0.255.255 |
10.1.0.0/16 | 10.1.0.1 - 10.1.255.254 | 10.1.255.255 |
10.2.0.0/16 | 10.2.0.1 - 10.2.255.254 | 10.2.255.255 |
10.3. 0.0/16 | 10.3.0.1 - 10.3.255.254 | 10.3.255.255 |
10.4.0.0/16 | 10.4.0.1 - 10.4.255.254 | 10.4.255.255 |
10.5.0.0/16 | 10.5.0.1 - 10.5.255.254 | 10.5.255.255 |
10.6.0.0/16 | 10.6.0.1 - 10.6.255.254 | 10.6.255.255 |
10.7.0.0/16 | 10.7.0.1 - 10.7.255.254 | 10.7.255.255 |
... | ... | ... |
10.255.0.0/16 | 10.255.0.1 - 10.255.255.254 | 10.255.255.255 |
另外,更加广泛使用的是 /24 边界,这将让企业能定义 65,536 个子网,每个子网能连接 254 个主机。
子网地址 (65,536 个可能的子网) | 主机范围 (每个子网可能有 254 个主机) | 广播 |
---|---|---|
10.0.0.0/24 | 10.0.0.1 - 10.0.0.254 | 10.0.0.255 |
10.0.1.0/24 | 10.0.1.1 - 10.0.1.254 | 10.0.1.255 |
10.0.2.0/24 | 10.0.2.1 - 10.0.2.254 | 10.0.2.255 |
… | … | … |
10.0.255.0/24 | 10.0.255.1 - 10.0.255.254 | 10.0.255.255 |
10.1.0.0/24 | 10.1.0.1 - 10.1.0.254 | 10.1.0.255 |
10.1.1.0/24 | 10.1.1.1 - 10.1.1.254 | 10.1.1.255 |
10.1.2.0/24 | 10.1.2.1 - 10.1.2.254 | 10.1.2.255 |
… | … | … |
10.100.0.0/24 | 10.100.0.1 - 10.100.0.254 | 10.100.0.255 |
... | ... | ... |
10.255.255.0/24 | 10.255.255.1 - 10.2255.255.254 | 10.255.255.255 |
/24 网络地址通常通过从第 4 个二进制八位数借用位来使用更长的前缀进行子网划分。这可以让管理员在将网络地址分配到更少数量的终端设备时具有很好的灵活性。
参考下表可以看到6种对/24网络划分子网的方式。