IGMP报文格式及协议分析

合集下载

IGMP协议

IGMP协议

IGMP协议IGMP协议是一种基于IP协议的组播协议,它定义了用于在Internet上进行组播传输的支持协议。

IGMP协议允许主机加入和离开一个组播组,以便接收该组的组播数据。

IGMP协议的全称是Internet Group Management Protocol,它是一种通信协议,用于在Internet上进行组播传输。

组播传输是一种数据传输方式,在这种方式下,一组数据同时可以被多个地址接收。

组播传输在许多应用中都非常有用,比如视频会议和实时数据分发等。

IGMP协议是在不同计算机之间通信的IP网络中进行组播传输的重要协议之一。

在IP网络中,IGMP协议负责协调主机的组播群体,确保组播数据能够从数据源传递到所有指定接收者,同时保证网络资源被合理利用。

在本文中,我们将详细讨论IGMP协议的工作方式、协议数据单元、协议版本和应用领域等问题。

一、IGMP协议的工作方式在IP网络中,组播传输需要一个有效的组播群组来工作。

组播群组是由一个组播地址来定义的,这个地址分配给一个特定的IP多播地址。

IGMP协议可以帮助确定哪个主机位于一个组播群体的成员,以便组播数据包来源发送组播数据包并控制它们的传递路由。

如果没有IGMP协议的支持,组播路由可能会向协议类型为多路广播的所有接口转发数据,尽管这些接口上没有主机加入组播群体。

这将产生不必要的网络流量和负载,相应地消耗更多的网络资源。

此外,如果没有IGMP协议的支持,多个接口所在的网络上可能会出现群体成员的不一致状态。

由此可见IGMP协议对组播传输的工作非常重要。

在IGMP 协议的支持下,主机可以向网络上发送特殊的IGMP包,以通知路由设备它们希望加入或离开组播群体。

路由设备通过接收和处理这些IGMP包来维护组播群体和转发组播数据包。

IGMP 协议的工作方式为主机和路由设备间的通信建立了一套规范的协议内容。

二、IGMP协议的协议数据单元IGMP协议的协议数据单元(Protocol Data Unit,PDU)是IGMP报文,如图1所示。

IGMP协议

IGMP协议

IGMP协议概述The Internet Group Management Protocol(IGMP)is a network‑layer protocol used by hosts and ad‑jacent routers on an Internet Protocol(IP)network to report their multicast group memberships.It is an essential component of IP multicast,which enables efficient delivery of data to multiple hosts simultaneously.BackgroundIn traditional IP networks,data packets are typically sent to a unicast address,which means they are delivered to a specific destination host.However,in scenarios where data needs to be sent to multiple recipients simultaneously,such as multimedia streaming or real‑time collaboration applications,the unicast approach becomes inefficient and resource‑consuming.This is where multicast comes into play.What is Multicast?Multicast is a communication method that allows a single sender to transmit data packets to a group of receivers.Instead of sending separate copies of the data to each receiver,the sender multicasts the data once,and it is then replicated and delivered only to the members of the multicast group who have expressed interest in receiving the data.Role of IGMPIGMP plays a crucial role in enabling hosts to join and leave multicast groups dynamically.It allows routers to learn which hosts are interested in receiving multicast traffic for specific groups and effi‑ciently forward the data only to those interested hosts.How IGMP Works1.Host Joins a Multicast Group:When a host wants to receive multicast traffic for a specific group,it sends an IGMP join message to its local router,indicating its interest in joining the group. 2.Router Membership Query:Routers periodically send IGMP membership queries on the networkto discover which hosts belong to multicast groups.These queries elicit IGMP membership re‑ports from the hosts.3.Host Membership Reports:Upon receiving a query,hosts respond with IGMP membership re‑ports,indicating the multicast groups they are interested in.4.Router Forwarding:Routers maintain a list of active multicast groups and their associated hosts.They use this information to forward multicast traffic only to the hosts that have joined the re‑spective groups.Benefits and ApplicationsIGMP enables efficient distribution of multicast traffic,reducing network congestion and bandwidth consumption.It finds applications in various scenarios,including:•Video streaming and IPTV•Online gaming and interactive applications•Software‑defined networking(SDN)•Content delivery networks(CDNs)•Collaborative tools and virtual classroomsSecurity and LimitationsWhile IGMP facilitates multicast communication,it’s important to consider security aspects and im‑plement appropriate measures to prevent unauthorized access or malicious activities.Additionally, IGMP has some limitations,such as scalability challenges in large networks and potential issues with router performance under heavy multicast traffic.In conclusion,IGMP is a critical protocol for managing multicast group memberships in IP networks. By allowing hosts to join and leave multicast groups dynamically,IGMP enables efficient and scalable delivery of multicast traffic,catering to various applications and improving network performance. IGMP协议的工作原理IGMP(Internet Group Management Protocol)是一种网络层协议,用于在Internet协议(IP)网络上的主机和相邻路由器之间报告它们的组播组成员关系。

