如何使用C,Linux,Socket了解服务器的各种IP地址?

时间:2016-03-03 03:19:12

标签: c linux sockets ip-address

我知道远程节点的一个IP地址。路由跟踪。但是,我想知道其接口中的所有IP地址。我怎么能这样做?该节点没有主机名,因此我无法使用API​​通过主机名API获取各种ifaddress。我搜索了各个地方,但无法找到如何获取远程节点的各种IP地址。有可能得到它吗?基本上,我正在实现traceroute,我的目标是显示中间节点的环回地址,而不是实际的接口地址。如果环回地址不可用,我想显示实际的接口地址。我在这里苦苦挣扎,对此毫无头绪。这都是使用C-linux,UDP socket实现的。

3 个答案:

答案 0 :(得分:0)

  

我想知道其接口中的所有IP地址。我怎么能这样做

查找DNS或登录并使用操作系统相关工具/ API查找本地接口' IP地址,否则你就丢失了。

答案 1 :(得分:0)

从技术上讲,如果你在同一个网络上,你可以使用macid,并嗅探网络流量,找到该接口上的其他IP,但是一旦你离开本地网络,几乎不可能找到机器正在监听的其他ips如果他们提供这些信息,这将是一个安全问题。

答案 2 :(得分:0)

traceroute的工作方式是将具有增加的IP TTL值的数据包发送到远程地址,并且沿途的路由器将生成超过ICMP TTL时间,从而将其IP源地址显示回发送方,因此您可以了解尝试与特定远程地址通信时,您的数据可能会遍历。 icmp错误消息将包含跃点传入接口的IP地址,在您的情况下,您还要发现分配给其他传出接口的所有其他IP地址(从发件人的角度看,传出)但这是不可能的通过使用上述技术或任何其他技术。