子网掩码基础知识
子网掩码由连续的1和连续的0组成,1表示网络位,0表示主机位。
1. 基础概念
- IPv4地址:由32位二进制组成,通常表示为4个十进制数(如
192.168.1.0 )。
- 子网掩码:用于划分网络和主机部分。例如,
255.255.255.0 (即/24 )表示前24位为网络号,后8位为主机号。
2. 地址数量计算
3. 为什么会有误解?
/24 子网确实有256个地址(含网络和广播地址),但可用主机地址是254个。
- 更大的子网(如
/16 )可包含(2^{16} - 2 = 65534)个可用地址。
4. 关键结论
- 子网地址数不限于256,实际由子网掩码决定。
- 最小子网是
/30 (4个地址,2个可用),最大可达/8 (约1600万个地址)。
5. 计算子网的ip数量方法
- 子网掩码为255.255.240.0,计算为(256-240)*256=4096个
- 子网掩码为255.255.248.0,计算为(256-248)*256=2048个
示例表
子网掩码 |
主机位数 |
总地址数 |
可用地址数 |
掩码 |
/24 (前24位) |
8 |
256 |
254 |
255.255.255.0 |
/23 (前23位) |
9 |
512 |
510 |
前23位是1,后9位是0 |
/16 (前16位) |
16 |
65536 |
65534 |
255.255.0.0 |
前23位掩码计算步骤:
二进制转换- 前23位的二进制表示:
- 11111111.11111111.11111110.00000000
- (前23位全1,第24位为0,剩余全0)
复制代码分段转换为十进制- 第一段(前8位):11111111 → 255
- 第二段(9-16位):11111111 → 255
- 第三段(17-24位):11111110 → 254(因为11111110 = 128+64+32+16+8+4+2 = 254)
- 第四段(剩余位):00000000 → 0
复制代码最终结果java中ip地址转数值的方式- /**
- * ipV4地址转换成Long类型
- * @param ipAddress
- * @return
- */
- public static long ConvertIpv4ToLong(String ipAddress) {
- String[] ipSegments = ipAddress.split("\\.");
- long result = 0;
- for (int i = 0; i < ipSegments.length; i++) {
- int power = 3 - i;
- int segmentValue = Integer.parseInt(ipSegments[i]);
- result += segmentValue * Math.pow(256, power);
- }
- return result;
- }
- /**
- * ipV6地址转换成Long类型
- * @param ipV6Address
- * @return
- */
- public static long ConvertIpv6ToLong(String ipV6Address) {
- String[] hexSegments = ipV6Address.split(":");
- long result = 0;
- for (int i = 0; i < hexSegments.length; i++) {
- int power = 7 - i;
- int segmentValue = Integer.parseInt(hexSegments[i], 16);
- result += segmentValue * Math.pow(65536, power);
- }
- return result;
- }
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |