![引用 IP 地址和端口号时简写“[::]:25”的起源和含义是什么](https://linux22.com/image/787776/%E5%BC%95%E7%94%A8%20IP%20%E5%9C%B0%E5%9D%80%E5%92%8C%E7%AB%AF%E5%8F%A3%E5%8F%B7%E6%97%B6%E7%AE%80%E5%86%99%E2%80%9C%5B%3A%3A%5D%3A25%E2%80%9D%E7%9A%84%E8%B5%B7%E6%BA%90%E5%92%8C%E5%90%AB%E4%B9%89%E6%98%AF%E4%BB%80%E4%B9%88.png)
有时,当使用监听特定端口的某些库或应用程序时,我会收到如下日志条目:
[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 连接。