
IP与子网掩码判断网络
IP介绍
IP(Internet Protocol,互联网协议)是用于在网络中传输数据的一套规则,是互联网通信的基础之一。它的主要作用是为网络中的设备分配唯一的地址(即 IP 地址),并规定数据如何从源设备发送到目标设备。 一句话解释: 你可以理解为是属于网络设备的“身份证号”,只不过是这个身份证号可以随时更换,只要不重复就行了
日常使用情况讲解
我们目前用的大多都是IPv4,即互联网协议第四版,目前在使用的有IPv4与IPv6,由于IPv4池里面的IP在2019年11月26日分配完毕,为了解决枯竭就推出了IPv6(互联网协议第六版) 既然IPv6是为了解决IPv4的地址枯竭问题,那理所当然IPv6比IPv4长了亿点点
- IPv4 是 32 位地址
- IPv6 是 128 位地址
且它们的表示方式也不同。就拿我本机 IP 举例:
| IPv4 | IPv6 |
|---|---|
| 192.168.31.222 | 240e:3bb:2e77:4c60: **** : **** : **** : **** |
IPv4地址与二进制
1. IPv4地址格式
IPv4地址由32位二进制数组成,通常分成4个**8位(1字节)**的部分,每部分转换成十进制,用点隔开,称为“点分十进制”。
例如:192.168.1.1
转换为二进制
每个十进制数(0~255)对应8位二进制数:
| 十进制 | 二进制 |
|---|---|
| 192 | 11000000 |
| 168 | 10101000 |
| 1 | 00000001 |
| 1 | 00000001 |
所以:
192.168.1.1 = 11000000.10101000.00000001.00000001
转换方式
那么如何快速的将10进制的ip转换成二进制的呢
有两个小妙招:
除2取余法:
用 2 除十进制数,记录余数(0 或 1)。
把得到的商再除以 2,再记录余数。
重复直到商变为 0。
把所有余数从最后一个到第一个倒序排列,就是对应的二进制。
以 192 为例:
192 ÷ 2 = 96 余 0 96 ÷ 2 = 48 余 0 48 ÷ 2 = 24 余 0 24 ÷ 2 = 12 余 0 12 ÷ 2 = 6 余 0 6 ÷ 2 = 3 余 0 3 ÷ 2 = 1 余 1 1 ÷ 2 = 0 余 1方法二:减权法(推荐!更快)
口诀:“从高权到低权,能减写1减,不能写0跳。”
具体 3 步:
- 列权:
128 64 32 16 8 4 2 1(固定顺序) - 逐位判:
- 当前余数 ≥ 权值 → 该位写 1,余数减去与之相比的数
- 当前余数 < 权值 → 该位写 0,余数不变
- 按顺序写下 0/1,就是二进制 如100来进行运算:
100 < 128(权值) 所以该位为0,并且不进行减去操作100 > 64(权值) 所以该位为1,并且减去6436(余数) > 32 所以该位为1,并且减去32后面省略,所以100二进制位为011*****实际操作 以 192 为例:
权值序列:128 64 32 16 8 4 2 1——————————————————————————————192 ≥ 128 → 第8位写 1,余 192−128 = 6464 ≥ 64 → 第7位写 1,余 64−64 = 00 < 32 → 第6位写 0,余 00 < 16 → 第5位写 0,余 00 < 8 → 第4位写 0,余 00 < 4 → 第3位写 0,余 00 < 2 → 第2位写 0,余 00 < 1 → 第1位写 0,余 0结果:`11000000`子网掩码
IP 地址分为 主机位 与 网络位:
- 网络位:表示“这段地址属于哪个子网”——相同网络位的 IP 在同一子网。
- 主机位:表示“在该子网内能分给主机用的地址个数”——主机位全 0 是网络地址,全 1 是广播地址,其余可分配给主机。
子网掩码便是用于区分 IP 中哪些是网络位、哪些是主机位的工具。
换句话说,它帮助我们计算出当前 IP 所在网段的起始地址(网络地址)。
- 点分十进制:如
255.255.255.0 - CIDR 表示法:如
/24,表示前 24 位是 1,其余为 0
具体的计算方式就要设计我们的与运算了
与运算
假设已知某设备的 IP 是 192.168.10.131/24,但不知道它所在子网的起始地址。该如何计算?
步骤 1:将 IP 和子网掩码转为二进制 首先我们得把IP和子网掩码都转换为二进制:
| 十进制 | 二进制 | |
|---|---|---|
| IP | 192.168.10.131 | 11000000.10101000.00001010.10000011 |
| 子网掩码 | 255.255.255.0 | 11111111.11111111.11111111.00000000 |
步骤 2:对每一位做“与运算”
与运算规则很简单:
- 两个位都为
1→ 结果为1 - 只要有一个是
0→ 结果为0
即:
11000000.10101000.00001010.10000011& 11111111.11111111.11111111.00000000------------------------------------ 11000000.10101000.00001010.00000000 #都为1结果即是1,有一方为0则结果为0步骤 3:将结果转回十进制
11000000 → 19210101000 → 16800001010 → 1000000000 → 0所以,网络地址 = 192.168.10.0
这就是 192.168.10.131 所在子网的“起点”。
分享文章
生成精美分享图或复制链接,与更多人分享本文。
继续阅读
最后更新于 ,距今已过 309 天
部分内容可能已过时