Networking 如何检测路由器?

Networking 如何检测路由器?,networking,network-programming,Networking,Network Programming,我试图写一个程序,扫描一个ip范围,并检测一个ip地址是否是路由器的地址 目前,我使用从计算机到网络中所有主机的跟踪路由。然而,我相信一定有某种方法可以直接“询问”ip上的主机是否是路由器 顺便问一下,你知道有哪个程序/开源已经做到了吗?跳到的任何节点,而不仅仅是一个端点,都是路由器。但是,这不允许您检测没有连接可访问设备的路由器。(关于我的答案是否有价值的任何输入都是很好的!)路由器应该讨论一些常规IP节点没有的协议(实际上是一堆协议),然后还有一些更常见的协议(即,即使是非路由器节点也有)

我试图写一个程序,扫描一个ip范围,并检测一个ip地址是否是路由器的地址

目前,我使用从计算机到网络中所有主机的跟踪路由。然而,我相信一定有某种方法可以直接“询问”ip上的主机是否是路由器


顺便问一下,你知道有哪个程序/开源已经做到了吗?

跳到的任何节点,而不仅仅是一个端点,都是路由器。但是,这不允许您检测没有连接可访问设备的路由器。(关于我的答案是否有价值的任何输入都是很好的!)

路由器应该讨论一些常规IP节点没有的协议(实际上是一堆协议),然后还有一些更常见的协议(即,即使是非路由器节点也有)

仅路由器协议:

  • VRRP
  • IGRP/EIGRP
  • OSPF
  • BGP
  • 撕开
您可以对这些进行主动探测,即发送一个数据包(表现为您是另一个路由器或终端节点),并检查路由器(如果有)发送的响应类型

或者,您可以进行被动探测,如“嗅探”,即监视各种节点发送的IP数据包的类型。有一些通常仅由路由器发送(同样,大部分来自上面的列表)

通用协议,但实际上可以告诉您很多:

  • SNMP(特别是像v1/v2这样的不安全的,易于处理,无需建立安全会话)
其他途径:

  • 端口扫描(实际上可以告诉您很多),例如,所有路由器都有一些管理端口(尽管它们通常由于安全问题而被锁定)

您想要做的通常是许多“网络管理”软件所做的,以“发现”网络中其他节点的功能。而且,没有一个单一的适合所有人的解决方案。他们使用一系列不同的方法,试探法来最终找出另一个节点是什么

没有办法直接问。有些事情可能会提示rip、ospf或bgp通信,但除了尝试之外,没有什么能确定答案。路由器和其他路由器一样有ip。如果数据包的目的地不是“本地”的话,它只是碰巧将数据包带到其他地方发送。你不能仅仅从一个IP来判断它是否是一个路由器。