免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4409 | 回复: 5
打印 上一主题 下一主题

关于扫描内网存活主机 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-23 11:24 |只看该作者 |倒序浏览
各位前辈小弟开始写毕业设计!
我打算通过libnet来发送ARP包检测存活的主机。但我觉得这样实现不太可能。
1 开辟两个线程,线程一发送ARP数据包,对应到内网中所有的IP(0到255)线程2接收返回来的包。达到检测存活的主机
但问题来了。开辟2个线程慢!我觉得及时是主机存活,我发送ARP包给他,他也不一定给我回包

所以我想问一下各位前辈,有什么办法比较好的实现对内网存活的主机进行检测。当然我也写了基于libnet发送TCP来判断存活的主机的程序
但这样会被防火墙拦截。

其实我的目的很简单,实现P2P终结者,网络执法官那样。快速获取内网中存活的主机!谢谢了

论坛徽章:
6
2015年迎新春徽章
日期:2015-03-04 09:48:00IT运维版块每日发帖之星
日期:2015-06-11 22:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00数据库技术版块每日发帖之星
日期:2015-10-24 06:20:00IT运维版块每日发帖之星
日期:2015-12-24 06:20:00IT运维版块每日发帖之星
日期:2016-04-15 06:20:00
2 [报告]
发表于 2007-08-23 13:01 |只看该作者
可以通过获取网络设备(交换机)的MAC地址表来获得网络上所有的机机器的MAC地址。

论坛徽章:
0
3 [报告]
发表于 2007-08-24 20:20 |只看该作者
非常感谢楼上这位前辈的回答!不知道能不能讲的详细一点!比如用到什么样方式去操作MAC地址表

论坛徽章:
0
4 [报告]
发表于 2007-08-24 20:36 |只看该作者
根据您的指导,我参考了libdnet操纵路由表。我想这样是不是也可以实现这样的功能!

论坛徽章:
6
2015年迎新春徽章
日期:2015-03-04 09:48:00IT运维版块每日发帖之星
日期:2015-06-11 22:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00数据库技术版块每日发帖之星
日期:2015-10-24 06:20:00IT运维版块每日发帖之星
日期:2015-12-24 06:20:00IT运维版块每日发帖之星
日期:2016-04-15 06:20:00
5 [报告]
发表于 2007-08-24 22:12 |只看该作者
原帖由 yby123 于 2007-8-24 20:36 发表
根据您的指导,我参考了libdnet操纵路由表。我想这样是不是也可以实现这样的功能!

功能是一样的,不过交换机是为了转发数据而建立MAC地址表,而路由器则是为了转发数据而建立的ARP表,两种设备都可以通过SNMP来获取相关信息。

论坛徽章:
0
6 [报告]
发表于 2007-08-25 00:15 |只看该作者
拓扑图如下


                                  防火墙
                                     |

                                     |
                 ———————————————————————
                 |                   |                        |
               交换机1            交换机2                 交换机3
                 |                   |                        |
                 ————   ———————————   ——————   
                 |     |    |    |    |    |    |    |    |    |
                PC1   PC2  PC3  PC4  PC5  PC6  PC7  PC8  PC9  PC10


我想写一个程序来获取内网中存活的计算机。
我自己想了几个方案,还有chinaunix社区的朋友也给我指导了一些。
1 发送tcp包或者icmp包对存活的主机进行扫描。但我觉得无论是程序实现还是效果都不理想。
(1)我使用libnet开辟两个线程来完成发包和收包。速度很慢。有防火墙的计算机会丢弃我的数据包。达不到我所想要的目的
(2)使用libdnet做路由器操作。由于我对防火墙方面不熟悉,这里也不敢确定什么。但我觉得操控路由表也只是能现实出连接到防火墙上的交换机。(这里我不知道对不对,请各位前辈扶正。)
(3)使用libdnet操作ARP缓存列表。
这里我是这样想的。我每次想查询存活主机先清空ARP表。然后在操作ARP表。在终端中显示出ARP列表。这样是不是可以达到检测存活主机!
当然chinaunix的前辈建议我使用snmp。我觉得我第二方案和第三方案都是通过snmp来实现的!

问题总结
1: 首先除我以上的方案,有没有更好的方法。
2: 在我的拓扑结构下是否可以通过libdnet操作arp缓存&路由表来实现我的目的
3: 请各位给我一些类似的文档。snmp甚好!

谢谢各位前辈花时间看的问题。希望你们能给我一些帮助!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP