一尘不染

将IPv4,IPv6地址存储为字符串的大小

mysql

在MySQL数据库中以字符串形式存储IPv4,IPv6地址的理想大小应该是多少。varchar(32)是否足够?


阅读 961

收藏
2020-05-17

共1个答案

一尘不染

假设文本表示为字符串:

  • IPv4 15个字符(xxx.xxx.xxx.xxx格式,12 + 3分隔符)
  • IPv6的45个字符

这些是字符串的最大长度。

另存为字符串的替代方法:

  • IPv4是32位,因此可以容纳4个字节的MySQL数据类型可以做到,使用INT UNSIGNED和共同使用INET_ATONINET_NTOA处理从地址到数字以及从数字到地址的转换
SELECT INET_ATON('209.207.224.40');
        -> 3520061480

SELECT INET_NTOA(3520061480);
        -> '209.207.224.40'
  • 不幸的是,对于IPv6,MySQL的数据类型不是16字节,但是可以将IPv6转换为规范形式,然后将其分成2个BIGINT(8字节),但是它将使用两个字段。
2020-05-17