我必须在 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 地址
0000:0000:0000:0000:0000:ffff:192.168.100.228
(6 * 4 + 5)+ 1 + (4 * 3 + 3)= 29 + 1 + 15 =四十五
头文件定义 INET6_ADDRSTRLEN 为四十六
带范围区域的 IPv6
范围区域可以是数字,也可以是字符串(接口名称)。
ff02::5678%5
ff08::9abc%interface10
接口名称的长度取决于系统。在 Linux 中,它由 IFNAMSIZ 常量定义。16 是一个常见值。使用上面的 45 个字符:
45 + 1 + 16 =62