Answers:
我认为您已经回答了自己的问题。
例如,apache
有一个Listen
选项告诉它要监听哪个地址和端口。根据设置的方式,apache
它将侦听任何IP地址,特定地址:-
Listen *:80
Listen 0.0.0.0:80
Listen 127.0.0.1:80
Listen 192.168.0.5:80
以上选项显示为:-
:::80
0.0.0.0:80
127.0.0.1:80
192.168.0.5:80
并翻译为:-
localhost
如果您不希望外部任何人访问该服务,则可以将其配置为仅在该接口上进行侦听。例如,如果您正在运行LAMP服务器,则可以apache
侦听所有IP地址(以便您的用户可以访问它),而mysql
可以将数据库配置为只能从其访问localhost
(使用它的bind=127.0.0.1
指令)。这样php
,在同一服务器上运行的方法将能够访问数据库,而外部(和不受信任)用户将无法访问该数据库。
127.0.0.1
表示本地接口或环回地址。仅可从您的本地主机访问。
0.0.0.0
是每个接口的通配符地址。
在netstat -ntlp
Local Address
表示“打印积极倾听的TCP连接,IP地址显示为数值,并显示其PID和使用此连接程序的名称。”
例如,如果我有
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 1189/prog1
tcp 0 0 0.0.0.0:6666 0.0.0.0:* LISTEN 1188/prog2
这意味着:
prog1
带PID 的服务使用协议1189
侦听端口。它只能从您的本地主机访问。53
tcp
prog2
带PID 的服务使用协议1189
侦听端口。允许从该计算机所属的所有网络上的任何其他计算机访问此端口。6666
tcp
“本地地址”是所讨论的套接字绑定到的地址。这是它接收连接的地址。您询问的地址是“特殊地址”。根据Linux IPv4协议的手册页:
有几个特殊的地址:
INADDR_LOOPBACK
(127.0.0.1
)总是指通过回环设备的本地主机;INADDR_ANY
(0.0.0.0
)指任何具有约束力的地址;INADDR_BROADCAST
(255.255.255.255
)表示任何主机,并且由于INADDR_ANY
历史原因对绑定具有相同的作用 。
对于地址0.0.0.0
来说,这意味着套接字可以在系统上的任何接口上接收任何地址的连接。
:::80
并不总是也暗示IPv4 unix.stackexchange.com/a/496150/333382