IGMP协议

IGMP协议

IGMP协议协议名称:Internet组管理协议(IGMP)一、引言Internet组管理协议(IGMP)是在多播网络中用于主机和路由器之间进行通信的协议。

本协议旨在支持主机加入和离开多播组,并使路由器能够了解主机的多播组成员资格。

二、范围本协议适用于所有支持多播的网络设备,包括主机和路由器。

三、定义1. 多播组:一组具有相同IP多播地址的主机的集合。

2. 主机:连接到多播网络的设备,可以加入和离开多播组。

3. 路由器:负责在多播网络中传递多播数据包的设备。

四、协议规范1. IGMP消息格式IGMP消息由以下字段组成:- 类型(Type):指示消息类型的字段。

- 最大响应时间(Max Response Time):指示主机等待路由器响应的最长时间。

- 校验和(Checksum):用于检测消息的完整性。

- 组地址(Group Address):指示加入或离开的多播组的IP地址。

2. 主机加入多播组主机可以通过发送IGMP加入报文来加入一个多播组。

该报文中包含要加入的多播组的IP地址。

路由器收到该报文后,将该主机添加到相应的多播组成员列表中。

3. 主机离开多播组主机可以通过发送IGMP离开报文来离开一个多播组。

该报文中包含要离开的多播组的IP地址。

路由器收到该报文后,将该主机从相应的多播组成员列表中删除。

4. 路由器查询路由器可以通过发送IGMP查询报文来获取与多播组相关的信息。

查询报文中包含查询组地址和查询间隔。

主机收到查询报文后,必须在指定的时间内发送IGMP报文响应。

5. 路由器转发路由器根据收到的IGMP报文,决定是否转发多播数据包。

如果路由器的接口上没有任何主机加入相应的多播组,路由器将不会转发该组的数据包。

6. 路由器维护路由器需要维护多播组成员列表,包括加入和离开多播组的主机。

路由器还需要定期发送IGMP查询报文,以获取最新的多播组成员信息。

五、安全性考虑1. 身份验证:为了防止未经授权的主机加入多播组,可以使用身份验证机制,确保只有合法的主机才能加入多播组。

IGMP使用详解

IGMP使用详解

IGMP一、Internet 组管理协议IGMP 是Internet 组管理协议(Internet Group Management Protocol)的缩写。

IGMP 在TCP/IP 协议中的位置:应用层协议(FTP,HTTP,SMTP)TCP UDP ICMP IGMPIPARP RARPMACPHY在了解 IGMP 协议的之前,我们首先看看以太网对报文的处理方法。

我们知道,目前使用的以太网(ethernet)有一个特点,当一个报文在一条线路上传输时,该线路上的所有主机都能够接收到这个报文。

只是当报文到达MAC 层时,主机会检测这个报文是不是发送给自己的,如果不是该报文就会被丢弃。

常用的抓包软件ethereal, sniffer 都可以捕获当前物理线路上的所有报文,不管该报文的目的地址是不是自己。

以太网中有一种特殊的报文广播包其目的mac 地址全为0xff,所有的主机都必须接收。

说到 IGMP 不能不提“组播”的概念。

假如现在一个主机想将一个数据包发给网络上的若干主机,有什么方法可以做到呢一个方法是采用广播包发送,这样网络上的所有主机都能够接收到,另一种方式是将数据包复制若干份分别发给目的主机。

