首页 > 解决方案 > 各个本地端口的差异

问题描述

当我运行时,$ 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:*"Foreign Address"和有什么区别:::*

  2. 为什么有些端口,比如22在 tcp 和 tcp6 中都有一个入口?

  3. :::对于本地地址, and127.0.0.10.0.0.0(and ) 有什么区别localhost

标签: linuxunixnetworkingtcpnetstat

解决方案


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

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

为什么有些端口,比如 22 在 tcp 和 tcp6 中都有一个条目?

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

对于本地地址, ::: 和 127.0.0.1 和 0.0.0.0(和 localhost)有什么区别?这些都是一样的吗,或者为什么它们的引用方式不同?

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


推荐阅读