netstat 如何确定符号主机名?

How does netstat determine symbolic hostname?

我试图了解 netstat 的 --numeric/-n 标志的作用?手册说了以下关于 --numeric/-n

--numeric , -n

Show numerical addresses instead of trying to determine symbolic host, port or user names.

  1. 以下是带有“-n”选项的输出行

    tcp  0  0 :::8080    :::*   LISTEN      -
    
  2. 以下是与 A 相同的行,但没有“-n”选项

    tcp  0  0 *:terabase *:*    LISTEN      -
    

在我的案例中,端口 8080 与 solr 相关联。我不知道为什么它被列为 terabase。这就是为什么我想知道 netstat 如何确定符号主机。如果有人能阐明这一点,那将会很有帮助。

我相信你在混合 端口主机

符号主机由 DNS 查找确定,而端口使用情况是您在 /etc/services 中找到的内容(我不知道为什么您有端口 8080 的 teradata - 通常是 http-alt - 但去看看)

所以,例如 -n 你可以

tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN

意味着有东西在 IP 127.0.0.1 上的端口 5432 上侦听。没有 -n 它将是

tcp        0      0 localhost:postgresql    *:*                     LISTEN

这让我们更加明智,因为我们现在可以在本地主机上看到它是 PostgreSQL。

该信息的代价是 DNS 往返需要时间...!

干杯,

请注意,您查看的是端口映射,而不是主机映射。 在 /etc/services 文件或在 /etc/nsswitch.conf

中配置的其他数据库中查找端口号

您有一个 terabase 条目 /etc/services,将其映射到 port/protocol。

(terabase 通常会映射到端口 4000,因此您的 /etc/services 将其映射到端口 8080,或者您正在查看的行是针对端口 4000 而不是您假设的端口 8080)。