我正在创build一个需要跟踪本地networking中的从属机器的应用程序。
我碰到这个post: 设置解决本地ips然而,如果分配给各个主机的本地IP改变,应用程序需要更新它发送请求的IP。 我目前正在考虑在我的应用程序的数据库中创build一个存储MAC地址的路由表? 那么如果IP更改,应用程序会询问同一子网中的所有其他IP是什么,他们的MAC地址是什么,并更改路由表? 这是正确的方法吗?
您正在重新创buildARP但是,这并不能保证您不会始终拥有最新的ARP表。 假设这就是你的意思,你总是可以查询DHCP
如果分配给各个主机的本地ip改变了
最后,虽然我build议是普通的旧主机名称将parsing为IP的,因为DNS服务器将最有可能是最新的
这是肯定的一个方法。
另一种方法是让每个从属服务器向主机注册一个id,比如主机名:“这是我的名字,这是我的IP”。 所以如果它改变,它告诉主机。
尽pipe我相信这真的是一个Stackoverflow的问题。
如果我理解这个权利,则使用mac地址作为唯一标识符来跟踪客户端。
如上所述,arp表(arp -a的输出)会告诉你在最近X分钟内(X根据操作系统而变化)所通信的所有PC的最后一个已知IP地址MAC地址组合。
只要做一个ping“广播地址”来刷新ARP表。 这应该给你在子网上的大多数活动设备。 (这不是100%的傻瓜,你可能会错过一些设备,因为它们很忙,或者你自己的networking堆栈被大量的响应压倒了,并且丢失了一些。)
另一种方法是从DHCP服务器中获取DHCP租约列表,如果有权访问的话。 在Windows环境中,netsh命令对于这类事情可能非常有用。
会询问在同一个子网中的所有其他ip是什么,他们的MAC地址是
否 – 您只能看到本地子网的MAC地址。 您将只能看到其他子网的路由器的MAC地址(通过TCP / IP)。
并改变路由表?
!!!! 即使你知道远程机器的MAC地址,这与路由表无关
你对你想要实现的描述是完全混淆的。
需要跟踪本地networking上的从机
好的,让我们从这个开始。
TCP / IP中没有“奴隶”,也没有OSInetworking模型。 只有服务器和客户端。 服务器知道谁是客户端,因为它有一个固定的地址(通常是一个IP名称)。 即使情况并非如此,客户端也可以通过探测开放端口来发现服务器。
另一种方法是点对点模式 – 有多个服务器。 可能有一个层次结构的服务器,在这种情况下,每个服务器将维护一个(某些?)其他节点的目录及其在层次结构中的位置。 在层次结构的特定级别内没有足够的节点的情况下,检测到这个节点的节点应该请求从下面级别的节点进行选举。
蛮力的方法是让潜在的客户端发送一个服务器的广播请求。
如果你正在谈论authentication的终点 – 那么这是一个完全独立的球赛(除非所有的相关节点都在同一个VPN内)。