问题标签 [igmp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
networking - Linux 和 IGMPv3 上的多播加入
我们遇到了一个棘手的问题。我们正在编写一个接收多播 UDP 流量的 C++ 程序。我们正在将我们的应用程序移至不同的网络环境,我们的运营团队已要求我们支持来自我们的应用程序的 IGMPv3 成员资格公告。初步调查表明 Linux 2.6 内核确实支持 IGMPv3。因此,我很困惑,当我们运行 tcpdump 时,我们会看到以下输出跟踪:
我的理解是,可以通过在文件 /proc/sys/net/ipv4/conf/eth1.22/force_igmp_version 中指定一个非零值来强制内核使用较低版本的 IGMP;但是,我已经确认该文件具有零值配置。
我们的应用程序使用以下代码加入多播组:
我们需要在源程序中包含一些额外的东西来强制 IGMPv3 吗?
php - 使用 PHP 发送 IGMP
我可以用 PHP 脚本发送 IGMP 数据包吗?IGMP 甚至在传输层上吗?
我正在查看一些发往 224.0.0.251 的 JOIN 数据包。
我注意到 IP 标头没有分配端口,但确实指定了 MAC 地址,这让我相信 IGMP 不在传输层上,而是在网络层上。(希望我说的没错)
有人可以为我澄清一下吗?我只是想发送一个 JOIN 数据包。
我正在阅读 rfc3376 试图找到答案,但它只是展示了如何构建一个。在尝试这样做时,我只收到一个格式错误的数据包。
c - IGMPv2 数据包的路由器警报选项
我正在尝试伪造一个 IGMPv2 Membership Request 数据包并将其发送到 RAW 套接字上。
RFC 3376 规定:
IGMP 消息封装在 IPv4 数据报中,IP 协议号为 2。本文档中描述的每个 IGMP 消息都以 1 的 IP 生存时间发送,IP 网络控制优先级(例如,服务类型 0xc0),并在其 IP 标头中携带 IP 路由器警报选项 [RFC-2113]
所以必须设置 IP_ROUTER_ALERT 标志。
我试图伪造数据包的严格必要条件(例如,只有 IGMP 标头和有效负载),所以我使用 setsockopt 来编辑 IP 选项。
一些有用的变量:
以下是我打开 RAW 套接字的方法:
然后我设置 TTL 和 Router Alert 选项:
IP_ROUTER_ALERT的setsockopt返回0。伪造数据包后,我用sendto这样发送:
数据包已发送,但缺少 IP_ROUTER_ALERT 选项(使用 wireshark 检查)。难道我做错了什么?还有其他方法可以设置 IP_ROUTER_ALERT 选项吗?
提前致谢。
python - 如何在 Python 中发送具有给定十六进制有效负载的 IP 数据包?
我已经嗅探了一个 IGMP 数据包,现在我想在 python 的帮助下发送它。有什么方法可以发送数据包
没有像 impacket 这样的数据包生成器?
UPD 好的,我尝试使用原始套接字,如下所示:
一切都很好,除了一件小事......如果我嗅探那个数据包,它看起来像这样:
如您所见,由于某种原因,python 忽略了我的标头并创建了自己的标头。我该如何解决?
c - 使用 IP_ADD_SOURCE_MEMBERSHIP 无法为 RAW 套接字添加超过 10 个源地址
你好,
我使用设置套接字选项 IP_ADD_SOURCE_MEMBERSHIP 添加超过 10 个源地址。但是在 10 个源地址之后,我无法进一步添加。谁能告诉我如何为每个套接字添加 10 个以上的地址。我的代码如下,
袜子=套接字(AF_INET,SOCK_RAW,IPPROTO_UDP);
/* 下面的代码重复了 10 次以上 */
添加 10 个源地址后出现无法设置 IP_ADD_SOURCE_MEMBERSHIP! 的错误。
提前致谢
德比约蒂
c - 套接字错误:90:消息太长
在 IGMP 套接字调用的以下场景中出现错误;
sendto 调用失败,提示消息太长。我使用 8192 作为缓冲区大小。所以我尝试使用以下调用来修复此错误;
setsockopt() 调用成功,但 sendto() 出现相同错误;
所以我用getsockopt()调用检查了SO_SNDBUF的大小,它显示1字节?!
我在做什么错。
Linux 内核是否需要重新编译以获得 IGMP 支持?或者我错过了什么?
c# - 如何在 C# (IGMPv3) 中加入源特定的多播组
我们有一个 C# 应用程序,它可以加入并接收来自多播组的数据。这很好用。我们现在希望支持 IGMPv3 并能够在加入多播组时指定源的 IP。从 MSDN 文档中,我看不到如何执行此操作。我发现以下链接似乎可以回答我的问题。
http://social.msdn.microsoft.com/Forums/en/netfxnetcom/thread/e8063f6d-22f5-445e-a00c-bf46b46c1561
这是我如何实现的:
但是当调用 SetSocketOption() 并出现此错误时,我得到一个 SocketException The requested address is not valid in its context
:。
有人可以指出我在这里做错了什么吗?谢谢!
windows-7 - 在 Windows 7 上设置 IGMP 版本
我有一个写在“外面”的软件(例如没有可用的源代码),它允许我在多播模式下使用它。我正在尝试在由于技术原因只能使用 IGMP 版本 2 的网络上使用此软件。
我的操作系统是 Windows 7(64 位,但我怀疑这会有所不同)。到目前为止,我的搜索只为我提供了 Windows XP 和 Windows Server 解决方案,所有这些都涉及编辑注册表。除了通常的原因(又名“注册表偏执狂”),在这种情况下我会犹豫编辑注册表,因为这个特定的网络不是我将使用的唯一网络;在我尝试使用多播的所有其他网络中,我完全没有问题。
有没有一种直接的方法可以将此软件强制到 IGMP V2 上?
谢谢!
约翰·普莱斯
c# - 窥探 IGMP 流量
我建立了一个库来做 IGMP 的东西。现在,愚蠢的是,我的图书馆还进行了存在监控以确保其他人仍然是该组的一部分。
IGMP 在较低级别做完全相同的事情。分开消息,轮询路由器它仍然是同一组的一部分,整个事情。我刚刚重复了所有相同的工作,它可能没有那么健壮。
如果我可以利用这些数据包,我可以让一切变得更清洁(而且我不会重新发明轮子)。
任何人都有这样做的经验吗?也许创建某种疯狂的套接字?我不想为此使用 libpcap。我认为语言并不重要,只要可以在 Windows/Linux 上使用 Sockets