嗨,老铁,欢迎来到我的博客!

如果觉得我的内容还不错的话,可以关注下我在 segmentfault.com 上的直播。我主要从事 PHP 和 Java 方面的开发,《深入 PHP 内核》作者之一。

[视频直播] PHP 进阶之路 - 亿级 pv 网站架构的技术细节与套路 直播中我将毫无保留的分享我这六年的全部工作经验和踩坑的故事,以及会穿插着一些面试中的 考点难点加分点

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

子网掩码是用来判断任意两台计算机的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


嗨,老铁,欢迎来到我的博客!

如果觉得我的内容还不错的话,可以关注下我在 segmentfault.com 上的直播。我主要从事 PHP 和 Java 方面的开发,《深入 PHP 内核》作者之一。

[视频直播] PHP 进阶之路 - 亿级 pv 网站架构的技术细节与套路 直播中我将毫无保留的分享我这六年的全部工作经验和踩坑的故事,以及会穿插着一些面试中的 考点难点加分点

评论列表