子网掩码的计算方法

子网掩码的计算方法:

子网掩码一:子网大小等于256减去子网掩码中最后一个字节的数字,即该子网中的主机数。

举例1:

IP子网      掩码            网关        VLAN ID

10.27.223.0     255.255.255.192     10.27.223.62   110

比如上面这个VLAN110的子网,

1) size是:256-192=64.所以如果别人要一个64大小的子网,掩码肯定就是192了。

2) 网关是62,10.27.223.0+64=10.27.223.64是下一个网段的网络号,即下一个网段的,那么VLAN110这个网段的最后一个地址是10.27.223.63,这是VLAN110的广播地址,所以网关可以设置为10.27.223.62.

 

举例2:

IP子网      掩码            网关        VLAN ID

10.27.223.64   255.255.255.224     10.27.223.94   111

比如上面这个VLAN111的子网,

1) size是:256-224=32.所以如果别人要一个32大小的子网,掩码肯定就是224了。

2) 网关是94,10.27.223.64+32=10.27.223.96是下一个网段的网络号,即下一个网段的开始,那么VLAN111这个网段的最后一个地址是10.27.223.95,这是VLAN111的广播地址,所以网关可以设置为10.27.223.94.

 

子网掩码二:子网大小等于32减去CIDR掩码数字后,再用2进行乘方,即该子网中的主机数。

举例1:

IP子网      掩码                网关        VLAN ID

10.27.223.0     255.255.255.192/26        10.27.223.62   110

还是上面的例子,VLAN110里面的主机是:32-16=6,2的6次方=64. 所以如果别人要一个64大小的子网,掩码肯定就是26了;如果要一个32大小的子网,32为2的5次方,掩码就是32-5=27.

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Java中计子网掩码可以使用位运来实现。在计子网掩码时,我们首先需要知道网络地址和子网掩码的位数。网络地址是一个32位的二进制数,子网掩码是用来标识网络地址中哪些位是网络位和主机位的。 例如,假设网络地址为192.168.0.1,子网掩码为255.255.255.0,我们需要将它们转换成二进制。首先,可以使用Java中提供的InetAddress类的方法将IP地址转换成对应的二进制。 ```java InetAddress inetAddress = InetAddress.getByName("192.168.0.1"); byte[] ipAddress = inetAddress.getAddress(); String ipAddressBinary = ""; for (byte octet : ipAddress) { ipAddressBinary += String.format("%8s", Integer.toBinaryString(octet & 0xFF)).replace(" ", "0"); } System.out.println(ipAddressBinary); ``` 输出结果为: ```bash 11000000101010000000000000000001 ``` 接下来,我们需要将子网掩码转换成二进制。同样可以使用上述的方法将子网掩码转换成二进制。假设使用的子网掩码为255.255.255.0,将其转换成二进制如下: ```bash 11111111111111111111111100000000 ``` 接下来,我们需要计子网掩码的网络位的个数,也就是子网掩码中连续为1的位数。可以使用Java的位运来实现: ```java int maskBits = 0; for (char bit : subnetMaskBinary.toCharArray()) { if (bit == '1') { maskBits++; } } System.out.println("网络位个数:" + maskBits); ``` 输出结果为: ```bash 网络位个数:24 ``` 最后,我们可以根据网络位的个数来计子网掩码的十进制表示形式: ```java int mask = 0xFFFFFFFF << (32 - maskBits); byte[] subnetMask = { (byte) (mask & 0xFF), (byte) ((mask >> 8) & 0xFF), (byte) ((mask >> 16) & 0xFF), (byte) ((mask >> 24) & 0xFF) }; System.out.println("子网掩码:" + InetAddress.getByAddress(subnetMask).getHostAddress()); ``` 输出结果为: ```bash 子网掩码:255.255.255.0 ``` 以上便是使用Java来计子网掩码的过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值