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

相关推荐
迈巴赫车主几秒前
蓝桥杯20534爆破 java
java·数据结构·算法·职场和发展·蓝桥杯
汝生淮南吾在北5 分钟前
SpringBoot+Vue在线笔记管理系统
java·vue.js·spring boot·笔记·毕业设计·毕设
kkkkkkkkl2414 分钟前
springboot日志实现
java·spring boot
Sally_xy16 分钟前
安装 Docker
java·docker·容器
w***H65017 分钟前
SpringCloud-持久层框架MyBatis Plus的使用与原理详解
spring·spring cloud·mybatis
洛克大航海23 分钟前
Maven 的下载安装配置教程
java·maven
雨中飘荡的记忆36 分钟前
Spring MVC详解
java·spring
即将进化成人机39 分钟前
Spring Boot入门
java·spring boot·后端
苏打水com41 分钟前
HTML/CSS 核心考点详解(字节跳动 ToB 中台场景)
java·前端·javascript
-大头.41 分钟前
Spring批处理与任务管理全解析
java·linux·spring