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