美文网首页WEB学习笔记VUE学习笔记
Vue学习笔记-校验IP是否在同一网段

Vue学习笔记-校验IP是否在同一网段

作者: 赵客缦胡缨v吴钩霜雪明 | 来源:发表于2020-07-27 16:32 被阅读0次

    一.IP地址分类

    D和E不对民用组织开放,所以我们能使用IP地址的只有ABC三类。

    A、B、C三类IP地址的特征:当将IP地址写成二进制形式时,A类地址的第一位总是0,B类地址的前两位总是10,C类地址的前三位总是110。

    主机号:用于识别该网络中的主机。

    A类地址

    (1)A类地址第1字节为网络地址,其它3个字节为主机地址。它的第1个字节的第一位固定为0.

    (2)A类地址网络号范围:1.0.0.0—126.0.0.0

    (3)A类地址中的私有地址和保留地址:

    ① 10.X.X.X是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。 
    
    范围(10.0.0.0—10.255.255.255) 
    
    ② 127.X.X.X是保留地址,用做循环测试用的。 
    

    B类地址

    (1) B类地址第1字节和第2字节为网络地址,其它2个字节为主机地址。它的第1个字节的前两位固定为10.

    (2) B类地址网络号范围:128.0.0.0—191.255.0.0。

    (3) B类地址的私有地址和保留地址

    ① 172.16.0.0—172.31.255.255是私有地址 
    
    ② 169.254.X.X是保留地址。
    
    如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器。
    
    就会得到其中一个IP。 
    

    191.255.255.255是广播地址,不能分配。

    C类地址

    (1)C类地址第1字节、第2字节和第3个字节为网络地址,第4个字节为主机地址。另外第1个字节的前三位固定为110。

    (2)C类地址网络号范围:192.0.0.0—223.255.255.0。

    (3)C类地址中的私有地址: 192.168.X.X是私有地址。(192.168.0.0—192.168.255.255)

    判断四组IP的第一个数组来确定是哪类。

    【注意:127.0.0.1不再里面,是因为它代表当前计算机自己】

    二.判断每一类IP是否属于一个网段

    1.A类

    A类IP用第一个数字来表示不同网段。

    例如:1.0.0.0和2.0.0.0是不同的网络。

    不同的网络之间要使用路由器,路由器是用来跨网络通信。

    但是在同一个网络通信,只用使用交换机就可以。

    A类IP的第一个数字相同,而后三个不同,表示在一个网络中的不同的主机。

    A类的网段数量只有126个,但是主机数有2^24-2

    主机数为什么要减去2? : 因为1.0.0.0代表网络本身,不能分配。而1.255.255.255代表当前网络的广播地址。

    2^24是从哪里来的? : 第一个数是8位,后面的是24位。

    2.B类

    B类IP是前两个数字来表示不同网段。

    例如:191.224.0.0和191.154.0.0是不同的网络。

    但是191.224.0.0和191.224.255.255是同一个网段中的不同主机。

    所以能用的主机数是2^16-2

    3.C类

    C类IP是前三个数代表不同网段,最后一个数组代表同一个网段中的不同主机。

    例如:192.224.0.0和192.224.1.0是不同的网络。

    但是192.224.0.0和192.224.0.1是同一个网段中的不同主机。

    所以能用的主机数是2^8-2。

    三.校验两个IP是否在同一网段

    1)基本思路:
    要判断两个IP地址是否在同一个网段,将它们的IP地址分别与子网掩码做与运算,得到的结果为网络号,如果网络号相同,就在同一子网,否则,不在同一子网。

    2)具体实现:

        /**
         * [isEqualIPAddress 判断两个IP地址是否在同一个网段]
         * @param  {[String]}  addr1 [地址一]
         * @param  {[String]}  addr2 [地址二]
         * @param  {[String]}  mask  [子网掩码]
         * @return {Boolean}         [true or false]
         */
        function isEqualIPAddress (addr1,addr2,mask){
            if(!addr1 || !addr2 || !mask){
                console.log("各参数不能为空");
                return false;
            }
            var 
            res1 = [],
            res2 = [];
            addr1 = addr1.split(".");
            addr2 = addr2.split(".");
            mask  = mask.split(".");
            for(var i = 0,ilen = addr1.length; i < ilen ; i += 1){
                res1.push(parseInt(addr1[i]) & parseInt(mask[i]));
                res2.push(parseInt(addr2[i]) & parseInt(mask[i]));
            }
            if(res1.join(".") == res2.join(".")){
                console.log("在同一个网段");
                return true;
            }else{
                console.log("不在同一个网段");
                return false;
            }
        }
    

    相关文章

      网友评论

        本文标题:Vue学习笔记-校验IP是否在同一网段

        本文链接:https://www.haomeiwen.com/subject/phnzlktx.html