当前位置: 首页 > news >正文

IPv4子网判断

有时候,服务后端需要对客户端的所属组进行判断,以决定何种访问策略权限。而客户端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 ipv4=clientip.split(".");let ipsv4=ipsegment.split(".");let maskv4=mask.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地址、子网地址和掩码按正则表达式进行合法性检查,实际环境可能不一定需要这样操作。

http://www.lryc.cn/news/332375.html

相关文章:

  • CSS 实现航班起飞、飞行和降落动画
  • 设计模式——建造者模式03
  • 【机器学习】《机器学习算法竞赛实战》思考练习(更新中……)
  • 机场数据治理系列介绍(5)民用机场智慧能源系统评价体系设计
  • [LeetCode][LCR190]加密运算——全加器的实现
  • Linux: linux常见操作指令
  • 【BPNN】BP神经网络代码
  • 基于mqtt的物联网控制移动应用程序开发
  • MPLS-基础、LSR、LSP、标签、体系结构
  • 【RV1126】Ubuntu22.04下sdk编译问题汇集
  • 51单片机使用uart串口和助手简单调试
  • Python网络爬虫(五):b站弹幕
  • Docker环境安装Postgresql数据库Posrgresql 15.6
  • 当代软件专业大学生与青年在新质生产力背景下的发展探究
  • MATLAB——知识点备忘
  • C++入门(以c为基础)——学习笔记2
  • 设计模式-单例模式(懒汉式)
  • 算法| ss 回溯
  • 基于R语言绘制-散点小提琴图
  • Arduino开发 esp32cam+opencv人脸识别距离+语音提醒
  • LeNet卷积神经网络
  • Python常用算法思想--回溯算法思想详解【附源码】
  • Day5-Hive的结构和优化、数据文件存储格式
  • 01 计算机网络发展与分类
  • ubuntu安装sublime3并设置中文
  • python调用阿里云短信配置
  • MySQL 8.0.13安装配置教程
  • 【idea快捷键】idea开发java过程中常用的快捷键
  • 2024年腾讯云GPU云服务器配置价格表(内存/系统盘/地域)
  • 重构数据访问层-优化数据访问的开发