Mac OS X中的连接信息不清楚

时间:2014-07-13 07:28:12

标签: macos udp netstat

在Mac OS X(10.9)上,终端中的netstat命令打印以下内容。在这种情况下,*.*的含义是什么?这是客户端还是服务器套接字?如何找出哪个进程打开此连接,以及出于什么原因?

$ netstat -an
Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Adress          Foreign Address        (state)
[...]
udp4       0      0  *.*                   *.*
udp46      0      0  *.*                   *.*
[...]

2 个答案:

答案 0 :(得分:0)

*:*表示任何网络接口上的任何IP地址。

要找出哪个进程拥有哪个连接,请将-p传递给netstat,例如: netstat -anp。您可能需要sudo

答案 1 :(得分:0)

UDP的*.*列中的Local Adress表示套接字尚未绑定到特定端口。

AFAIK这样的插座无法真正用于任何事情。 如果你试图用它来接收它,它就不会听任何东西。如果您尝试使用它进行发送,它将自动绑定到端口。

所以我唯一的结论就是他们保留了用于发送数据的套接字,但是还没有数据发送到它们(因为它是第一次调用绑定端口的sendto

您可以使用lsof找到拥有套接字的进程。它有很多过滤选项,但我通常发现只是grep更容易,如下:

sudo lsof -n | grep -F "UDP *:*"

-n关闭dns分辨率,否则可能需要一段时间。

编辑:也可能是调用ioctl(..., SIOCGIFMEDIA)或类似内容获取网络接口信息。