这两个方法都存在问题:方法一,广播的方法导致网络上所有的主机都能接收到,占用了网络上其他主机的资源。

方法二,由于所有目的主机接收的报文都是相同的,采用单播方式显然效率很低。

为了解决上面所述的问题,人们提出了“组播”的概念,控制一个报文发送给对该报文感兴趣的主机,IGMP 就是组播管理协议。

我们来看一个简单的组播应用场景PC,如何处理呢首先STB 要发起一个连接请求,也就是IGMP report 报文,加入到电视直播的组播组中。

同样当STB 要断开连接的时候就发送一个IGMP leave 报文。

Router 也需要知道当前有哪些STB 加入了组播组,防止有的STB 异常掉线了,却依然占用系统资源。

Router 周期性的发送IGMP query 报文查询组播组情况,STB 接到query 报文后发送report 消息到router。

IGMP报文格式

IGMP报文格式
0 类型 8 暂停时间 群组地址 16 校验和 31
IGMP报文的类型 IGMP报文的类型
IGMPv1 IGMPv2
类型 0x11 0x11 0x16 0x17 0x12 群组地址 不使用 使用 使用 使用 使用 含义 一般的成员关系询问 特定的成员关系询问 成员关系报告 离开组 成员关系报告(IGMPv1)
本节结束
ቤተ መጻሕፍቲ ባይዱ
IGMP报文格式 IGMP报文格式
IGMP报文格式 IGMP报文格式
类型字段:报文的类型。 类型字段:报文的类型。 暂停时间:群组成员计算的最大随机时延 暂停时间:群组成员计算的最大随机时延 间隔,单位为0.1秒。默认的最大值为10秒 间隔,单位为0.1秒。默认的最大值为10秒 校验和:报文校验和,计算方法与IP数据报 校验和:报文校验和,计算方法与IP数据报 校验和的算法相同。 群组地址:填写特定群组的地址。如果为0 群组地址:填写特定群组的地址。如果为0, 则表示所有群组。

IGMP协议及抓包分析

IGMP协议及抓包分析

IGMPIGMP 是Internet Group Management Protocol(互联网组管理协议)的简称。

它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。

到目前为止,IGMP 有三个版本:1、IGMPv1(由RFC 1112 定义)2、IGMPv2(由RFC 2236 定义)3、IGMPv3(由RFC 3376定义)一、IGMPv11.1报文格式1、版本:版本字段包含IGMP版本标识,因此设置为1。

2、类型:成员关系查询(0x11)成员关系报告(0x12)3、校验和4、组地址:当一个成员关系报告正被发送时,组地址字段包含组播地址。

当用于成员关系查询时,本字段为0,并被主机忽略。

1.2组成员加入过程当一个主机希望接收一个组播组的数据,则发送成员加入报告给组播组。

IGMPv1 join包如下:1.3查询与响应过程路由器RTA(IGMP查询器)周期性地(默认60秒)向子网内所有主机(224.0.0.1代表子网内所有主机)发送成员关系查询信息。

所有主机收到IGMPv1成员关系查询信息,一主机首先向组播组发送IGMPv1成员关系报告。

组的其他成员监听到报告后抑制自己的成员关系报告发送。

1.4 抑制机制当主机收到IGMP成员关系查询时,对它已经加入的每个组播组启动一个倒计数报告计时器。

各个报告计时器初始值为从0到最大响应之间一个随机数,默认值是10秒。

计时器到时的主机则主动发送成员关系报告,目的地为该主机所属的组地址。

其它主机收到该成员关系报告,则抑制成员关系报告的发送,并删除计时器。

1.5 组成员离开过程主机“默不作声”地离开组(不发送报告了)。

路由器发送成员关系查询信息。

路由器没有收到该组的IGMP报告,则再发送成员关系信息(3次查询周期过后)。

组播组超时,剪枝。

二、IGMPv22.1报文格式1、类型成员关系查询(0x11)常规查询:用于确定哪些组播组是有活跃的,即该组是否还有成员在使用,常规查询地址由全零表示;特定组查询:用于查询某具体组播组是否还有组成员。

igmp协议书

igmp协议书

igmp协议书IGMP(Internet Group Management Protocol)是Internet协议族中的一种组管理协议。

