IP 地址可以包含多少个字符?

IP 地址可以包含多少个字符?

我必须在 mysql 表中创建一个字段来存储 ip 地址。我需要知道 ip 地址的最大字符数。无论是 ipv4、ipv6 还是其他可能导致有效 ip 地址异常长的类型。那么我应该将字符限制设置为多少呢?

我要求的长度是指单词“foo”有 3 个字符,而不是以字节或类似的东西来表示。

答案1

IPv6 地址最长为 8 组 4 个字符(共 32 个),每组用冒号分隔。这样一共是 39 个字符。

IPv4 地址最多包含 4 组 3 个数字(12 个字符),每组数字之间用点 (.) 分隔。这样一共 15 个字符。

所有这些都假设 IP 地址应以人类可读的形式存储。我更喜欢以十进制形式存储 IP 地址,因为你永远不知道它会如何使用。你的里程可能会有所不同。

答案2

这并不像人们想象的那么容易。

在大多数情况下,您四十五

普通 IPv6 地址

0000:0000:0000:0000:0000:0000:0000:0000

8 * 4 + 7 =三十九


IPv4 映射的 IPv6 地址

rfc4291

0000:0000:0000:0000:0000:ffff:192.168.100.228

(6 * 4 + 5)+ 1 + (4 * 3 + 3)= 29 + 1 + 15 =四十五


头文件定义 INET6_ADDRSTRLEN 为四十六


带范围区域的 IPv6

rfc4007

范围区域可以是数字,也可以是字符串(接口名称)。

ff02::5678%5
ff08::9abc%interface10

接口名称的长度取决于系统。在 Linux 中,它由 IFNAMSIZ 常量定义。16 是一个常见值。使用上面的 45 个字符:

45 + 1 + 16 =62


另请参阅https://stackoverflow.com/questions/166132/maximum-length-of-the-textual-representation-of-an-ipv6-address

相关内容