IPv6地址的文本表示形式的最大长度?

时间:2020-03-06 15:03:59  来源:igfitidea点击:

我想将PHP中的$ _SERVER [" REMOTE_ADDR"]返回的数据存储到DB字段中,这确实很简单。问题是我找不到有关IPv6地址文本表示形式最大长度的任何适当信息,这是Web服务器通过$ _SERVER [" REMOTE_ADDR"]`提供的。

我对将文本表示形式转换为地址通常使用的128位感兴趣,我只是想知道存储$ _SERVER [" REMOTE_ADDR"]返回的IPv6地址最多需要多少个字符。

解决方案

回答了我自己的问题:

IPv6 addresses are normally written as eight groups of four hexadecimal digits, where each group is separated by a colon (:).

因此,最多39个字符。

一个稍微不正确的天真选项是:

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]`。