mijazz
2020-12-11 14:15:41 +08:00
10.1.1.30 参考 4 楼的说法, 这四个数字是为了给人能看清楚来划分的.
点分十进制的意思就是, ipv4 地址共有 32bit 组成, 分出来 4 段, 所以每一段长度为 8bit, 最高表示十进制的 255. 并且根据 ABC 类地址来划子网
10.1.1.30 其实是
0000 1010 0000 0001 0000 0001 0001 1110 来组成的
每 8bit 取一断点化十进制就是 ipv4 地址的常见形式.
这个时候为了建立子网来进行路由, 进而有子网掩码这东西, 假设你的子网掩码(subnet mask)在这里是 255.0.0.0
其实就是
1111 1111 0000 0000 0000 0000 0000 0000
上述两个二进制, 你如果对他们做 AND 运算, 你得到的就是 5 楼给你的 IPv4Address
0000 1010 0000 0000 0000 0000 0000 0000 -> 10.0.0.0
, 我没记错的话他叫网络地址, 在这个 10.0.0.0/255.0.0.0 的网络之外, 它只是一个大子网, 对于外部来说会减少路由表的 entry 增加效率, 因为我只需要知道这个网络下对应的 ip 硬怼给它就行了, 没必要一个 ip 多开一个路由表 entry.
相对应的网络里最后一个主机号 / 或者是网络号后的 bit 全填 1, 就是用于 broadcast, 在这里就是
0000 1010 (第 9 位开始全是 1) 1111 1111 1111 1111 1111 1111 -> 10.255.255.255
所以有 10.0.0.0/255.0.0.0 <=>10.0.0.0/8 <=> 10.0.0.0 ~ 10.255.255.254
然后 VLSM/Variable Length Subnet Mask, 因为发现直接通过 ABC 类地址划出来的子网太浪费?
然后就有引入 CIDR/无分类编址
划分网络 /辨认主机可以使用网络号和主机号, 此时他们两个的分界线就是 /后面的这个十进制数 8
10.0.0.0/8 <=> 10.0.0.0/255.0.0.0
如果是 /20, subnetmask 的前 20 位就都是 1, 假设里面有个地址是 172.17.3.1, 按你题目的表示就是 172.17.3.1/20
1010 1100 0001 0001 0000 0011 0000 0001 (ip)
1111 1111 1111 1111 1111 0000 0000 0000 (/20) <=> 255.255.240.0
做 AND 可以很容易得到
1010 1100 0001 0001 0000 0000 0000 0000 -> 172.17.0.0(网络号)
还是上面的操作, 第 21 位开始全是 1
1010 1100 0001 0001 0000 (21 位开始) 1111 1111 1111 -> 172.17.15.255
所以
172.17.0.0/20 <=> 172.17.0.0/255.255.240.0 <=> 172.17.0.0 ~ 172.17.15.255
小弟还是个在校大学生 hhhh 如果错误请指出