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侦听端口。它只能从您的本地主机访问。53tcp
prog2带PID 的服务使用协议1189侦听端口。允许从该计算机所属的所有网络上的任何其他计算机访问此端口。6666tcp
“本地地址”是所讨论的套接字绑定到的地址。这是它接收连接的地址。您询问的地址是“特殊地址”。根据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