各个本地端口的差异

时间:2018-10-07 17:59:19

标签: linux unix networking tcp netstat

运行$ netstat -ntlp时,得到以下输出:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::80                   :::*                    LISTEN      -                   
tcp6       0      0 :::22                   :::*                    LISTEN      -                   
tcp6       0      0 :::443                  :::*                    LISTEN      -    

要理解输出,我有几个问题:

  1. 0.0.0.0:*:::*之间的“国外地址”有什么区别?

  2. 为什么某些端口(例如22)在tcp和tcp6中都有一个条目?

  3. 对于本地地址,:::127.0.0.10.0.0.0(以及localhost)之间有什么区别?

1 个答案:

答案 0 :(得分:0)

  

0.0.0.0:*和::: *之间的“外国地址”有什么区别?

第一种情况是IPv4,第二种情况是IPv6。

  

为什么某些端口(例如22)在tcp和tcp6中都有一个条目?

因为服务器正在使用IPv4和IPv6上的两个不同的套接字进行侦听。有些服务器尝试将单个套接字用于两者(并非所有操作系统都支持),有些服务器使用不同的套接字。如果是OpenSSH:无论如何,它都支持侦听多个IP:端口,并且它也起源于OpenBSD,在OpenBSD中,不支持使用单个套接字侦听IPv4和IPv6(为安全起见,明确决定)。

  

对于本地地址,:::和127.0.0.1和0.0.0.0(和localhost)之间有什么区别?这些都是一样的,还是为什么引用的方式有所不同?

:::是IPv6的ANY地址,而0.0.0.0是IPv4的任何地址-使用这些侦听器地址,服务器将接受其拥有的所有IP地址(即所有接口:本地,以太网)上的流量,wifi,VPN ...)。 127.0.0.1是IPv4的本地主机,即,只能从本地计算机进行连接。 IPv6本地主机将为::1localhost的含义取决于/etc/hosts中的条目,通常与127.0.0.1相同。