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再去比较。

相关推荐
AI人工智能+电脑小能手6 小时前
【大白话说Java面试题 第87题】【Mysql篇】第17题:分布式事务的实现原理?
java·数据库·分布式·mysql·面试
来杯@Java7 小时前
图书管理系统(基于springboot+vue前后端分离的项目)计算机毕业设计java
java·spring boot·spring·vue·毕业设计·mybatis·课程设计
卷毛的技术笔记8 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
编程大师哥8 小时前
匿名函数 lambda + 高阶函数
java·python·算法
東雪木8 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
adrninistrat0r8 小时前
Java调用链MCP分析工具
java·python·ai编程
噜噜噜阿鲁~9 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言
春生野草9 小时前
反射、Tomcat执行
java·开发语言
_日拱一卒10 小时前
LeetCode:207课程表
java·数据结构·算法·leetcode·职场和发展
飞翔中文网10 小时前
Java学习笔记之抽象类与接口(设计思想)
java·笔记·学习