test - 纯ipv6站点
IPv6地址的文本表示的最大长度? (4)
一个稍微不正确,天真的选择是:
8 * 4 + 7 = 39
8组4位数,7':'之间。
但要考虑IPv4映射的IPv6地址功能,例如。 [::ffff:192.168.0.1]
,完全写出来:
(6 * 4 + 5)+ 1 +(4 * 3 + 3)= 29 + 1 + 15 = 45
请注意,这是一种输入/显示惯例 - 数据量相同,对于存储来说,最好在原始冒号分隔格式上进行标准化。 [0000:0000:0000:0000:ffff:7fa8:0001]
。
我想将PHP中$_SERVER["REMOTE_ADDR"]
返回的数据存储到数据库字段中,这真的很简单。 问题是,我无法找到有关IPv6地址文本表示的最大长度的任何适当信息,这是Web服务器通过$_SERVER["REMOTE_ADDR"]
。
我对将文本表示转换为通常编码的128位数据不感兴趣,我只想知道需要多少个字符来存储由$_SERVER["REMOTE_ADDR"]
返回的任何IPv6地址。
回答我自己的问题:
IPv6地址通常写成八组,每组四个十六进制数字,每组由冒号(:)分隔。
那最多39个字符。
如所示,标准ipv6地址最多为45个字符,但ipv6地址也可以包括结尾%,后跟“范围”或“区域”字符串,其不具有固定长度,但通常是小的正整数或网络接口名称,因此实际上它可以大于45个字符。 网络接口名称通常是“eth0”,“eth1”,“wlan0”,所以选择50作为限制可能足够好。
我认为@Deepak在这个链接中的回答更接近正确答案。 客户端IP地址的最大长度 。 所以正确的大小是45而不是39.有时候我们尝试在字段大小上进行拼写,但是如果我们准备足够的存储大小似乎会更好。