IGMP:互联网组管理协议详解

需积分: 0 2 下载量 113 浏览量 更新于2024-09-11 收藏 508KB PDF 举报
"TCP-IP卷2中的第13章介绍了IGMP,即Internet组管理协议,用于在网络中传递组成员信息。路由器通过多播IGMP查询来获取主机的组成员信息,而主机则通过发送IGMP报告响应这些查询。IGMP在IP协议之上,属于传输层协议,具有协议号2,其报文由IP数据报承载。IGMP的处理主要涉及一组名为i_n_multicast的结构,它们有递减定时器,超时后会触发报告发送。当加入新组时,通过igmp_joingroup调用igmp_sendreport来快速发布组成员信息。图13-1展示了IGMP处理的概述。此外,代码实现包括4个文件,分别为igmp.h(协议定义)、igmp.c(主要实现)、inet.c(与其他协议的交互)和sysctl.c(系统控制接口)。" 在TCP/IP协议族中,IGMP扮演着至关重要的角色,特别是在多播通信中。它允许主机声明自己对特定多播组的兴趣,从而使路由器能够有效地路由多播流量。IGMP是Internet多播的基础,确保只有感兴趣的接收者才会接收到多播数据。 IGMP协议的工作流程如下: 1. 路由器周期性地发送IGMP查询到特定的多播地址(所有多播组成员的地址),询问网络中哪些主机属于某个多播组。 2. 主机收到查询后,如果它是该组的成员,就会发送一个IGMP报告响应。 3. 这些报告被路由器收集,用来构建多播组的成员列表,进而决定如何转发多播数据包。 IGMP协议的实现通常涉及以下几个关键函数: - igmp_input:处理接收到的IGMP报文。 - igmp_timer:处理定时器事件,如定时器超时后触发报告发送。 - igmp_joingroup:当进程请求加入多播组时调用,初始化i_n_multicast结构并启动定时器。 - igmp_sendreport:构造并发送IGMP报告报文。 在图13-2中列出的文件中: - igmp.h:包含了IGMP协议的数据结构和函数原型定义。 - igmp.c:实现了IGMP协议的具体逻辑,包括处理输入、输出以及定时器管理等功能。 - inet.c:可能包含与IP协议和其他网络协议交互的代码,例如处理IGMP报文的输入和输出。 - sysctl.c:提供了系统控制接口,可能用于配置和监控IGMP相关的参数。 通过这些组件,IGMP提供了一个高效的机制,使得多播服务能够在Internet上有效地运行,支持视频会议、流媒体、分布式计算等应用。

分析下面的ebtables规则 # ebtables -L Bridge table: filter Bridge chain: INPUT, entries: 2, policy: ACCEPT -j br_wan -j portmapping_igmp Bridge chain: FORWARD, entries: 6, policy: DROP -j disBCMC -j br_wan_forward -j wlan_block -j wlan_map_block -j macfilter -j portmapping Bridge chain: OUTPUT, entries: 2, policy: ACCEPT -j br_wan_out -j br_lan_out Bridge chain: br_lan_out, entries: 2, policy: ACCEPT -p IPv6 -o eth0.4 --ip6-proto ipv6-icmp --ip6-icmp-type router-advertisement -j DROP -p IPv6 -o eth0.5 --ip6-proto ipv6-icmp --ip6-icmp-type router-advertisement -j DROP Bridge chain: br_wan_forward, entries: 3, policy: RETURN -p IPv6 -o nas0_5 -j ACCEPT -p PPP_SES -o nas0_5 -j ACCEPT -o nas0_5 -j DROP Bridge chain: wlan_block, entries: 0, policy: RETURN Bridge chain: wlan_map_block, entries: 0, policy: RETURN Bridge chain: disBCMC, entries: 2, policy: RETURN -d Broadcast -j DROP -d Multicast -j DROP Bridge chain: br_wan, entries: 1, policy: RETURN -i nas0_5 -j DROP Bridge chain: br_wan_out, entries: 1, policy: RETURN -o nas0_5 -j DROP Bridge chain: portmapping_igmp, entries: 2, policy: RETURN -p IPv4 -i eth0.4 --ip-proto igmp -j DROP -p IPv4 -i eth0.5 --ip-proto igmp -j DROP Bridge chain: macfilter, entries: 0, policy: ACCEPT Bridge chain: portmapping, entries: 31, policy: ACCEPT -i nas0_5 -o wlan1-vap3 -j RETURN -i wlan1-vap3 -o nas0_5 -j RETURN -i nas0_5 -o wlan1-vap2 -j RETURN -i wlan1-vap2 -o nas0_5 -j RETURN -i nas0_5 -o wlan1-vap1 -j RETURN -i wlan1-vap1 -o nas0_5 -j RETURN -i nas0_5 -o wlan1-vap0 -j RETURN -i wlan1-vap0 -o nas0_5 -j RETURN -i nas0_5 -o wlan1 -j RETURN -i wlan1 -o nas0_5 -j RETURN -i nas0_5 -o wlan0-vap3 -j RETURN -i wlan0-vap3 -o nas0_5 -j RETURN -i nas0_5 -o wlan0-vap2 -j RETURN -i wlan0-vap2 -o nas0_5 -j RETURN -i nas0_5 -o wlan0-vap1 -j RETURN -i wlan0-vap1 -o nas0_5 -j RETURN -i nas0_5 -o wlan0-vap0 -j RETURN -i wlan0-vap0 -o nas0_5 -j RETURN -i nas0_5 -o wlan0 -j RETURN -i wlan0 -o nas0_5 -j RETURN -i nas0_5 -o eth0.5 -j RETURN -i eth0.5 -o nas0_5 -j RETURN -i nas0_5 -o eth0.4 -j RETURN -i eth0.4 -o nas0_5 -j RETURN -i eth+ -o eth+ -j RETURN -i eth+ -o wlan+ -j RETURN -i wlan+ -o eth+ -j RETURN -i wlan+ -o wlan+ -j RETURN -i eth0+ -j DROP -i wlan+ -j DROP -i nas0_5 -j DROP

2023-07-08 上传