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

IP地址在后端怎么存才好?

一、地址的区别

在网络中,IP地址分为IPV4和IPV6,IPV4是一共占32位的,每8位小数点分隔,IPV6占128位,16位为一组,一共是8组。

IPV4

列:192.168.1.12(每组转十进制后)

11000000.10101000.00000001.00001100(对应每组的二进制)

IPV6

列: 2001:0db8:85a3:0000:0000:8a2e:0370:7334(每组都是用16进制去表示的,冒号分隔) 

二、字符串存取 

一般思想就是将IP地址直接用字符串进行存取,这样就很方便,并且也很直观,但是可能在性能(比较,排序)方面有些不足,字符串通常操作比较慢。

2.1 IPV4空间大小

列如,存取192.168.1.12这个IPV4的地址,那么一个字符的大小为1字节,那么这个字符串的大小为12字节,对于IPV4的地址来说,最小地址为:1.1.1.1,最大是255.255.255.255,所以存储范围是7~15字节。

2.2 IPV6空间大小

若是直接存取IPV6地址(128位)为字符串,那么最大是存取39个字符,存储空间需要很大。

三、整数存取

由于IPV4总共是占32位,所以我们可以使用32位的无符号整数去存取每一组的二进制拼凑后的整数,这样会使得空间大小为4字节。

列如:11000000.10101000.00000001.00001100这个二进制去除小数点将其转换为十进制,大约是  12648196

同样IPV6也可以使用整数存取,我们可以将其拆分为俩个部分,以上面的IPV6为列:

2001:0db8:85a3:0000:0000:8a2e:0370:7334

将其拆分为2001:0db8:85a3:0000和0000:8a2e:0370:7334,分别转整数,存俩个整数值,16进制转10进制。

四、总结

整数存取和字符串存取各有各的优缺点。

4.1 字符串存取优缺点

字符串存取上来说比较方便且直观,但是空间上消耗比较大,并且在进行IP地址范围查询与比较时,性能上也不是很快。

4.2 整数存取的优缺点

整数存储,空间上占优势,但是,也有一些进行CRUD操作时逻辑上的麻烦,因为,我们是把它拆分合并进行存储的整数,那么我们进行一些比较判断的时候,这个时候还需要进行合并,拼凑成完整的IP再去比较。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java项目中整合多个pdf合并为一个pdf
  • 【Java版数据结构】初识泛型
  • OpenKylin 系统中禁用 Win 键
  • html+css前端作业 王者荣耀官网1个页面(带报告)
  • Java面试八股之Spring框架的核心模块
  • Web动画(lottie篇)
  • Unity3D结合AI教育大模型 开发AI教师 AI外教 AI英语教师案例
  • 昇思25天学习打卡营第23天|LSTM+CRF序列标注
  • 图像生成中图像质量评估指标— LPIPS介绍
  • JCR一区级 | Matlab实现TTAO-Transformer-LSTM多变量回归预测
  • 分享几种电商平台商品数据的批量自动抓取方式
  • STM32CubeIDE(CAN)
  • Java设计模式—单例模式(Singleton Pattern)
  • W30-python03-pytest+selenium+allure访问百度网站实例
  • SpringBoot中如何使用RabbitMq
  • [PHP内核探索]PHP中的哈希表
  • 【EOS】Cleos基础
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • canvas 绘制双线技巧
  • conda常用的命令
  • IOS评论框不贴底(ios12新bug)
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Java|序列化异常StreamCorruptedException的解决方法
  • java多线程
  • JS笔记四:作用域、变量(函数)提升
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • SpriteKit 技巧之添加背景图片
  • supervisor 永不挂掉的进程 安装以及使用
  • Vue组件定义
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 对象引论
  • 聚簇索引和非聚簇索引
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 前嗅ForeSpider教程:创建模板
  • 如何用vue打造一个移动端音乐播放器
  • elasticsearch-head插件安装
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • ## 基础知识
  • #LLM入门|Prompt#3.3_存储_Memory
  • #QT(QCharts绘制曲线)
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • $.ajax()参数及用法
  • (10)ATF MMU转换表
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (a /b)*c的值
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (南京观海微电子)——I3C协议介绍
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (转载)利用webkit抓取动态网页和链接