有时,当使用监听特定端口的某些库或应用程序时,我会收到如下日志条目:
[2023-07-17 19:04:36] INFO SMTP Server listening on [::]:25
上述日志是由SMTP 服务器NodeJS 的包。
我认识到这[::]
可能指的localhost
是:25
应用程序正在监听的端口。但是,这种简写从何而来?它背后有特定的含义吗?还是只是被创建并保留下来的东西?
答案1
::
是个建议代表全零 IPv6 地址0:0:0:0:0:0:0:0
。连续的零可以缩短为冒号,并且如果其全部零,那么剩下的就是零。括号用于消除端口号(也是用冒号分隔的)的歧义。
就像 v4 地址 0(或0.0.0.0
)一样,绑定到全零地址是一种常见的约定,用于指定服务应在全部可用地址。这是不是与 localhost 相同,通常表示仅对该机器的本地连接可用的服务。
在 v4 中,全零地址也称为“此主机”(最初保留该术语),在 v6 中,它被引入为“未指定的地址”。请注意,现代操作系统通过通用套接字接口方便接受两种协议版本的连接,因此后者将只监听 IPv6 连接通常不正确。
答案2
这是 IPv4 的 IPv6 表示0.0.0.0。
您的 SMTP 服务器只是表明它正在监听端口 25 上的 IPv6 连接。