它是在IPv4网络中,用于组播组成员管理和加入组播组的协议。

IGMP的主要功能是让主机能够通知网络路由器它希望加入一个特定的组播组,以便能够接收属于该组播组的IP数据报。

IGMP允许主机向网络中的路由器发送IGMP报文,请求加入一个组播组。

在路由器收到IGMP报文后,它就会更新自己的组播组成员表。

当有组播数据流发送至该组播组时,路由器就会把该数据流复制并发送到加入该组的主机上。

IGMP协议的信令主要有以下几种:1. IGMP Membership Query(成员查询)路由器通过发送成员查询报文,询问主机是否属于某个组播组。

它有两种类型,一种是通用查询(General Query),用于获取所有主机的组播成员表,另一种是特定查询(Group-Specific Query),用于获取某个特定组播组的成员表。

2. IGMP Membership Report(成员报告)主机通过发送成员报告报文,告知路由器它们属于哪些组播组。

成员报告可以是主动报告,也可以是响应查询后的报告。

3. IGMP Leave Group(离开组播组)主机通过发送离开组播组报文,告知路由器它不再属于某个组播组。

这样,路由器就可以及时更新自己的组播组成员表。

IGMP的工作原理如下:1. 路由器根据网络中的主机发送的IGMP成员报告,维护自己的组播组成员表。

2. 当有组播数据流发送至某个组播组时,路由器会将该数据流复制并发送给加入该组的主机。

3. 如果路由器在一段时间内没有收到组播组中的成员报告,则认为该组播组中没有成员了,并更新自己的成员表。

4. 当路由器收到查询报文后,会根据查询的类型发送相应的响应报文。

IGMP协议的应用场景主要有以下几个方面:1. 视频直播在视频直播中,常常需要将视频数据以组播的方式发送给多个观众。

详解IGMP(Internet组管理协议)报文及协议

详解IGMP(Internet组管理协议)报文及协议

1引言本文将介绍用于支持主机和路由器进行多播的Internet组管理协议(IGMP)。

它让一个物理网络上的所有系统知道主机当前所在的多播组。

多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发。

IGMP在RFC 1112中定义[Deering 1989].正如ICMP一样,IGMP 也被当作IP 层的一部分。

IGMP报文通过IP数据报进行传输。

不像我们已经见到的其他协议,IGMP有固定的报文长度,没有可选数据。

图13-1显示了IGMP报文如何封装在IP数据报中。

IGMP(Internet组管理协议)报文及协议(图一)IGMP报文通过IP首部中协议字段值为2来指明。

2 IGMP报文图1 3 - 2显示了长度为8字节的IGMP报文格式。

IGMP(Internet组管理协议)报文及协议(图二)这是版本为1的IGMP.IGMP类型为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。

检验和的计算和ICMP协议相同。

组地址为D类IP地址。

在查询报文中组地址设置为0,在报告报文中组地址为要参加的组地址。

在下一节中,当介绍IGMP如何操作时,我们将会更详细地了解它们。

3 IGMP 协议3.1 加入一个多播组多播的基础就是一个进程的概念(使用的术语进程是指操作系统执行的一个程序),该进程在一个主机的给定接口上加入了一个多播组。

在一个给定接口上的多播组中的成员是动态的—它随时因进程加入和离开多播组而变化。

这里所指的进程必须以某种方式在给定的接口上加入某个多播组。

进程也能离开先前加入的多播组。

这些是一个支持多播主机中任何API所必需的部分。

使用限定词“接口”是因为多播组中的成员是与接口相关联的。

一个进程可以在多个接口上加入同一多播组。

Stanford大学伯克利版Unix中的IP 多播详细说明了有关socket API的变化,这些变化在Solaris 2.x和ip(7)的文档中也提供了。

这里暗示一个主机通过组地址和接口来识别一个多播组。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、多播:用于向多个目的地址传送数据。

多播地址:地址由固定的4位1110 + 28位多播组ID构成,范围从224.0.0.0到239.255.255.255。

2、主机组:能够接收发往一个特定多播组地址数据的主机集合。

一些多播组地址被IANA 确定为知名地址,他们也被当作永久主机组。

