我们可以从套接字地址中获取应用程序名称吗?

Posted

技术标签:

【中文标题】我们可以从套接字地址中获取应用程序名称吗?【英文标题】:Can we get the application name from the socket address? 【发布时间】:2017-07-05 10:11:13 【问题描述】:

我们能否找到在给定套接字地址上运行的应用程序的名称?

套接字地址是指IP地址和端口号的组合。

就像我们可以通过在linux中使用以下命令从IP地址中找出主机的名称:

主机 [IP]

但是是否有任何命令或任何方法可以像查找主机名一样查找应用程序名称?

如果我们只能找到 web-application 名称或 tomcat 服务名称,那也可以。

【问题讨论】:

如果您正在谈论尝试从远程计算机执行此操作,那么您不能这样做。如果您知道它是一个 Web 服务器,那么您可以向它发出 Web 请求,看看是否有任何标识信息返回到标头中,但除此之外,您无法在不设置应用程序的情况下远程查询进程信息在目标计算机上,该计算机将在本地查询该信息,然后将其发回给您。 @jfriend00 是的,我正在尝试从远程计算机执行此操作,但我在所有提供套接字地址以查找应用程序名称的服务器上都以 root 用户身份进行 sudo 访问。 【参考方案1】:

一个相当简单的方法是使用“netstat”:

gruescher@SMARTBUILD:~$ sudo netstat -nlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      712/rpcbind
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1217/dnsmasq
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      928/sshd
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1487/cupsd
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      25654/postgres
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      19660/smbd
tcp        0      0 0.0.0.0:513             0.0.0.0:*               LISTEN      980/xinetd
tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN      980/xinetd
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      19660/smbd
tcp        0      0 0.0.0.0:41516           0.0.0.0:*               LISTEN      31353/rpc.statd
tcp6       0      0 :::111                  :::*                    LISTEN      712/rpcbind
tcp6       0      0 :::80                   :::*                    LISTEN      2757/apache2
tcp6       0      0 :::24693                :::*                    LISTEN      13707/fo_scheduler
tcp6       0      0 :::22                   :::*                    LISTEN      928/sshd
tcp6       0      0 ::1:631                 :::*                    LISTEN      1487/cupsd
tcp6       0      0 :::445                  :::*                    LISTEN      19660/smbd
tcp6       0      0 :::48611                :::*                    LISTEN      31353/rpc.statd
tcp6       0      0 :::139                  :::*                    LISTEN      19660/smbd

如您所见,它显示端口、本地地址、PID 和进程名称。

您必须以超级用户身份运行它。

【讨论】:

以上是关于我们可以从套接字地址中获取应用程序名称吗?的主要内容,如果未能解决你的问题,请参考以下文章

如果使用调试信息编译,则通过其名称获取全局变量地址

在MFC中Socket服务器通过accept的socket套接字能获取到客户端的Mac地址吗?

我可以从 ELF 文件的符号表中的符号信息中获取对象名称吗?

您可以从类中获取实例变量名称吗? [复制]

我们可以通过 Token Name 获取智能合约地址吗

怎样获取串口地址