组播中的环回

2023-12-20

这个问题是关于在同一主机内发送和接收多播,同时将其发送到其他主机。

即使经过几个小时的谷歌搜索,我仍然无法弄清楚多播数据报是如何在同一主机内路由的......!

下面是问题的详细描述:

Linux 盒子“A”通过电缆连接到交换机/路由器(我们将交换机/路由器称为“R”)。

在Linux盒子A中,我有一个进程(A0)将UDP数据包发送到多播地址“224.0.0.0”,端口5000。

同样,在同一个盒子 A 中,我有两个进程(A1 和 A2),它们都连接到 224.0.0.0、端口 5000 并消耗 UDP 数据包。

现在,盒子 A 中的内核如何管理路由?

因此,A0 发送了一个数据报,该数据报被 A1 和 A2 使用。这样的数据报是否会进行往返 A --> R --> A ?

..或者“A”中的内核路由是否足够智能,可以避免这种不必要的往返? (即数据报由 A0 发送并立即由 A1 和 A2 消耗,从未离开 A)。

当然,可以通过创建并强制执行多播环回设备来确保多播数据报永远不会离开 A:

sudo ifconfig lo multicast
sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev lo

但现在,如果我想在另一个 Linux 机器(例如“B”)中同时使用 UDP 数据报,它们就无法到达那里。

因此,理想情况下,(1) A 中消耗的数据报永远不会离开 A(即没有往返 A --> R --> A),而 (2) B 中消耗的数据报应该正常作为 A --> R -- > B. 我想同时实现这两件事。

有什么方法可以实现这一点,例如使用“route”命令?

进程 A1 和 A2 的套接字设置了以下标志:

SO_REUSEADDR
SO_REUSEPORT

虽然我检查了进程 A0(发送多播数据报的进程)具有以下标志:

IP_MULTICAST_LOOP

环回本地进程(本地套接字)应该可以在不向 lo 添加多播路由的情况下进行。只需确保您已设置到某个外部接口的有用路由即可。数据包仍将在内部路由。 (Linux 在幕后执行大量路由操作。)

您需要 IP_MULTICAST_LOOP,这看起来不错。

您是否在所有进程中正确加入了多播组? IP_ADD_MEMBERSHIP?如果没有这个,你就会得到各种虚假的行为。

您可以查看本地路由表来了解 Linux 在本地对数据包执行的操作。它通常绝非微不足道:

sudo ip route show table local

您还可以查看当前的多播组成员身份:

netstat -g

输出和引用计数对您的情况有意义吗?

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

