C/C++ Linux,如何在不使用 IP 的情况下查找网络上的邻居(仅限 MAC)

2023-12-23

在小型网络中,比如 20 个或更少的节点,我的程序在测试仪器上需要知道“谁在那里?”通过 MAC 而不是通过 IP。我将插入随机网络,并且需要能够执行此操作,而无需知道网络中的任何地址、MAC 或其他内容,并且知道我不能依赖 DHCP。 DHCP 服务器可能关闭并且节点没有 IP 地址和/或我无法获取 IP 地址,这是完全合理的。说实话,我不需要IP,我们的测试协议是MAC层,而不是IP。

那么,如何确定仪器邻居的 MAC 地址呢?这听起来很像 LLDP,但倒退了,即“谁在那里”,而不是“我在这里,我可以做到这一点......”。我必须假设没有 IP 分配给端点,因此没有 ARPing、没有 NMAP 等。

Note我应该补充一点,这是有线网络。


在一般情况下,没有可以发送并保证网络上每台计算机都能做出响应的 MAC 级协议(我假设您在这里使用以太网,因为我相信 WLAN 上的情况有所不同)。即,在 MAC 层不存在保证主机响应的广播(甚至 IIRC 单播)。有了IP在上面,你就可以进行IP广播并检查ARP缓存。

做到这一点的最好方法(在我看来)是使用交换机/学习桥在以太网上工作的方式,即以混杂模式被动监听数据包并记下它们的 MAC 地址。您不会发现完全安静的主机,但在交换机发送数据包之前也不会发现。根据定义,无论如何都无法发现完全沉默的主机。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C/C++ Linux,如何在不使用 IP 的情况下查找网络上的邻居(仅限 MAC) 的相关文章

  • 代码 GetAsyncKeyState(VK_SHIFT) & 0x8000 中的这些数字是什么?它们是必不可少的吗?

    我试图在按下按键的简单动作中找到这些数字及其含义的任何逻辑解释 GetAsyncKeyState VK SHIFT 0x8000 可以使用哪些其他值来代替0x8000它们与按键有什么关系 GetAsyncKeyState 根据文档返回 如果
  • 在c#中执行Redis控制台命令

    我需要从 Redis 控制台获取 客户端列表 输出以在我的 C 应用程序中使用 有没有办法使用 ConnectionMultiplexer 执行该命令 或者是否有内置方法可以查找该信息 CLIENT LIST是 服务器 命令 而不是 数据库
  • IdentityServer 4 对它的工作原理感到困惑

    我阅读和观看了很多有关 Identity Server 4 的内容 但我仍然对它有点困惑 因为似乎有很多移动部件 我现在明白这是一个单独的项目 它处理用户身份验证 我仍然不明白的是用户如何注册它 谁存储用户名 密码 我打算进行此设置 Rea
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 如何判断计算机是否已重新启动?

    我曾经使用过一个命令行 SMTP 邮件程序 作为试用版的限制 它允许您在每个 Windows 会话中最多接收 10 封电子邮件 如果您重新启动计算机 您可能还会收到 10 个以上 我认为这种共享软件破坏非常巧妙 我想在我的应用程序中复制它
  • 如何填充 ToolStripComboBox?

    我发现它很难将数据绑定到ToolStripComboBox 好像没有这个ValueMember and DisplayMember特性 怎么绑定呢 访问toolstripcombobox中包装的组合框并访问其ValueMember Disp
  • C# 存档中的文件列表

    我正在创建一个 FileFinder 类 您可以在其中进行如下搜索 var fileFinder new FileFinder new string C MyFolder1 C MyFolder2 new string
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • 为什么从字典中获取时会得到 Action<> 的克隆?

    我有以下字典 private Dictionary
  • 使 Guid 属性成为线程安全的

    我的一个类有一个 Guid 类型的属性 该属性可以由多个线程同时读写 我的印象是对 Guid 的读取和写入不是原子的 因此我应该锁定它们 我选择这样做 public Guid TestKey get lock testKeyLock ret
  • OpenGL:仅获取模板缓冲区而没有深度缓冲区?

    我想获取一个模板缓冲区 但如果可能的话 不要承受附加深度缓冲区的开销 因为我不会使用它 我发现的大多数资源表明 虽然模板缓冲区是可选的 例如 排除它以利于获得更高的深度缓冲区精度 但我还没有看到任何请求并成功获取仅 8 位模板缓冲区的代码
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 实体框架中的“it”是什么

    如果以前有人问过这个问题 请原谅我 但我的任何搜索中都没有出现 它 我有两个数据库表 Person 和 Employee 对每个类型的表进行建模 例如 Employee is a Person 在我的 edmx 设计器中 我定义了一个实体
  • 这个可变参数模板示例有什么问题?

    基类是 include
  • 我可以在“字节数”设置为零的情况下调用 memcpy() 和 memmove() 吗?

    当我实际上没有什么可以移动 复制的时候 我是否需要处理这些情况memmove memcpy 作为边缘情况 int numberOfBytes if numberOfBytes 0 memmove dest source numberOfBy
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包
  • 是否可以在不连接数据库的情况下检索 MetadataWorkspace?

    我正在编写一个需要遍历实体框架的测试库MetadataWorkspace对于给定的DbContext类型 但是 由于这是一个测试库 我宁愿不连接到数据库 它引入了测试环境中可能无法使用的依赖项 当我尝试获取参考时MetadataWorksp
  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少
  • OpenCV SIFT 描述符关键点半径

    我正在深入研究OpenCV的SIFT描述符提取的实现 https github com Itseez opencv blob master modules nonfree src sift cpp 我发现了一些令人费解的代码来获取兴趣点邻域

