网络探测技术初探

使用组播

广播地址就是为一就对了,子网内传播主机号全为一,所有子网内传播,子网号和主机号全为一。

组播就是以组为单位的广播,以下摘自百度百科:

组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化。永久组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使用的ip组播地址,可以被临时组播组利用。
224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;
224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;
224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;
239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。
组播地址
列表如下:
224.0.0.0 基准地址(保留)
224.0.0.1 所有主机的地址 (包括所有路由器地址)
224.0.0.2 所有组播路由器的地址
224.0.0.3 不分配
224.0.0.4 dvmrp路由器
224.0.0.5 所有ospf路由器
224.0.0.6 ospf DR/BDR
224.0.0.7 st路由器
224.0.0.8 st主机
224.0.0.9 rip-2路由器
224.0.0.10 Eigrp路由器
224.0.0.11 活动代理
224.0.0.12 dhcp 服务器/中继代理
224.0.0.13 所有pim路由器
224.0.0.14 rsvp封装
224.0.0.15 所有cbt路由器
224.0.0.16 指定sbm
224.0.0.17 所有sbms
224.0.0.18 vrrp
以太网传输单播ip报文的时候,目的mac地址使用的是接收者的mac地址。但是在传输组播报文时,传输目的不再是一个具体的接收者,而是一个成员不确定的组,所以使用的是组播mac地址。组播mac地址是和组播ip地址对应的。iana(internet assigned number authority)规定,组播mac地址的高24bit为0x01005e,mac 地址的低23bit为组播ip地址的低23bit。
由于ip组播地址的后28位中只有23位被映射到mac地址,这样就会有32个ip组播地址映射到同一mac地址上。

之前做过一个手机之间互发消息探测存在的APP,是先使用组播发消息,局域网内有设备收到,这个设备就会发送一条UDP数据报来声明存在,发送探测消息的一端接收到这个消息,就回复一条UDP数据报。一来一回,两个设备就都知晓了对方的存在。然而,在实际应用中两个Android设备互相探测是没问题的,但是由电脑端发送组播消息探测手机端却收不到任何回应,调试时知道手机端根本没收到组播消息(电脑端防火墙是关闭着的),因为手机和手机之间的组播就能接收,所以,我怀疑网络底层可能加了某些过滤规则,在加上网上有些说法,组播和广播的消息很容易被屏蔽,所以暂时放弃这种思路。免得所付者巨多,所得者却少之又少。

Socket轮询

这种方法有点笨,就是算出局域网的网段,然后向可能的IP地址发起SOCKet连接,如果能连上,就让客户端机器向服务端发起Netty连接请求。

Loading Disqus comments...
Table of Contents