组播中的环回 的相关文章

  • 如何在java中通过socket发送Image数据类型

    我真的很困惑如何通过套接字发送图像数据类型 请帮我 我已经搜索了如何将 Image 数据类型转换为 char 但结果是 0 Use ImageIO http docs oracle com javase 1 4 2 docs api jav
  • 在Luasocket中,在什么条件下,即使在select告诉它可以安全读取之后,accept调用也可以阻塞?

    卢阿索基特select http w3 impa br diego software luasocket socket html select函数应该告诉何时可以在不阻塞的情况下读取套接字 它显然也可以用来告诉服务器套接字何时准备好接受新连
  • perl6 IO::Socket::INET 无法从套接字接收数据:连接被对等方重置

    示例服务器 usr bin env perl6 my listen IO Socket INET new listen localhost
  • 使用PHP套接字发送和接收数据

    我正在尝试通过 PHP 套接字发送和接收数据 一切正常 但是当我尝试发送数据时 PHP 不发送任何内容 Wireshark 告诉我发送的数据长度为 0 我正在使用这段代码
  • 如何用python脚本控制TP LINK路由器

    我想知道是否有一个工具可以让我连接到路由器并关闭它 然后从 python 脚本重新启动它 我知道如果我写 import os os system ssh l root 192 168 2 1 我可以通过 python 连接到我的路由器 但是
  • 使用 Windows 套接字的 WriteFile 返回无效参数错误

    我已经在 Windows 套接字上苦苦挣扎了两天 无法像在 Linux 中那样只使用写入套接字 我想编写自己的 shellcode 并且正在研究如何将 stdout stdin 重定向到套接字句柄 这就是我的演奏的来源 如果有必要 我使用
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad
  • Mac + Ruby:无法访问 Socket 的 ioctl?怎么修?

    一天中的好时光 红宝石代码 def hw address iface sock Socket new Socket AF INET Socket SOCK DGRAM 0 buf iface pack a16h16 sock ioctl S
  • 套接字错误 10054

    我有一个C S程序 客户端使用socket向服务器发送文件 发送后大约超过700k数据 客户端 在win7上 将收到套接字10054错误 这意味着连接被对等方重置 服务器运行在CentOS 5 4上 客户端是在virtual box中运行的
  • CTRL-C 在 Python 中的行为有所不同

    I ve recently started learning Python long time Java programmer here and currently in the process of writing some simple
  • Android蓝牙java.io.IOException:bt套接字已关闭,读取返回:-1

    我正在尝试编写一个代码 仅连接到运行 Android 5 0 KitKat 的设备上的 目前 唯一配对的设备 无论我尝试了多少方法 我仍然会收到此错误 这是我尝试过的最后一个代码 它似乎完成了我看到人们报告为成功的所有事情 有人能指出我做错
  • 跨平台套接字

    我知道 Windows 不使用 UNIX 套接字 而 Mac OS 使用 到目前为止 我的软件是跨平台的 没有任何代码更改 但现在我想让它进行一些网络通信 我了解 POSIX 套接字 但我对 Windows 的套接字一无所知 目标是实现一个
  • C# 中的 Unix 套接字

    我正在尝试使用 Mono 的 UnixEndPoint 但在使用它之前就失败了 我在 64 位 Windows 7 系统上运行 Xamarind net 4 5 下面是一些代码 证明单一组合不起作用 foreach SocketType s
  • Java 套接字:可以从一个线程发送并在另一个线程上接收吗?

    这可能是一个非常基本的问题 但我很难找到答案 让一个线程写入 Socket 的输出流 而另一个线程从 Socket 的输入流读取数据 这样可以吗 编辑 这是一个与外部服务器通信的客户端应用程序 我并不是想让两个线程互相交谈 很抱歉含糊不清
  • Python服务器“通常只允许每个套接字地址使用一次”

    我正在尝试用 python 创建一个非常基本的服务器 它侦听端口 当客户端尝试连接时创建 TCP 连接 接收数据 发回某些内容 然后再次侦听 并无限期地重复该过程 这是我到目前为止所拥有的 from socket import server
  • 尝试接收 UDP 多播时出现空指针异常

    在尝试了几次让简单的 UDP 多播接收器工作后 我感到很困惑 在我自己的代码无法按预期工作后 我尝试了 vertx 文档中发布的确切示例 DatagramSocket socket vertx createDatagramSocket ne
  • uwsgi协议比http协议快吗?

    我正在尝试部署 django 应用程序的各种设置 我的第一选择是使用带有 mod wsgi 的简单 apache 服务器 我之前已经实现了该服务器供私人使用 由于当前的部署是供公众使用的 因此我正在考虑各种选择 根据网上提供的信息 使用 n
  • 错误号:11,资源暂时不可用

    我正在使用 c 套接字来实现可靠的 UDP 协议 我正在使用以下代码在等待确认的套接字上设置超时 我不确定为什么会收到 errno 11 资源暂时不可用 set timer for recv socket struct timeval tv
  • 套接字编程-listen() 和accept() 有什么区别?

    我一直在读本教程 http www cs rpi edu moorthy Courses os98 Pgms socket html了解套接字编程 看来listen and accept 系统调用都做同样的事情 即阻塞并等待客户端连接到使用
  • 消息队列与套接字

    我没有太多的套接字编程经验 但我尝试阅读一些相关内容 我对 MDB 和消息队列非常熟悉 有人告诉我队列 例如 MDB 只不过是直接套接字连接 有人可以帮我比较一下这两个吗 两者是无与伦比的 因为它们代表不同的layers 这就像将关系数据库

