如何发现本地网络上的Web服务器?

问题描述 投票:0回答:6

假设我在本地网络(例如家庭网络,其中所有计算机通常都有一个 K.K.K.x 形式的 IP,其中 x 是变量)上运行多个服务基本请求的服务器。有没有一种简单的方法可以发现所有此类服务器?我需要找到网络上运行特定 java 服务器应用程序的每个 IP。

java sockets service-discovery
6个回答
7
投票

您是否在 Java 应用程序中寻找解决方案?如果您只是寻找一次性解决方案,nmap 应该可以。

如果您的本地网络采用 192.*.*.* 形式,请尝试此操作(我添加了 sudo,因为它必须以 root 身份运行):

sudo nmap -vv -sS -O -n "192.168.1.1/24"

3
投票

所以你有一个 C 类网络...只需尝试打开 1 到 254 之间每个 IP 地址上的特定服务器应用程序端口。如果你想变得更奇特,你可以做一些检查来验证端口是否确实打开,它符合您对该应用程序的期望。


1
投票

由于并非每个网络服务器都会侦听固定端口

80
,因此您需要扫描端口。在每个端口上循环打开(并关闭!)套接字,您可以使用
java.net.Socket
为此。如果成功,则在相关 IP/端口上的
/
上触发一个简单的 GET 请求,您可以使用
java.net.URLConnection
来实现此目的。如果您收到有效的 HTTP 响应(无论状态代码如何),那么它就是一个网络服务器。您可以通过 HTTP 响应中的
Server
标头确定服务器类型。但是,您需要考虑到默认响应标头可能会被服务器管理员欺骗/删除/更改。

请注意,某些防火墙可能会识别端口扫描器的扫描模式并阻止其。


1
投票

有两种基本方法可以实现此目的,并且都需要您向/从每个要检查的主机发送/接收数据包。

  • 最简单的方法是尝试建立到所需端口的 TCP 连接,就像您通常所做的那样。

  • 一种更复杂、更奇特的方法,但执行速度更快,是发送 SYN 数据包,并等待响应数据包。如果响应是 SYN/ACK,则表示端口已打开(等待连接),否则表示未打开。然而,Java 并没有为此提供必要的 API(请参阅原始套接字)。您必须找到一个库/包装器或使用 C 和 JNI 编写一个库/包装器。

有关第二个选项的更多见解,请阅读this


0
投票

我会扫描IP范围并使用如下代码测试与端口80的套接字连接:

try {
       s = new Socket(addr,80);
       System.out.println("Webserver found on IP:" + addr );
       s.close();
     }
catch (IOException ex) {
       System.out.println("Webserver NOT found on IP:" + addr );
    }

-1
投票

这是一个老问题了,无论如何这个回答是针对未来的访客的

如果您使用的是 Linux 并安装了 Firefox(默认安装)和 nmap,那么您就可以开始了。

network="192.168.0.0/24" change this to your local network.
nmap -sn $network | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' |sort |uniq | xargs -n1 -I{} firefox {}

这会在浏览器中打开本地网络中的每个IP(最大:254),这样您就可以一一检查它们,如果您在家庭网络上(大约7个左右),通常您不会找到很多IP。

故障

network=192.168.0.0/24:这代表本地网络,(net-ip/netmask),24的意思是:255.255.255.0(24位代表net-ip,其余位代表该网络上的可用主机(254主机)。 您可以输入 ifconfig (linux) 或 ipconfig (windows) 来获取您的本地网络信息。

nmap -sn $notwork:扫描此本地网络中的所有活动IP(-sn:禁用端口扫描)。

grep -o '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' :此正则表达式过滤器从 nmap 结果返回每个 ip (x.x.x.x)。

排序 | uniq:对 ip 进行排序并删除重复项。

xargs -n1 -I{} firefox {}:借助 Firefox 实用程序,在浏览器窗口中打开之前结果中的每一行。

© www.soinside.com 2019 - 2024. All rights reserved.