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

相关推荐
珹洺6 分钟前
Java-servlet(完结篇)过滤器乱码解决与监听器
java·运维·服务器·hive·servlet·jsp
小开不是小可爱1 小时前
leetcode_383. 赎金信_java
java·数据结构·算法·leetcode
kill bert4 小时前
Java八股文背诵 第四天JVM
java·开发语言·jvm
你是理想7 小时前
wait 和notify ,notifyAll,sleep
java·开发语言·jvm
helloworld工程师7 小时前
【微服务】SpringBoot整合LangChain4j 操作AI大模型实战详解
java·eclipse·tomcat·maven
Java&Develop7 小时前
idea里面不能运行 node 命令 cmd 里面可以运行咋回事啊
java·ide·intellij-idea
q567315238 小时前
使用Java的HttpClient实现文件下载器
java·开发语言·爬虫·scrapy
你们补药再卷啦8 小时前
不用额外下载jar包,idea快速查看使用的组件源码
java·ide·intellij-idea
爱的叹息9 小时前
Spring Boot 自定义配置类(包含字符串、数字、布尔、小数、集合、映射、嵌套对象)实现步骤及示例
java·linux·spring boot
@西瓜@9 小时前
JAVAEE(多线程-线程池)
java·开发语言