IPv6地址的文本表示的最大长度?
我想将PHP中$_SERVER["REMOTE_ADDR"]
返回的数据存储到数据库字段中,这真的很简单。 问题是,我无法找到有关IPv6地址文本表示的最大长度的任何适当信息,这是Web服务器通过$_SERVER["REMOTE_ADDR"]
。
我对将文本表示转换为通常编码的128位数据不感兴趣,我只想知道需要多少个字符来存储由$_SERVER["REMOTE_ADDR"]
返回的任何IPv6地址。
一个稍微不正确,天真的选择是:
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]
。
在Linux上,请参阅常量INET6_ADDRSTRLEN
(包括<arpa/inet.h>
,请参阅man inet_ntop
)。 在我的系统上(头文件“in.h”):
#define INET6_ADDRSTRLEN 46
最后一个字符是终止NULL,因为我相信,所以最大长度是45,作为其他答案。
回答我自己的问题:
IPv6地址通常写成八组,每组四个十六进制数字,每组由冒号(:)分隔。
那最多39个字符。
链接地址: http://www.djcxy.com/p/40607.html上一篇: Maximum length of the textual representation of an IPv6 address?
下一篇: javascript