为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

当年话下 2019-12-09 10:05:59
$_SERVER["REMOTE_ADDR"]实际上,我想将PHP 返回的数据存储到DB字段中。问题是我找不到有关IPv6地址的文本表示形式的最大长度的任何适当信息,而网络服务器正是通过IPv6地址提供的$_SERVER["REMOTE_ADDR"]。我不希望将文本表示形式转换为地址通常使用的128位编码,我只想知道存储由返回的任何IPv6地址最多需要多少个字符$_SERVER["REMOTE_ADDR"]。
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

45个字符。


您可能希望地址是


0000:0000:0000:0000:0000:0000:0000:0000

8 * 4 + 7 = 39


8组4位数字,:中间有7位。


但是,如果您有一个映射了IPv4的IPv6地址,那么最后两个组可以以10为基数写.,例如。[::ffff:192.168.100.228]。完全写出来:


0000:0000:0000:0000:0000:ffff:192.168.100.228

(6 * 4 + 5)+ 1 +(4 * 3 + 3)= 29 + 1 + 15 = 45


注意,这是一个输入/显示约定-它仍然是一个128位地址,对于存储而言,最好以原始冒号分隔的格式进行标准化,即[0000:0000:0000:0000:0000:ffff:c0a8:64e4]上面的地址。


查看完整回答
反对 回复 2019-12-09
?
阿晨1998

TA贡献2037条经验 获得超6个赞

在Linux上,请参见constant INET6_ADDRSTRLEN(包括<arpa/inet.h>,请参见man inet_ntop)。在我的系统上(标头“ in.h”):


#define INET6_ADDRSTRLEN 46

最后一个字符是终止NULL(如我所相信的),因此最大长度为45,其他答案也是如此。


查看完整回答
反对 回复 2019-12-09
?
繁花如伊

TA贡献2012条经验 获得超12个赞

如所示,标准ipv6地址最多为45个字符,但是ipv6地址也可以包含结尾%,后跟“范围”或“区域”字符串,该字符串没有固定的长度,但通常是一个小的正整数或网络接口名称,因此实际上可以超过45个字符。网络接口名称通常为“ eth0”,“ eth1”,“ wlan0”,因此选择50作为限制可能就足够了。


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 513 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信