ip地址 与子网掩码 的计算

本文介绍如何根据IP地址及斜线后的数字计算子网掩码、主机号、广播地址以及可用地址的数量等关键信息。通过实例解析,帮助读者理解IP地址划分的基本原理。

128.0.0.0=1 
192.0.0.0=2
224.0.0.0=3 
240.0.0.0=4 
248.0.0.0=5 
252.0.0.0=6 
254.0.0.0=7 
255.0.0.0=8
255.128.0.0=9 
255.192.0.0=10 
255.224.0.0=11 
255.240.0.0=12 
255.248.0.0=13
255.252.0.0=14 
255.254.0.0=15
255.255.0.0=16 
255.255.128.0=17
255.255.192.0=18 
255.255.224.0=19 
255.255.240.0=20 
255.255.248.0=21 
255.255.252.0=22
255.255.254.0=23 
255.255.255.0=24
255.255.255.128=25
255.255.255.192=26
255.255.255.224=27 
255.255.255.240=28 
255.255.255.248=29 
255.255.255.252=30 
255.255.255.254=31
255.255.255.255=32 

以上是IP对应列表,,为了方便计算的
 

例如
61.159.62.128/29       
 

一个IP是分为 4组数字   

每组数字等于 8位二进制  

IP后面的那个29 是用来计算   子网掩码  主机号   第一个可用地址 和 最后一个可用地址

-- -----求子网掩码-----------

那个末尾的29代表着29个二进制的1 

请记住二进制常识 : IP中的255  =  8个二进制的1 = 11111111

我们来求出29=多少个255

解 29 ÷ 8 = 3   组的255  还  余5位 二进制的1

子网掩码也就确认了前面3个组都是255

目前计算到这里已经确认了子网掩码是 

255.255.255.余5位 二进制的1   

把我们拿到的原始IP的第4组变成二进制

61  .159.62  .10000000 = 61  .159.62  .128 = 我们上面拿到的原始ip    (61.159.62.128/29)

我们接着继续计算最后一组29除以8位的余数  (  余5位 二进制的1 )

 

255.255.255.11111000 =255.255.255.248 =   (61.159.62.128/29)的  子网掩码  

子网掩码是255.255.255.248

----------------------------------------------------

--------------求主机号-广播地址--------------------

(取前29位是网络地址)后面3位全部设置1就是是广播地址

 

以下就是上面这句话的计算例子(请认真理解)

61 .159.62 .10000000 =61 .159.62 .128 =  网络号  =  主机号   =  主机地址  =  网络地址

后面那几位变成1后就成广播地址了
61 .159.62 .10000111 =61 .159.62 .135  = 广播地址
----------------------------------------------------
--------------求可用地址数量地址--------------------

61 .159.62 .135 减去 61 .159.62 .128  再减掉1个广播的IP  =  6 个可用的IP


61 .159.62 .128加1   =  61 .159.62 .129   =   第一个可用地址

61 .159.62 .135减去1  = 61 .159.62 .134  =  最后可用地址

原创:LingMax

计算可用IP地址数量时,主要依赖子网掩码的位数,即CIDR(Classless Inter-Domain Routing)表示法中的网络前缀长度。子网掩码决定了IP地址中网络部分和主机部分的划分,从而确定子网中可以分配的IP地址数量。 ### 子网掩码IP地址位数的关系 子网掩码以点分十进制表示,例如`255.255.255.0`,也可以用CIDR格式表示为`/24`,表示前24位是网络部分,剩余8位是主机部分。主机部分的位数决定了子网中可用IP地址的数量。 计算公式如下: - 主机部分的位数 = `32 - 网络前缀长度` - 子网中的IP地址总数 = `2^(主机位数)` - 可用IP地址数 = `IP地址总数 - 2`(减去网络地址和广播地址) ### 计算示例 #### 示例1:子网掩码`255.255.255.0`(即`/24`) - 网络前缀长度为24,主机位数为8。 - IP地址总数:`2^8 = 256` - 可用IP地址数:`256 - 2 = 254` [^2] #### 示例2:子网掩码`255.255.255.252`(即`/30`) - 网络前缀长度为30,主机位数为2。 - IP地址总数:`2^2 = 4` - 可用IP地址数:`4 - 2 = 2` #### 示例3:子网掩码`255.255.0.0`(即`/16`) - 网络前缀长度为16,主机位数为16。 - IP地址总数:`2^16 = 65536` - 可用IP地址数:`65536 - 2 = 65534` ### 代码示例 以下是一个Python代码片段,用于根据子网掩码计算可用IP地址数量: ```python def calculate_ip_count(subnet_mask): # 将子网掩码转换为CIDR格式 octets = list(map(int, subnet_mask.split('.'))) binary_str = ''.join([bin(octet)[2:].zfill(8) for octet in octets]) cidr = binary_str.count('1') # 计算主机位数 host_bits = 32 - cidr # 总IP地址数和可用IP地址数 total_ips = 2 ** host_bits usable_ips = total_ips - 2 if host_bits > 0 else 1 # 如果host_bits为0,只有一个IP return total_ips, usable_ips # 测试示例 subnet_mask = "255.255.255.0" total, usable = calculate_ip_count(subnet_mask) print(f"子网掩码 {subnet_mask} 的总IP地址数: {total}, 可用IP地址数: {usable}") ``` ###
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值