$ sudo netstat -ap | grep postg
tcp 0 0 localhost:postgresql 0.0.0.0:* LISTEN 1567/postgres
udp 0 0 localhost:57504 localhost:57504 ESTABLISHED 1567/postgres
unix 2 [ ACC ] STREAM LISTENING 27116 1567/postgres /var/run/postgresql/.s.PGSQL.5432
$ sudo netstat -ap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 23683/mysqld
tcp6 0 0 [::]:33060 [::]:* LISTEN 23683/mysqld
unix 2 [ ACC ] STREAM LISTENING 1169294 23683/mysqld /var/run/mysqld/mysqld.sock
unix 2 [ ACC ] STREAM LISTENING 1169513 23683/mysqld /var/run/mysqld/mysqlx.sock
unix 2 [ ] DGRAM 1169211 23683/mysqld
做什么0.0.0.0:*
,[::]:mysql
和[::]:*
什么意思?
是否*
意味着所有的端口?
0.0.0.0
根据Tanenbaum的计算机网络,是指“此网络”或“此主机”。什么时候用于该网络,什么时候用于该主机?
谢谢。
0.0.0.0:*
通常出现在侦听套接字的远程端,并指示尚未填写远程地址和端口字段...对于侦听传入连接的套接字,这是合乎逻辑的。不过,它有一个含义:它指示此套接字将仅接受IPv4连接。
[::]:mysql
出现在连接的本地,表示该套接字正在接受该系统可能具有的任何地址中的传入IPv6连接(可能还有IPv4),并且端口号已mysql
在/etc/services
...中指定名称,即端口号为3306。请注意,最左边的列也具有,tcp6
而不仅仅是tcp
指示程序正在使用支持IPv6的套接字。
[::]:*
是支持IPv6的等效项0.0.0.0:*
,即它通常出现在侦听套接字的远程端,并指示套接字正在处理IPv6连接,但尚未填写远程端点地址和端口信息。但是,这也可能包括IPv4。
整个IPv4地址空间可以映射为IPv6地址空间的子集:例如,如果应用程序使用IPv6套接字API 1.2.3.4
,则内核可以将IPv4地址映射为IPv6地址::ffff:102:304
。这就是为什么支持IPv6的程序可以选择仅在TCP / UDP级别的所有内部使用IPv6样式的地址结构,并且除非特别需要,否则无需将IPv4视为单独的组。(我认为程序可以使用套接字选项或某种其他机制来选择加入/退出此映射:某些程序确实为IPv4和IPv6打开了单独的侦听套接字。)
但是,许多支持IPv6的实用程序将以更加用户友好的形式显示此类映射有IPv6的IPv4地址,::ffff:1.2.3.4
以使嵌入式IPv4地址更易于阅读。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句