周梦康 发表于 2017-02-15 1816 次浏览 标签 : 计算机基础网络基础子网掩码

子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络。

最为简单的理解就是两台计算机各自的IP地址与子网掩码进行AND运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。

子网掩码换算为二进制,子网掩码连续全1的是网络地址,后面的是主机地址。

function accessAble($ip){
    $accessIp = [
        "xxx.xxx.xxx.xxx/22",
        "xxx.xxx.xxx.xxx/24",
        "xxx.xxx.xxx.xxx/26",
        "xxx.xxx.xxx.xxx/27",
    ];

    foreach ($accessIp as $value) {
        list($range, $mark_len) = explode("/", $value);
        $mark = 0xFFFFFFFF << (32 - $mark_len) & 0xFFFFFFFF;
    
        $range_dec = ip2long($range);
        $ip_dec = ip2long($ip);
    
        if (($ip_dec & $mark) == ($range_dec & $mark)){
            return true;
        }
    }

    return false;
}

http://www.2cto.com/net/201208/145962.html


评论列表