随机推荐

  • 在 Swift 3 上运行后台线程

    我有一个这样的函数 fileprivate func setupImageViewWithURL url URL var image UIImage nil do try image UIImage data Data contentsOf
  • 为什么我不能对通用 IEnumerable 对象调用 ToArray? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 public static T ToArray
  • 如何在部分视图中获取与父操作关联的 RouteData?

    在 PartialView 的操作中 我想知道与父操作关联的 RouteData 该部分视图是我的母版页模板的一部分 我希望它知道作为页面渲染的一部分调用的控制器和操作 在我的 PartialView 操作中 我检查RouteData Va
  • Oracle 11g - 插入多行的最有效方法

    我有一个应用程序在 WAN 上运行缓慢 我们认为原因是对表进行多次插入 我目前正在研究同时插入多行的更有效方法 我找到了这个方法 INSERT ALL INTO MULTI INSERT VAL 1 VAL 2 VALUES 100 20
  • 从 Windows 服务执行 Process.Start 时访问被拒绝

    我正在尝试以另一个用户的身份从服务运行一个进程 Process Start applicationPath params account SecureStringPassword 服务正在 本地系统 帐户下运行 The account参数是
  • SharedArrayBuffer 未定义

    我正在使用一个名为react canvas 从几天前开始 一直输出一条错误消息 p 标签应在网络浏览器 包括 Chrome 中显示画布的区域中 我在用nextjs 我附上package json below SharedArrayBuffe
  • 用于 Android 的 Google Place API 来查找城市

    我看过教程 tutorial https developers google com academy apis maps places autocomplete android 在 android i 中使用自动完成文本视图查找城市 我已经
  • 从requirements.txt安装PyTorch

    火炬文档说使用 pip install torch 1 4 0 cpu torchvision 0 5 0 cpu f https download pytorch org whl torch stable html 安装最新版本的 PyT
  • 流星会话替换?

    在最新的 Meteor 版本 版本 0 5 8 中 Session已从服务器端代码中删除 以前我用过Session储藏客户特定的服务器的变量 该功能的替代品是什么 案例示例 User One打开浏览器 User Two打开浏览器 一个调用服
  • 如何在odoo中弹出成功消息?

    我通过单击按钮发送邀请 在单击按钮并成功发送邀请后 会弹出邀请发送成功的消息 但问题是弹出消息的主标题是Odoo Server Error 那是因为我正在使用 raise osv except osv Success Invitation
  • SCNScene 和 SceneKit 编辑器的子类化

    我有带有相机设置的 SCNScene 子类 我想在所有子类中使用它 let scene01 TheSubclassScene let scene02 TheSubclassScene named art scnassets testScen
  • 点击交换课程

    我有一个包含 6 个项目的列表 这些项目位于全局 div navigationaence 中 现在我可以在单击时添加一个类 但现在它们会加起来 这意味着一旦我的六个项目被单击 它们最终都会成为当前代理类 我希望能够删除向单击的项目添加一个类
  • 在 Typescript 中使用 async/await 时未定义 __awaiter

    我在 Typescript 中有以下代码片段 nsp on connection async function socket await this emitInitialPackage nsp currentLine currentCell
  • 当 url 导致临时重定向 (http 302) 时,什么会被索引?

    我正在努力使我们的 很大程度上基于 AJAX 的 网站对搜索引擎更加友好 我们有一个系统 在设置会话变量以更改主页的行为后 某些网址会重定向到主页 这是使用 Controller Redirect 方法创建 ActionResult 来实现
  • 通过 Gremlin 计算大图中的节点/边数?

    通过 Gremlin 计算大图中的节点 边数的最简单且最有效的方法是什么 我发现最好的方法是使用 V 迭代器 gremlin gt g V gather it size 然而 对于大图来说 这不是一个可行的选择V 的文档 http grem
  • numpy 中的加权协方差矩阵

    我想计算协方差C of n的测量p数量 其中每个单独的数量测量都有自己的权重 也就是我的权重数组W与我的数量数组具有相同的形状Q n by p 当地人np cov 函数仅支持赋予各个测量值的权重 即长度向量n 我可以初始化一个p by p矩
  • EF core、Any 无法翻译,将在本地评估

    我有一个程序可以返回我需要的实体 ID 我决定创建此过程 因为应返回给最终用户的实体由相关实体过滤 但 EF Core 不支持相关实体过滤 然后我想使用这个 id 来获取我需要的实体及其相关实体 我正在使用Any operator In m
  • Cleave.js 电话 CA

    我正在尝试使用格式化电话号码字段Cleave js https nosir github io cleave js 它不起作用 但我似乎不明白为什么 我是这样开始的 import Cleave from cleave js var clea
  • 如何在android中的string.xml中添加多段落的长文本

    当我在之间添加许多段落时
  • 组播中的环回

    这个问题是关于在同一主机内发送和接收多播 同时将其发送到其他主机 即使经过几个小时的谷歌搜索 我仍然无法弄清楚多播数据报是如何在同一主机内路由的 下面是问题的详细描述 Linux 盒子 A 通过电缆连接到交换机 路由器 我们将交换机 路由器