【问题标题】:Why does 'netstat' Fail to Detect Certain Open Sockets?为什么“netstat”无法检测某些打开的套接字?
【发布时间】:2013-07-09 19:33:21
【问题描述】:

当使用“netstat”Linux 命令验证我的 Hadoop Namenode 机器是否正常运行时,我注意到 Namenode 的主端口“8020”没有显示为主动侦听,尽管所有 Hadoop 进程都可以正确连接并正常工作.此外,我能够运行 'telnet mydnshostname 8020' 并成功打开一个连接,这表明该套接字正在正确侦听,尽管它明显不在 netstat 的列表中。

这是我第一次注意到打开的套接字没有出现在 netstat 的列表中。是因为 Hadoop Namenode 通信是基于专有的IPC protocol 吗?这个协议似乎是基于 TCP 的,所以我不明白为什么它没有显示出来。

总结:

  1. 为什么/如何存在 netstat 遗漏的开放式套接字?
  2. 是否有任何低级 Linux 命令/函数来显示所有套接字,包括 netstat 由于某种原因而遗漏的那些?

【问题讨论】:

  • netstat 未报告在 8020 上侦听的任何内容的一个可能原因可能是端口转发。也许 Namenode 侦听其他端口,而您的机器或路由器配置为将连接到 8020 的连接转发到其他端口?

标签: sockets hadoop tcp netstat


【解决方案1】:

嗯,这是另一个 *facepalm* 时刻。

事实证明,TCP 端口 8020 也是一个名为“intu-ec-svcdisc”的协议常用的端口,因此 netstat 试图通过将我在端口 8020 上的所有套接字识别为该服务名称来提供帮助。

在更通用/实用的术语中,如果您在定位特定打开的套接字并知道端口号时遇到问题,请确保传递 netstat '-n' 选项,以便它停止尝试根据端口号识别协议并以数字形式显示整个列表!

【讨论】:

    猜你喜欢
    • 2010-12-14
    • 2017-04-14
    • 2010-10-07
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    相关资源
    最近更新 更多