IP地址优选网写过很多相关文章介绍,一些朋友还是对子网掩码、ip地址的网段等不太了解,我们下面一起来看看网友常常问到的一些相关问题。ipv6子网掩码计算java

一、什么是子网掩码?

在了解ip地址的网段之前,我们先来了解子网掩码,很多对网络了解不深的朋友都对子网掩码有些迷惑, 不了解它是用来干什么的?

子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

说的通俗的话,就是用来分割子网和区分那些ip是同一个网段的,那些不是同一网段的。【路由器产品大全】

例如,两个人都叫张三,但一个张三是张家村的,另一个张三是张村的,那么如何区分这两个张三分别是属于那个村的呢?得让村长来区分,就可以准确的把各自的张三领回村,那么子网掩码就相当于村长,它就是用来区分ip该ip地址是属于那个网段的。

在实际项目中,我们通常会遇到这样的ip地址。

ip地址:192.168.1.1 子网掩码:255.255.255.0

ip地址:192.168.1.2 子网掩码:255.255.255.0

我们可以直接的判断,他们是同属于一个网段的ip地址。

那么对于下面这样的呢?

ip地址:192.168.1.1 子网掩码:255.255.255.0

ip地址:192.168.1.2 子网掩码:255.255.0.0

这两个ip地址虽然在不看掩码的情况下,比较像,但他们并不是同一个网段内的。

这个可以从子网掩码来判断,

192.168.1.1 255.255.255.0是属于192.168.1.0网段的。

而192.168.1.2 255.255.0.0是属于192.168.0.0网段。

二、如何根据掩码来确定ip地址网段

上面我们已经举例了解了子网掩码的作用,接下来我们再来了解如何确定子网掩码和判断ip地址的网段。

通常我们在划分vlan的时候会使用以下例子:

例1:

创建vlan1:ip地址:192.168.1.1 子网掩码:255.255.255.0

创建vlan2: ip地址:192.168.2.1 子网掩码:255.255.255.0

那么他们是不是在同一个网段呢?平时配置ip地址较多的朋友,可以直观的判断,他们并不是属于同一个网段,那么如何计算呢?要想判断两个ip地址是不是在同一个网段,只需将ip地址与子网掩码做与运算,如果得出的结果一样,则这两个ip地址是同一个子网当中。

详细计算

将ip地址192.168.1.1转换为二进制

11000000 10101000 00000001 00000001

将子网掩码255.255.255.0转换成二进制

11111111.11111111.11111111.00000000

然后将两者相“与(and)"运算:

11000000 10101000 00000001 00000001

11111111.11111111.11111111.00000000

然后得到:

11000000 10101000 00000001 00000000

转换成网络号就是:192.168.1.0

将ip地址192.168.2.1转换为二进制

11000000 10101000 00000010 00000001

将子网掩码255.255.255.0转换成二进制

11111111.11111111.11111111.00000000

然后将两者相“与(and)"运算:

11000000 10101000 00000010 00000001

11111111.11111111.11111111.00000000

然后得到:

11000000 10101000 00000010 00000000

转换成网络号就是:192.168.2.0

很明显,二者的结果是不一样的,一个是网段192.168.1.0,一个是网段192.168.2.0,所以不是一个网段。

例2

ip地址1:192.168.1.1 子网掩码:255.255.252.0

ip地址2:192.168.2.1 子网掩码:255.255.252.0

很明显,我们这个和上面例1的ip地址是一样的,只是子网掩码不一样,如果不看子网掩码,首先可能就判断他们不是同一个网段。

这里面和上面例1中唯一变化就是子网掩码从255.255.255.0换成了255.255.252.0了,那我们来看下,他们是否属于同一个网段。

详细计算

将ip地址192.168.1.1转换为二进制

11000000 10101000 00000001 00000001

将子网掩码255.255.252.0转换成二进制

11111111.11111111.11111100.00000000

然后将两者相“与(and)"运算:

11000000 10101000 00000001 00000001

11111111.11111111.11111100.00000000

然后得到:

11000000 10101000 00000000 00000000

转换成网络号就是:192.168.0.0

将ip地址192.168.2.1转换为二进制

11000000 10101000 00000010 00000001

将子网掩码255.255.252.0转换成二进制

11111111.11111111.11111100.00000000

然后将两者相“与(and)"运算:

11000000 10101000 00000010 00000001

11111111.11111111.11111100.00000000

然后得到:

11000000 10101000 00000000 00000000

转换成网络号就是:192.168.0.0

很明显,二者的结果是一样的,都是属于192.168.0.0网段,所以他们是同属于一个网段。

当然,如果对子网较熟了就不需要经过这些运算了,大部分的网段可以通过分析子网掩码与ip地址就可以判断出来是否属于网一网段,但前提是你需要熟悉网段的原理与运算的方法。

三、如何根据ip地址推算子网掩码

确定ip地址子网掩码

大部分的情况下,我们网络中只要不超过254台主机的的话,子网掩码都可以设置成255.255.255.0。那么超过了254台主机的话怎么办呢?

可以划分vlan,也可以设置成一个大网段,划分vlan我们就不说了,上面有例子,设置成一个大网段就有一个难点,如何确定这个大网段里面的子网掩码呢?

例如

假设监控网络中有600个点位,我们现在也不想把它划分vlan(实际项目中大部分是会划分vlan的),假设只想用一个大网段把这600个点位分配ip地址,如何设置ip地址,如何确实子网掩码?

分析:首先我们知道600个点位,可以使用3个254个ip地址段来分配。

可以使用

ip段一:192.168.0.1——192.168.0.254

ip段二:192.168.1.1——192.168.1.254

ip段三:192.168.2.1——192.168.2.254

