当前位置: 首页 > 面试题库 >

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

闾丘正志
2023-03-14
问题内容

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


问题答案:

假设文本表示为字符串:

  • 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字节),但是它将使用两个字段。


 类似资料:
  • 问题内容: 我有使用地址的应用程序(它存储它们的时间很长),因此它只了解地址。 可以将地址转换为with 吗? 问题答案: 尽管IPv4地址范围具有等效的IPv6,但是您不能将所有IPv6地址都转换为IPv4-IPv6地址比IPv4地址更多。 解决此问题的唯一明智的方法是更新您的应用程序,以便能够理解和存储IPv6地址。

  • 我目前正在尝试创建一个聊天服务器作为一个分配,并希望每个消息包含一个头。它将包含ipv4地址,后跟一个字母,然后是用户名 我可以很容易地从字节中解码字符串字母,但现在我很难从字节中解码ipv4地址 我只需要一种方法来尝试和解码四个字节的整数到一个字符串或一些沿这些线的东西 谢谢:D

  • 我正在尝试的是: 我有一个结构: 编辑二:我目前最好的尝试 但现在我不知道如何打印ip和端口

  • 我有一个python应用程序,它需要为IPv6连接选择一个特定的本地源地址,但可以为IPv4连接使用“any”0.0.0.0。但应用程序在中使用主机名,以允许从名称查找地址。 那么,如果在调用之前我不知道是IPv4地址还是IPv6地址,那么如何将特定的IPv6源地址和IPv4“any”地址绑定到本地套接字? 一定有更好的办法。我怀疑我必须自己实现地址查找和选择,并将地址而不是名称传递给。这样,在进

  • 问题内容: 正如“具有ipv6功能的inet_aton和inet_ntoa功能所需 ”中所要求的那样,当前没有用于存储IPv6地址的MySQL函数。建议用于存储/插入的数据类型/功能是什么?(我不打算将它们存储为字符串)。我也不想将IPv6地址分为2个INT。 问题答案: 怎么样: 那应该足够有效。 如该错误报告中所述,当前在MySQL服务器中没有将文本IPv6地址从二进制转换为二进制的功能。您需

  • 此函数创建sockaddr_in6: 基本上,如果地址是IPv4地址,我会在它前面加上,并将该族设置为af_inet。 这有可能做到。如果是,我做错了什么?