回答
有一个见解你可以用来发现网络上的节点的东西很少。
SNMP将帮助检测几个不同的网络设备。广播SNMP获取请求
sysName.0
将为您提供响应SNMP的任何结果(即使它们没有OID值)。有些可能是打印机,有些可能是服务器,有些可能是NAS等。sysDescr.0
也可以使用,虽然对于许多网络设备(以我的经验)它返回的值与sysName.0
相同。 Mac OS X附带NetSNMP libraries。一旦收到来自SNMP代理的响应,就可以发送额外的SNMP请求来进一步确定有关设备的详细信息。有人类可读的文件在/usr/share/snmp/mibs
中详细解释这些文件。您可以使用广播ping(您的应用程序需要root权限才能为您提供原始访问互联网协议以构建广播ping数据包或一般ping数据包)。只需广播几个包并等待回复。在Mac OS X中使用BSD的ping工具的源代码可在Apple's website找到。
ping
可执行文件通常与所有者root
和setuid
位一起安装,这意味着即使在非root用户调用时(这也是非root用户可以使用ping的原因),ping
可执行文件作为root
运行。不过您会注意到,在ping的源代码中,它仅以root身份创建套接字,然后立即删除其root权限。Zeroconf/Bonjour也有帮助。看看Core Foundation's CFNetServices or Foundation's NSNetServices。 Mac系统可以配置为非常容易地发布自己。还有Windows和Linux的实现,但当然,这些实际需要在网络设备上运行,然后才能通过程序检测到它们。
为了确定哪些端口是开放的,您可以简单地在所需的端口范围上运行一个循环并尝试建立连接。请记住,尽管许多服务器认为这是一次攻击,并会丢弃数据包,甚至可能永久性地将您的IP列入黑名单。成功建立TCP连接后,您可以在
/etc/services
文件中查找端口号以确定服务的名称。这可以使用POSIX功能getnameinfo
完成。
这对于帮助我开始布置功能和需求收集非常有建设性。我很感激。 – ator 2010-09-09 05:20:22
- 1. 网络发现工具 - java
- 2. 可编程网络诊断工具?
- 3. .NET中的网络发现
- 4. 在网络检测工具/ chrome开发者工具中,gziped网络资源的“大小”是否更小?
- 5. 以编程方式发现网络发现
- 6. 为网络编写C++
- 7. 谷歌网络工具包
- 8. 网络管理工具
- 9. 网络追踪工具
- 10. NSD Android - 网络发现
- 11. Android:网络服务发现
- 12. 网络发现计划
- 13. Matlab中的神经网络工具
- 14. 工具来记录网络流量并创建可编写脚本的“对象”?
- 15. Chrome开发人员工具的网络选项卡中的Cookie
- 16. 开发者工具 - >网络中的奇怪的铬行为
- 17. 网络开发编辑器
- 18. 在WiFi网络上发现客户端
- 19. 网络服务发现在Windows Phone
- 20. 现代Unix工具是用什么编程语言编写的?
- 21. 现场网络聊天应用程序的正确工具
- 22. 网络/网络/渗透测试开源工具
- 23. 评估网络基于Web的编辑器:搜索工具包
- 24. 在MS Expression Web(以及其他网络编辑工具)中使用Asp.net mvc
- 25. 如何编写扩展网络前缀?
- 26. 为多种网络编写单个Reducer
- 27. MVC中的ObjectiveC编程
- 28. Firefox开发工具:如何在网络分析中坚持呼叫
- 29. 在Chrome开发工具中隐藏网络选项卡预览信息
- 30. Chrome开发人员工具网络选项卡优先级列
有[询问家庭作业问题指导方针(http://meta.stackexchange.com/questions/10811/how-to-ask-and-answer-homework-questions)在计算器上,你应该阅读。您真的需要询问关于现有实施的具体问题,而不是要求社区为您设计解决方案。 – 2010-09-09 00:11:09
@brian - 我不想要一个解决方案。你为什么会这样想?我正在寻找如何完成的概念性概述。 – ator 2010-09-09 00:17:47
概念性概述是一种设计。 – 2010-09-09 01:18:38