沂水网站制作,企业 网站备案 法人,河南郑州网站推广优化,做网页设计一个月能挣多少有时候#xff0c;服务后端需要对客户端的所属组进行判断#xff0c;以决定何种访问策略权限。而客户端IP所在子网是一种很简单易实现的分组方法。 虽然现在早已经进入IPv6时代#xff0c;不过IPv4在局域网仍广泛使用#xff0c;它的定义规则相对简单#xff0c;本文介绍的…有时候服务后端需要对客户端的所属组进行判断以决定何种访问策略权限。而客户端IP所在子网是一种很简单易实现的分组方法。 虽然现在早已经进入IPv6时代不过IPv4在局域网仍广泛使用它的定义规则相对简单本文介绍的是IPv4子网判断的算法。 一个IPv4的地址就是4段0-255之间的数字以.隔开实际上按二进制的话有效位数是32位而一个子网的地址则是一个IPV4地址加掩码构成掩码也是4段0-255之间的数字以.隔开实际上按二进制的话有效位数是32位一般说的掩码位数是指32位中从左到右连续1的个数定义很简单。那么判断一个客户端的IP地址是否属于某个子网可以按以下方法判断
function testip(ip) { //ip地址合法性检查 正则表达式
if (/^(?:(?:1[0-9][0-9]\.)|(?:2[0-4][0-9]\.)|(?:25[0-5]\.)|(?:[1-9][0-9]\.)|(?:[0-9]\.)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))$/.test(ip)) {return true}
else { return false }
}function insubnet(clientip,ipsegment,mask) {if (testip(clientip) testip(clientip) testip(clientip)) {let ipv4clientip.split(.);let ipsv4ipsegment.split(.);let maskv4mask.split(.);if ( ((ipv4[0]maskv4[0])ipsv4[0]) ((ipv4[1]maskv4[1])ipsv4[1]) ((ipv4[2]maskv4[2])ipsv4[2]) ((ipv4[3]maskv4[3])ipsv4[3]) ) { return true; }else { return false; }}else { return false; }
}例程中对客户端IP地址、子网地址和掩码按正则表达式进行合法性检查实际环境可能不一定需要这样操作。