公有IP和私有IP介绍

什么是公有IP地址(公网IP):

组建一个企业级网络,需要去向“电信运营商ISP”申请一个接入Internet的宽带,同时ISP还会给我们分配一个或多个IP地址,这些IP地址可以供我们企业内部上网,这些ISP分配给我们的IP,就是公有IP。

公有地址(Public address,也可称为公网地址)由Internet NIC(Internet Network Information Center因特网信息中心)负责。这些IP地址分配给注册并向Internet NIC提出申请的组织机构。通过它直接访问因特网,它是广域网范畴内的。

什么是私有IP地址(私网IP):

我们企业或家庭内部组建局域网用的IP,一般都会用私有IP。

私有地址(Private address,也可称为专网地址)属于非注册地址,专门为组织机构内部使用,它是局域网范畴内的,私有IP禁止出现在Internet中,在ISP连接用户的地方,将来自于私有IP的流量全部都会阻止并丢掉。

《如果在企业内部的电脑要访问Internet,则需要在企业边界上用“NAT技术”将私网IP转成公网IP才能正常的上网。》

全部IP地址的范围:

在《IP地址作用》这篇文章里,我们也介绍过IP地址的范围,这里再来看一看。

IP地址,一共分成了5类,范围分别如下:

  • A类IP:从0.0.0.0 – 127.255.255.255,共有16777216个IP
  • B类IP:从128.0.0.0 – 191.255.255.255,共有65536个IP
  • C类IP:从192.0.0.0 – 223.255.255.255,共有256个IP
  • D类IP:从224.0.0.0 – 239.255.255.255
  • E类IP:从240.0.0.0 – 255.255.255.255

而其中,能在Internet或被用户使用的A、B、C三类,而D类用作组播地址,E类作为科研保留地址段

公有IP地址的范围:

  • A类的公有IP:
    1.0.0.0~9.255.255.255
    11.0.0.0~126.255.255.255
  • B类的公有IP:
    128.0.0.0~172.15.255.255
    172.32.0.0~191.255.255.255
  • C类的公有IP:
    192.0.0.0~192.168.255.255
    192.169.0.0~223.255.255.255

私有IP地址的范围:

  • A类私有IP地址:
    10.0.0.0~10.255.255.255
  • B类私有IP地址:
    172.16.0.0~172.31.255.255
  • C类私有IP地址:
    192.168.0.0~192.168.255.255

js 判断方式:

function isInnerIPFn(ipAddress){

var first = substr(0,1);

    var isInnerIp = false;//默认给定IP不是内网IP        
    var ipNum = getIpNum(ipAddress);        
    /**  
     * 私有IP:A类  10.0.0.0    -10.255.255.255  
     *       B类  172.16.0.0  -172.31.255.255     
     *       C类  192.168.0.0 -192.168.255.255    
     *       D类   127.0.0.0   -127.255.255.255(环回地址)   
     **/       
    var aBegin = getIpNum("10.0.0.0");        
    var aEnd = getIpNum("10.255.255.255");        
    var bBegin = getIpNum("172.16.0.0");        
    var bEnd = getIpNum("172.31.255.255");        
    var cBegin = getIpNum("192.168.0.0");        
    var cEnd = getIpNum("192.168.255.255");     
    var dBegin = getIpNum("127.0.0.0");        
    var dEnd = getIpNum("127.255.255.255");    
    isInnerIp = isInner(ipNum,aBegin,aEnd) || isInner(ipNum,bBegin,bEnd) || isInner(ipNum,cBegin,cEnd);    
    console.log('是否是内网:'+isInnerIp);      
    return isInnerIp;    
}    


//将点分ip转化为数字型
function getIpNum(ipAddress) {        
    var ip = ipAddress.split(".");        
    var a = parseInt(ip[0]);        
    var b = parseInt(ip[1]);        
    var c = parseInt(ip[2]);        
    var d = parseInt(ip[3]);    
    var ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;        
    return ipNum;        
}       
 //判断ip地址是否在某个范围内 
function isInner(userIp,begin,end){        
    return (userIp>=begin) && (userIp<=end);        
}

猜你喜欢

转载自blog.csdn.net/weixin_37569048/article/details/80664472