每个网段有254个ip地址,完全够600个点位用的。

那么问题来了,如果要使这三个ip段在同一个网段内,那么这个大网段共同的子网掩码是多少呢?

我们来分析下:

将ip地址192.168.0.1转换为二进制

11000000 10101000 00000000 00000001

将ip地址192.168.1.1转换为二进制

11000000 10101000 00000001 00000001

将ip地址192.168.2.1转换为二进制

11000000 10101000 00000010 00000001

转换成了二进制,可以看得出,三个ip段的二进制前面22位的是不变的,那么可以将他们表示成:

ip段一:192.168.0.1/22

ip段二:192.168.1.1/22

ip段三:192.168.2.1/22

这种192.168.2.x/22形式的ip地址相信大家平时都见过,就是已经告诉了子网掩码了。

也就是说他们共同的子网掩码二进制前面22个都是1。

11111111 11111111 11111100 00000000

转换成十进制,那就是255.255.252.0,所以他们共同的子网掩码就是255.255.252.0。

当然在实际项目中,与网络接触较多的人不需要通过一系列的换算,直接可以通过简单的判断估算出来这个大网段的子网掩码,因此,今天是讲原理,方便大家理解,所以所有的换算都是通过运算出来的。

java 10进制 掩码运算_ipv6子网掩码计算java相关推荐

  1. java 10进制转16进制带ox格式输出

    摘自https://yq.aliyun.com/wenzhang/show_28512 java 10进制转16进制带ox格式输出 如 60(10进制) 输出 : 0x00,0x00,0x00,0x3 ...

  2. java 10进制 和16进制相互转换

    1 将java10进制数字转换为16进制 String hex= Integer.toHexString(numb); 2 将java 16进制字符转换为10进制数 BigInteger bigint ...

  3. java 10进制转64进制_十进制与64进制互相转换算法

    实现代码如下: /** * */ package com.M.controller.test; import java.util.Stack; /** * * @author online zuozu ...

  4. java 10进制转64进制_JAVA中实现十进制与其它自定义进制进行相互转换。 - yz124的日志 - 网易博客...

    我们通常用到的数字都是十进制的,日常使用的也是这样,但是在程序中,我们可能还会经常用到二进制.八进制.十六进制的数字.既然程序中会使用到,那么就会有它存在的道理.有些时候,将数字用字符串保存到文件或者 ...

  5. java 10进制转 000x_java 如何把 00 转换成 0x00 或者 10 转换成 0x10

    public static void main(String[] args) { String s = "00000018A0010098C68E00989A690000000000BC61 ...

  6. java 10进制转2进制递归算法_十进制转二进制

    十进制转二进制 JAVA实现 一.toBinaryString()方法 利用Java自己封装的转换二进制静态方法直接转换. public static void main(String[] args) ...

  7. java 10进制转16进制

    package p2.线性结构; //十进制 转 十六进制 public class DecToHex {     public static void main(String[] args) {   ...

  8. java 10进制转2进制递归算法_Java十进制转二进制,递归算法

    用递归算法求一个int的二进制字符串: 思路是:递归最简单情况(递归出口)是0和1:其余的是先调用递归算出n/2的二进制字符串,然后加上n时的位数(n % 2). import java.util.S ...

  9. 子网掩码转换:长度<-->点分10进制

    转载的!转载自:子网掩码转换:长度点分10进制-s_x_g-ChinaUnix博客 子网掩码常见的表示方法有两种: 一种用长度表示, 比如24, 表示掩码中含有二进制1的个数 一种用点分10进制表示, ...

最新文章

  1. dedecms的特性-----不完整
  2. .net core 中文乱码问题
  3. 干货 | 当你在携程搜索时,背后的推荐系统是如何工作的
  4. 迷宫求解无敌版(递归调用法)
  5. WP8开发札记(一)WP8应用生命周期管理
  6. JavaScript变异与非变异数组方法
  7. 李迟2021年10月知识总结
  8. 47 -算法 -回文串 -Leetcode 125 - 验证回文串
  9. 数据库系统概论-并发控制
  10. Java后台开发精选知识图谱
  11. java-枚举类的定义及使用
  12. 苹果手机itunes显示无法连接服务器,苹果手机无法连接到iTunes Store怎么办 连接失败解决方法...
  13. 计算机ROM指什么意思,ROM是什么 刷ROM是什么意思
  14. 中山大学3D游戏设计读书笔记 unity3D Note2
  15. 李宏毅《机器学习》误差
  16. The Progress, Challenges, and Perspectives of Directed Greybox Fuzzing 论文笔记
  17. 四川2021年高考成绩等位分查询,2019年四川高考等位分查询,志愿填报更精准!...
  18. TokenInsight 与 BitUniverse 达成战略合作,用数据提高收益降低风险
  19. 内存申请与释放(转)
  20. 在LINUX中用cal命令解了一段人类文明历史 1752年 - 九月

热门文章

  1. Android屏幕分辨率详解(VGA、HVGA、QVGA、WVGA、WQVGA)
  2. Win11 安装安卓子系统最新教程
  3. 开门!要源代码!这个网红机械妖姬竟踢爆对方公司总部
  4. 算法面经总结(15)机器学习常见知识
  5. 如何搭建Wish、eBay、美客多 一天 成号测评环境系统?
  6. windows 访问控制模型(一)
  7. 初学scala错误解决总结
  8. 关于计算机组装与维护的论文,《计算机组装与维护》论文,关于《计算机组装维护》教学相关参考文献资料-免费论文范文...
  9. ppt文件被彻底删除后如何恢复
  10. Android Studio利用Build.gradle导入Git commit ID、Git Branch、User等版本信息