例如:224.0.0.1代表“该子网内的所有系统组”,224.0.0.2代表“该子网内的所有路由器组”。

多播地址224.0.1.1用作网络时间协议NTP。

3、多播组地址到以太网地址的转换
IANA(互联网数字分配机构)拥有一个以太网地址块,即高位24bit为00:00:5e,这意味着该地址块所拥有的地址范围从00:00:5e:00:00:00到00:00:5e:ff:ff:ff。

IANA将其中的一半分配为多播地址。

为了指明一个多播地址,任何一个以太网地址的首字节必须是01,这意味着与IP多播相对应的以太网地址范围从01:00:5e:00:00:00到01:00:5e:7f:ff:ff。

将多播地址的低23位映射到以太网地址的低23位,高25位为固定的24位的01:00:5e 加1位0。

这样就从多播组ip地址得到了对应的多播组mac地址。

由于多播组地址的高5位(即1110的后5位)在映射过程中被忽略,因此每个以太网多播地址对应的多播组不是唯一的,由于地址映射不是唯一的,所有需要设备驱动程序或IP 层对数据报进行过滤。

4、IGMP:internet组管理协议
用于让一个物理网络上的所有系统知道主机当前所在的多播组。

多播路由器使用IGMP 报文来记录与该路由器相连网络中组成员的变化情况,首先,主机发送加入组播组报文到组播组,为了可靠,可以采取定时发送的方式向组播组发送加入报告报文。

同时组播组也会定发送查询报文,收到查询报文后回复报告报文。

如果主机已经离开了组播组则在收到查询报文后不发送报告报文。

IGMP被当做IP层的一部分,IGMP报文通过IP数据报进行传输。

其数据格式如下:
20字节的IP首部+8字节的IGMP报文
IGMP有3个版本(V1,V2,V3,)V1的报文格式如下:
➢4位版本:目前IGMP有V1,V2,V3三个版本,比如是V1则该4位为1,V3则该4位为3。

➢4位类型:有成员关系查询0x11 和成员关系报告0x12两种类型。

➢校验和:该8个字节的校验码。

➢32位组地址:当发送报文是成员关系报告时,该32位组地址即组播组地址。

当发送的报文是成员关系查询时,该32位为全0 。

V1版本只支持通用关系查询,不支持特定组查询。

V2版本报文格式如下:
➢8位类型:有三种类型。

1、成员关系查询0x11:在V2和V3中成员关系查询增加特定组查询;
常规查询:用于确定哪些组播组是活跃的,即改组是否还有成员在使用,常规查询组地址由全零表示。

特定组查询:用于查询某具体组播组是否还有组成员。

2、成员关系报告0x16
3、离开组消息0x17。

➢8位最大响应时间,设置为0。

➢校验和:报文段8个字节的校验码。

➢组地址:
1、成员关系查询报文:常规查询组低位为全0 ,特定组查询则应设置
对应的组地址
2、成员报告或离开组消息:组地址为要报告或要离开的组地址。

用wireshark抓取成员关系报告报文如下:
✧目的组地址:6个字节,通过多播组地址转换而来
✧源主机mac地址:6个字节
✧type:0x800
✧version:即IP的版本是4
✧header length:IP段的长度32字节(截图上是version和header length 都对应0x48,
个人认为是version对应4,长度32字节是8个32位,所以对应8)。

✧differentiated:8位,默认是0x00
✧total length:16位,总长度40bytes,即IP段加IGMP报文段长度是40字节
✧identification: 16位,id识别码。

✧flgas:8位0x00,
✧fragment offset:8位,0x00
✧ttl:8位,生存时间,0x01
✧protocol:8位,IGMP为0x02
✧header checksum:16位,IP段校验码
✧source:32位,源ip地址,即发送报告报文的主机IP地址
✧destination:32位,组播组ip地址
✧options:12字节,填充字节,全为0
✧type:8位,IGMP报文类型,0x16,成员关系报告
✧max resp time:8位,最大相应时间,设置为0x00
✧header checksum:16位,IGMP报文段校验码
✧multicast address:32位,组播组地址
✧6个填充字节:都为0
✧src port:16位,0x0000
离开组消息报告。

相关文档
最新文档