问题引入
在配置Nginx
的时候会看见listen [::]:80
,这是什么意思呢?
解释
ipv6
[::]
其实表示的是ipv6
地址,所以首先我们需要一点ipv6
的知识
IPv6是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址 。
——百度百科
我们小学二年级就 知道ipv4
是32位
的,而ipv6
是128位
的。用冒分十六进制表示法
表示ipv6
地址就是X:X:X:X:X:X:X:X
(每个X
表示一段,分8段,每段表示16位,用冒号隔开),每段又可以用4个十六进制数
表示。例如某个ipv6
地址可以表示为:A000:0000:0000:DEDF:0000:0000:2333:ABAB
但是这样表示一个ipv6
地址实在太长太难记了,于是就有了ipv6缩写
,若某段全为0
则将其用1个0
表示,那么就可以缩写成A000:0:0:DEDF:0:0:2333:ABAB
但好像还是有点长,此时可以再进一步若出现了连续两段或以上
为0
那么就可以用::
代替(注意了这个::
只能出现一次),即可以写成A0000::DEDF:0:0:2333:ABAB
或者A000:0:0:DEDF::2333:ABAB
,但绝不能写成A0000::DEDF::2333:ABAB
!!!
[::]是什么
那么现在我们就可以回归正题了。在Nginx
配置文件中这个[]
表示的是使用ipv6格式
,那么真正表示的ipv6
地址就是::
,那么就很简单了::
表示的就是全为0
的ipv6
地址(作用可以类比0.0.0.0
)
0.0.0.0:这个IP地址在IP数据报中只能用作源IP地址,这发生在当设备启动时但又不知道自己的IP地址情况下。
参考链接
nginx官方文档:https://www.nginx.cn/doc/standard/httpcore.html
https://www.cnblogs.com/sddai/p/9281189.html
http://blog.sina.com.cn/s/blog_a734b9b50102x9ut.html