随机推荐

  • Jooq 支持 Joda-Time 吗?

    我们正在寻找不同时区的日期时间支持 Hibernate 似乎支持 Joda 时间 不知道 JOOQ 是否也支持 jOOQ http www jooq org本身不支持 Joda Time 或任何其他第三方数据类型 但您可以轻松配置 jOOQ
  • 是否可以使用 INSERT 命令将数据插入到表的中间部分?

    例子 索引 一些数据 1 一些 数据1 3 一些数据3 4 一些 数据4 5 一些 数据5 我想做一个 INSERT 来添加 gt 2 一些 数据2 有没有 SQL 命令或某种方法可以做到这一点 edit 好的 也许如果我解释我想要完成的每
  • Eclipse 错误:未绑定类路径容器

    我制作项目后收到两条错误消息 在解决构建路径错误之前 无法构建项目 未绑定的类路径容器 项目 method test 中的 JRE 系统库 OSGi Minimum 1 2 我认为如果我弄清楚第二个错误 第一个错误就会消失 但是 我在 10
  • 如何使用附加信息(如参数)在java中创建自定义堆栈跟踪?

    我被分配了一项任务来创建自定义堆栈跟踪 例如某些指定函数的输出到日志文件 但我不仅需要使用类和方法名称 还必须输出参数及其值 这应该是一个单独的 jar 可以在任何 java 项目上运行 我什至不知道这样的事情是否可能 更不用说从哪里开始了
  • 对于不引用可执行文件的命令,相当于“which”的是什么?

    我试图找出特定命令是如何定义的 我已经检查了所有位置 PATH并且找不到任何像我的命令那样命名的文件 所以它似乎是其他东西 这是一个使用 nvm 的示例 它不是可执行文件 me MacBook which cat bin cat me Ma
  • 安装 Ruby 1.9.3 时出错

    我通过 rvm 安装 Ruby 1 9 3 时遇到错误 rvm install 1 9 3 p0 Installing Ruby from source to home alder rvm rubies ruby 1 9 3 p0 this
  • 使用 jQuery Quicksand 时 CSS 冒泡

    我正在使用 jQuery Quicksand 创建可过滤的文章组合 http davekiss com new http davekiss com new 问题是 当单击侧边栏段落中的过滤器 视频 网站 动态图形 时 正在过滤的文章上的 C
  • 如何在 C# 中处理双重解析中的文化?

    我有一个关于如何在解析双打时处理文化的问题 在系统中 来自不同服务器的价格信息汇集在一起 然而 作为输入给出的数据因文化而异 两百万五十美分如下 2 000 000 50 2 000 000 50 2000000 50 2000000 50
  • Android 4.0如何实现全屏

    Android 4 0 手机只有虚拟按钮 当全屏播放 YouTube 视频时 虚拟按钮实际上是不可见的 视频部分取代了按钮所在的位置 我想做这个 但还没有找到方法 android theme android style Theme NoTi
  • Boost 测试错误:main 已定义

    我有一个Visual Studio我想做一些单元测试的项目Boost Test 我有 2 个文件 File 1 define BOOST TEST MODULE FileX include
  • R Notebook 不显示数据帧的代码输出

    当我尝试查看数据帧结果时 Rnotebook 中的代码块输出没有出现 就好像没有运行一样 我必须通过 pander 函数传递它才能看到输出打印出来 这和针织有关系吗 我提到这一点是因为我在开头将选项设置为以下内容 r setup inclu
  • ReactJS:当子组件调用父组件时,“this.props”不是一个函数

    我已经编写了这段代码 目前正在解决 onClick 事件中的错误 我有两个事件 子元素上的 onClick 事件和顶级父元素上的 onChange 事件 预期的行为应该是更改 Container 组件中当前保存的 activeAccount
  • NServiceBus 到底是一个 ESB

    NServiceBus 到底是 ESB 还是轻量级 ESB 或者它更像是具有持久 可靠消息传递的 WCF 在我看来 它更像是一个消息传递框架 而不是 ESB 只是想要一些指导 因为我刚刚开始研究不同的 ESB 产品以及它们能够做什么或不能做
  • Mercurial 显示“起源”之前的提交数量

    我在这里用 git 术语思考 是否可以看到您在原点之前进行了多少本地提交 就像在 git 中一样 如果您输入git status它会告诉你 Your branch is ahead of blah by blah blah Mercuria
  • android.view.InflateException:二进制 XML 文件行 #1:膨胀类 时出错

    Added ActionBarCompat NavDrawer对于我的项目 在 4 3 设备上运行很顺利 在 2 3 设备上我得到以下异常 09 08 15 09 15 229 E AndroidRuntime 2964 FATAL EXC
  • 单击中间按钮关闭 TabItem

    我有个问题 在我的 WPF 应用程序中 如果我用鼠标中键按下 tabItem 则该 tabItem 应关闭 就像在火狐中一样 但我尝试使用 MVVM 来做到这一点 并且我需要使用命令 我的 tabItems 也是动态创建的 请帮助我 谢谢你
  • 在同一台计算机上开发和使用相同的Python

    我正在开发一个 Python 实用程序模块来帮助进行文件下载 存档等 我在虚拟环境中设置了一个项目以及单元测试 当我想在同一台计算机上使用此模块 本质上是 生产 时 我将文件移动到mymodule目录中的 开发 模块 mymodule 您可
  • webgl 立即模式如何?

    嘿 所以我正在尝试学习 3D 图形 我开始理解即时模式意味着在调用图形时直接绘制图形 例如 html canvas 和保留模式 在 刷新 或交换之前绘制到缓冲区并进行计算缓冲区 但是这几天我一直在学习webgl 我发现它完全缺乏这个线程的东
  • 如何关闭“AmazonS3”对象中的自动代理检测?

    当使用AmazonS3应用程序启动后第一次调用对象时 有大约 14 秒的较大延迟 所有后续调用都不会出现这种大的时间延迟 我之前在其他 HTTP 相关类中遇到过这个确切的延迟问题 这是当相关类尝试确定本地计算机的代理设置以及是否使用它们时引
  • C/C++ Linux,如何在不使用 IP 的情况下查找网络上的邻居(仅限 MAC)

    在小型网络中 比如 20 个或更少的节点 我的程序在测试仪器上需要知道 谁在那里 通过 MAC 而不是通过 IP 我将插入随机网络 并且需要能够执行此操作 而无需知道网络中的任何地址 MAC 或其他内容 并且知道我不能依赖 DHCP DHC