IP地址分类(IPV4)IP是可以分类的你知道了吗首先从IP地址说起IP地址其实是一个32比特的整数把这个32比特分为4段每段8比特长8比特正好是一个字节把这个字节转换成十进制用点隔开。这样4个数字三个点的表示方法就是我们现在大家熟悉的IP地址如192.168.1.1其实把这个IP地址写成二进制是这样的0d192 0b110000000d168 0b101010000d1 0b000000010d1 0b00000001合起来 192.168.1.1 0b11000000 10101000 00000001 00000001 0d3232235777那这个IP地址真正的值就是整数3232235777以上例程中0d开头的表示十进制数0b开头的表示二进制数。http://192.168.1.1 http://3232235777你不访可以在浏览器的地址栏里试下输入 http://3232235777 这种IP地址的表示方法我这里是 OK 的那你呢了解了IP地址的构成那接下来言归正传讲讲IP地址的分类吧。IP 地址分为 5 类分别是 A 类B 类C 类D 类和 E 类。为什么前面先讲 IP 地址的构成呢因为分类用的到把 IP 地址转成二进制第一个比特为 0 的IP地址也就是二进制以 0 开头的 IP 地址为 A 类地址10 开头的为 B 类地址110 开头的为 C 类地址1110 开头的为 D 类地址1111开头的为 E 类地址。我们常用的是 A、B、C 类地址D 类 IP 地址段是多播地址E 类是保留段。我们 IoT 工程师最常用的就是 A、B、C 类地址段再把这三个段的具体范围用点分十进制表示出来。A 类 0 ~ 127B 类 128 ~ 191C 类 192 ~ 223那这三类地址有什么区别呢我们的路由器 IP 地址为什么通常都以 192.168 开头呢下面我们分别聊一下这两点。区别A 类地址一个网段可容纳 16777214 台主机B 类地址一个网段可容纳 65534 台主机而 C 类地址一个网段可容纳 254 台主机。为什么这样下面会讲到。特殊 IP 地址段A 类地址中的特殊地址段有广播地址段以 0 开头的地址段广播地址段内网地址段以 10 开头的地址段为内网地址段 (RFC 1918)运营商私有地址段以 100 开头的为运营商私有的地址段如果你是移动宽带用户理论上你从运营商这里得到的 IP 地址就应该是这个地址段这也是所谓的移动宽带多个用户是共享一个公网 IP。回环地址段以 127 开头的地址段为回环地址B 类地址中的特殊地址段有 (RFC 1918)无法获取 DHCP 时分配的 IP 地址段如果你的设备获取 DHCP 失败则会随机分配到一个以 169.254 开头的 IP 地址。内网地址段以 172.16 ~ 172.31 开头的地址段为内网地址段C 类地址中的特殊地址段有内网地址段以 192.168 开头的地址段为内网地址段 (RFC 1918)特殊地址段以 192.0.0 开头的地址段为特殊地址段 (RFC 5736)测试地址段以 192.0.2 开头的地址段为测试地址段 (RFC 5737)测试地址段以 192.18 ~ 192.19 开头的地址段为测试地址段测试地址段以 192.51.100 开头的地址段为测试地址段 (RFC 5737)测试地址段以 203.0.113 开头的地址段为测试地址段 (RFC 5737)说了那么多IP 地址分了类有什么用呢请往下看。无类域间路由无类域间路由 (Classless Inter-Domain Routing —CIDR)这里的类就是上面 A、B、C 类无类就是打破这个类的规则上面说到的 A、B、C 类 IP 地址段容纳的主机数是怎么回事呢往下看。先介绍下子网掩码子网掩码这个词我相信大家都不陌生了吧很多时候将电脑的 IP 地址设置成 192.168.x.x上面说过了这是 C 类的内网地址一般掩码会填 255.255.255.0这是什么意思呢255.255.255.0 是 C 类地址的默认掩码同样把 255.255.255.0 转换为二进制为 0b11111111 11111111 11111111 00000000很容易看出这个掩码的前面有连续的 24 个 1后面是连续的 8 个 0把它和 IP 地址放在一起就拿 192.168.1.1 来举例192.168.1.1 0b11000000 10101000 00000001 00000001255.255.255.0 0b11111111 11111111 11111111 00000000排一起11000000 10101000 00000001 0000000111111111 11111111 11111111 00000000这样IP 地址和掩码对齐后掩码的 1 和 0分 IP 地址分为了两个部分 0b11000000 10101000 00000001和 0b00000001即 192.168.1 和 1和掩码 1 对应的部分称为网络段和掩码 0 对应的部分称为主机地址。再来两个概念网络地址和主机地址。把上述 IP 地址的网络段部分保持不变把主机地址变为全 0则为上述 IP 地址所在的网段的网络地址即 192.168.1.0把上述 IP 地址的网络段部分保持不变把主机地址变为全 1则为上述 IP 地址所在的网段的广播地址即 192.168.1.255掩码的二进制都是全 1 到全 0不然就是非法的比如255.255.254.0 是合法的掩码而 255.255.253 就是不合法的掩码如果不明白为什么那转换成二进制一看就明白了这里不多讲了。所以有以上 IP 地址和掩码可以简写成 192.168.1.1/24/24 就是掩码表示有 24 个连续的 1 开头的 32 比特整数实质上也就是 255.255.255.0。A 类地址的默认掩码是255.0.0.0B 类地址的默认掩码是255.255.0.0C 类地址的默认掩码是255.255.255.0所以A 类地址一共有 2 ^ (8 - 1) 个网段去掉上述 0 外实际可用的为 127 个网段这是包括内网等特殊网段的而每个网段可容纳的主机数是 2 ^ 24 – 2则为 16777214 台主机8 是掩码全 1 部分有 8 个 124 是掩码全 0 部分有 24 个 0减去 2 是一个全 0 的网络地址和一个全 1 的广播地址。同理 B 类地址一共有 2 ^ (16 - 2) 个网段即 16384 个网段这是包括内网等特殊网段的而每个网段可容纳的主机数是 2 ^ 16 – 2则为 65534 台主机再同理 C 类地址一共有 2 ^ (24 - 3) 个网段即 2097152 个网段这是包括内网等特殊网段的而每个网段可容纳的主机数是 2 ^ 8 – 2则为 254 台主机好了终于到了 CIDR 登场的时候了。也许大家有时也会看到过这样的 IP 地址和掩码吧10.0.0.1 255.255.254.0不是说 10 开头的是 A 类地址吗A 类地址的掩码不就应该是 255.0.0.0 吗这个组合合法吗答案是肯定的这个是合法的这就是无类域间路由 — CIDR。就是为了根据实际需求超越 A、B、C 类地地址的限制对调整网段和主机数进行更合理的安排和划分。就拿上面的举例吧10.0.0.1/23 (不知道这个写法的往前翻翻这个文档前面有提到) 可容纳的主机数是 2 ^ 9 – 2即 510 台主机。那问题又来了IP 地址分网络段和主机段有什么用呢网络地址和广播地址有什么用呢往下看。交换机和路由器的区别前面都是铺垫纯理论知识有了上面的理论现在可以和实际结合了交换机和路由器有什么区别呢还是要先从以太网讲起。以太网传输最终的识别信息是网卡的 MAC 地址首先我大概描述一下同网段之间的传输注意我只是用白话文方式描述原理如果想了解具体细节的请阅读相关文档。网络拓普主机 AIP192.168.1.100/24 MAC00:12:34:56:78:9A主机 BIP192.168.1.101/24 MAC00:12:34:56:2C:AB场景主机 A 发起通讯请求欲与主机 B 交互数据主机 A 比对自己的 IP 和 目标 IP在同一网段主机 A 发起 ARP 广播内容为目标 IP 为 192.168.1.101本机 MAC 为 00:12:34:56:78:9A只要在同网络且网段下在线的主机均能收到该广播除主机 B 外其它主机收到广播后比对主机 A 的目标 IP 不是本机则忽略广播主机 B 收到广播后经比对自己的 IP 和主机 A 广播的目标 IP 吻合则把自己的 MAC 通过 ARP 广播应答主机 A双方通过 MAC 建立通讯当然这时交换机还做了很多事比如维护 ARP list 等这里就不展开了感兴趣的可以去关心下集线器(HUB)网桥(Bridge)交换机(Switch) 的区别及以太网的冲突域(CSMA/CD)内容太多了讲下去没完没了了。那不同网段呢网络拓普主机 AIP192.168.1.100/24 MAC00:12:34:56:78:9A主机 BIP192.168.1.101/24 MAC00:12:34:56:2C:AB主机 CIP192.168.10.102/24 MAC00:12:34:56:54:71路由器A Port AIP192.168.1.1/24 MAC00:12:34:56:D1:BB路由器A Port BIP192.168.10.1/24 MAC00:12:34:56:D1:BC场景主机 A 发起通讯请求欲与主机 C 交互数据主机 A 比对自己的 IP 和 目标 IP不在同一网段主机 A 发起 ARP 广播内容为目标 IP 为192.168.10.102本机 MAC 为 00:12:34:56:78:9A广播的目标 IP 则为网关路由器 A即 192.168.0.1只要在同网络且网段下在线的主机均能收到该广播除路由器 A 外其它主机收到广播后比对主机 A 的目标 IP 不是本机则忽略广播路由器 A 收到广播后经比对自己的 IP 和主机 A 广播的目标 IP 吻合则把自己的 MAC 通过 ARP 广播应答主机 A路由器 A 把主机 A 的目标 IP 与 其它端口的 IP 网段比对如果在同一网段则重复上述 ARP 广播的过程如果不在同一网段则再把请求发到自己的网关(上级路由器)上路由器A 在端口 B 上发出 ARP 广播内容为目标 IP 为 192.168.10.102本机 MAC 为 00:12:34:56:D1:BC主机 C 收到广播后经比对自己的 IP 和路由器 A 广播的目标 IP 吻合则把自己的 MAC 通过 ARP 广播应答路由器 A路由器 A 再通过端口 A 把应答转给 主机 A双方通过路由器 A 建立通讯好了总结一下集线器组成一个冲突域网桥切断冲突交换机其实相当于每个端口都是一个网桥它组成的是一个广播域路由器切断了广播承载着不同网段数据的交互最后值得一提的是我们常用的宽带路由器是在普通路由器里固定设置了 NAT 转发功能因为它的一端是可能是公网地址而另一段肯定是内网地址这样它其实需要的是单向传输有设置过端口转发经验的朋友应该注意到了只有通过这样的设置才能从公网反连到内网上的某台主机这个我计划后面会另写一篇相关技术的文档这里不再展开了也正因为这个原因有些地区把这种宽带路由器称为 IP 地址分享器。欢迎来我的TT家园参观或发邮件给我。