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协议概述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协议协议名称: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一、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报文的类型 IGMP报文的类型
IGMPv1 IGMPv2
类型 0x11 0x11 0x16 0x17 0x12 群组地址 不使用 使用 使用 使用 使用 含义 一般的成员关系询问 特定的成员关系询问 成员关系报告 离开组 成员关系报告(IGMPv1)
本节结束
ቤተ መጻሕፍቲ ባይዱ
IGMP报文格式 IGMP报文格式
IGMP报文格式 IGMP报文格式
类型字段:报文的类型。 类型字段:报文的类型。 暂停时间:群组成员计算的最大随机时延 暂停时间:群组成员计算的最大随机时延 间隔,单位为0.1秒。默认的最大值为10秒 间隔,单位为0.1秒。默认的最大值为10秒 校验和:报文校验和,计算方法与IP数据报 校验和:报文校验和,计算方法与IP数据报 校验和的算法相同。 群组地址:填写特定群组的地址。如果为0 群组地址:填写特定群组的地址。如果为0, 则表示所有群组。
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(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组管理协议)报文及协议
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)的文档中也提供了。
这里暗示一个主机通过组地址和接口来识别一个多播组。
icmp和igmp报文格式
icmp和igmp报文格式ICMP(Internet Control Message Protocol)和IGMP(Internet Group Management Protocol)是两种常见的网络协议,用于在互联网中进行控制和管理。
下面是它们的报文格式的详细解释:1. ICMP报文格式:ICMP报文通常封装在IP报文中,用于在网络中传递控制消息。
ICMP报文格式如下:类型(Type),8位字段,表示ICMP消息的类型,用于指示报文的目的和功能。
代码(Code),8位字段,与类型字段一起用于提供更具体的信息,进一步说明ICMP消息的目的。
校验和(Checksum),16位字段,用于检验ICMP报文的完整性。
其他字段,根据不同的ICMP消息类型和代码,可能会有其他字段,用于携带相关的数据信息。
ICMP报文的具体格式会根据不同的类型和代码而有所变化,例如,ICMP回显请求和回显应答的报文格式稍有不同。
2. IGMP报文格式:IGMP报文用于在IP网络中进行组播组管理。
IGMP报文格式如下:类型(Type),8位字段,表示IGMP消息的类型,用于指示报文的目的和功能。
最大响应时间(Max Response Time),8位字段,表示发送方对IGMP查询消息的响应时间上限。
校验和(Checksum),16位字段,用于检验IGMP报文的完整性。
组播地址(Group Address),32位字段,表示组播组的IP 地址。
IGMP报文的具体格式也会根据不同的类型而有所变化,例如,IGMP查询报文和IGMP报告报文的格式不同。
总结起来,ICMP报文用于网络控制消息的传递,而IGMP报文用于组播组管理。
它们的报文格式都包含了类型、代码、校验和等字段,具体的格式会根据不同的消息类型而有所变化。
以上是对ICMP和IGMP报文格式的简要介绍。
详解IGMP(Internet组管理协议)报文及协议
1引言本文将介绍用于支持主机和路由器进行多播的I ntern et组管理协议(IGMP)。
它让一个物理网络上的所有系统知道主机当前所在的多播组。
多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发。
IGMP在R FC 1112中定义[Deerin g 1989].正如ICMP一样,IGMP 也被当作IP层的一部分。
IGMP报文通过IP数据报进行传输。
不像我们已经见到的其他协议,IGMP有固定的报文长度,没有可选数据。
图13-1显示了IG MP报文如何封装在I P数据报中。
IGMP(Intern et组管理协议)报文及协议(图一)IGMP报文通过IP首部中协议字段值为2来指明。
2 IGMP报文图1 3 - 2显示了长度为8字节的IGMP报文格式。
IGMP(Intern et组管理协议)报文及协议(图二)这是版本为1的IGMP.IGMP类型为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。
检验和的计算和ICMP协议相同。
组地址为D类IP地址。
在查询报文中组地址设置为0,在报告报文中组地址为要参加的组地址。
在下一节中,当介绍IGM P如何操作时,我们将会更详细地了解它们。
3 IGMP 协议3.1 加入一个多播组多播的基础就是一个进程的概念(使用的术语进程是指操作系统执行的一个程序),该进程在一个主机的给定接口上加入了一个多播组。
在一个给定接口上的多播组中的成员是动态的—它随时因进程加入和离开多播组而变化。
这里所指的进程必须以某种方式在给定的接口上加入某个多播组。
进程也能离开先前加入的多播组。
这些是一个支持多播主机中任何AP I所必需的部分。
使用限定词“接口”是因为多播组中的成员是与接口相关联的。
IGMP 详解
IGMP协议详解摘要:文章来自于《TCP/IP详解》卷一第十三章。
本文详细介绍IGMP协议原理及实现实例。
1、引言本文将介绍用于支持主机和路由器进行多播的Internet组管理协议(IGMP,Internet Group Management Protocol)。
它让一个物理网络上的所有系统知道主机当前所在的组播组。
组播路由器(也称多播路由器,Multicast Router)需要这些信息以便知道多播数据报应该向哪些接口转发。
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和3。
目前普遍使用的是版本2。
IGMP类型为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。
检验和的计算和ICMP协议相同。
组地址为D类IP地址。
在查询报文中组地址设置为0,在报告报文中组地址为要参加的组地址。
在下一节中,当介绍IGMP如何操作时,我们将会更详细地了解它们。
IGMP报文V2版本(RFC2236 、RFC3376):类型字段(type):原版本和类型合并,其中值等于0x11为Membership query;0x12为IGMP v1 Membership report,0x16为IGMP v2 Membershipreport(join),0x17为IGMP v2 leave.最大响应时间(Max Resp Time):缺省为10秒,规定在发送回应报告之前的最大延迟时间,1/10秒为单位组地址字段(Group Address):32位D类IP地址。
linux igmp 分析
在具体实现功能时,又分为 IGMP SNOOPING 与 IGMP PROXY 两种。 对于 IGMP SNOOPING 这是在二层实现组播数据限制的一个功能。对于一个路由器或 者 2 层 switch,当 lan 层的一个端口发送一个 IGMP report 报文加入一个组播组后,如果没 有开启 IGMP SNOOPING,则数据会 flood 到所有 lan 側端口,这样会增加网络负载。如果 开启了 IGMP SNOOPING,路由器或者 2 层 switch 就会分析 IGMP 报文,为端口和 IGMP 组播组地址建立映射关系,这样下行的组播流数据就只会转发到加入组播组的端口,而不会
flood 到所有桥端口。
对于 IGMP PROXY,主要是拦截 lan 側 pc 发送的 igmp 报文,其在 wan 側作为 客户端相应上行路由的查询操作,而在 lan 側则作为服务端定期发送查询报文。
当 lan 側加入的组播组在 IGMP PROXY 设备上没有相应的组播路由时,才会 给上层发送组播加入报文,当 lan 側加入的组播组在 IGMP PROXY 设备上已经存 在时,则无需再将加入报文转发出去。这样不仅能够达到有效抑制二层组播泛滥 的问题,且能更有效的获取和控制用户信息,降低网络负载。
对于通用成员关系查询,需要将 Multicast ip address 设置为 0;对于特定组成员关系查询, 需要将 Multicast ip address 值设置为要查询的组播组地址。
IGMPv1,v2,v3的原理报文形式
目录1 IGMP 协议 (2)1.1 IGMPv1协议 (2)1.1.1 IGMPv1的工作原理 (2)1.1.2 IGMPv1报文格式 (2)1.1.3 IGMPv1工作过程 (3)1.2 IGMPv2协议 (5)1.2.1 IGMPv2的工作原理 (5)1.2.2 IGMPv2的报文格式 (6)1.2.3 IGMPv2工作过程 (7)1.3 IGMPv3协议 (9)1.3.1 IGMPv3的工作原理 (9)1.3.2 IGMPv3的报文格式 (9)1.3.3 IGMPv3的主要改进 (12)2 MLD协议 (13)2.1 MLDv1协议 (14)2.1.1 MLDv1的工作原理 (14)2.1.2 MLDv1报文格式 (14)2.1.3 MLDv1工作流程 (16)2.2 MLDv2协议 (16)2.2.1 工作原理 (17)2.2.2 MLDv2报文格式 (17)2.2.3 MLDv2工作过程 (23)1 IGMP 协议IGMP用来动态的将各个主机注册到特定局域网中的一个组播组中。
主机向本地的组播路由器发送IGMP消息来表明自己所属的组播组。
在IGMP协议中,路由器侦听IGMP消息并周期的发出查询,以发现某个子网上哪些组是活动的,哪些是不活动的。
IGMP消息在IP数据报内发送,用IP协议号2来标识。
同时,将IP存活时间(TTL)字段值设定为1,因此IGMP信息处于本地范围本子网内传送并且不会被路由器转发。
1989年,IGMP版本1(RFClll2)第一次详细定义了IGMP规范。
后来施乐公司对最早的IGMP版本1进行了大幅更新,产生了IGMP版本2(RFC2236)。
到目前为止IGMP版本3规范己经称为IETF 正式标准(RFC3376),通用的是IGMPv2。
IGMPvl实现简单,但是有离开延迟过大和选择查询路由器需要依赖组播路由协议的缺点,IGMPv2对此进行了改进。
IGMPv3协议的主要目的是支持源特定组播,并进一步对IGMPv2进行完善。
实验五 利用Wireshark分析IGMP协议
协议分析实验报告年级:姓名:学号:实验日期: 2013-04-10实验名称:利用wireshark分析IGMP协议一、实验目的分析IGMP协议二、实验环境与因特网连接的计算机,操作系统为Windows,安装有Wireshark、IE等软件。
三、协议简介Internet 组管理协议(IGMP)是因特网协议家族中的一个组播协议,用于IP 主机向任一个直接相邻的路由器报告他们的组成员情况。
IGMP 信息封装在IP 报文中,其IP 的协议号为2。
它用来在ip主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
igmp不包括组播路由器之间的组成员关系信息的传播与维护,这部分工作由各组播路由协议完成。
所有参与组播的主机必须实现igmp。
报告报文字段说明:Type(8bit)0x22 成员关系报告Reserved( 8bit)和Reserved( 16bit):都是表示保留字段,不过在IGMP中为了使它们都保持对应的长度,所以才有了长度上的区别,它在发送的时候是以0填充,在接收的时候是不作任何处理的。
校验和校验和是对整个IGMP消息以16位为一段进行取反求和。
为了计算校验和,校验和字段首先必须被置0。
当收到一个数据,在处理之前,必须先对校验和进行验证。
Number_of_Group_Records(M):该字段表示该报告报文中包含有几个组记录Group Record[i] (i 从1 到M):一个主机可能需要点播多个组播地址的组播业务,每个记录包含了对应于其中一个组播地址的源地址列表等信息,它受到Number_of_Group_Records的大小的影响。
每一个组记录字段是一整块数据,其含有的信息是关于发送者在报告发送接口上的某一个多播组的成员关系。
每一个Group Reocrd的内部格式如下:字段说明:Aux Data Len:辅助数据长度含有在组记录中的辅助数据的实际长度,其单位是32bit字。
它有可能是0,这就表示辅助数据不存在。
IGMP协议介绍课件
• 4)Group Address 組播地址。
IGMP V2報文舉例
IGMP V2:查詢器選舉過程
1.路由器啟動,主動發出所有組播系統組的(224.0.0.1)IGMPV2常 規資訊查詢
2.收到常規查詢資訊的路由器,會把此信息的源ip地址和接收的ip地 址作比較,擁有最低IP地址的路由器被選舉為IGMP查詢路由器。
• IGMPv2報文格式為:
報文格式分析 • 1)Type
IGMP的消息類型,IGMP V2有三種消息類型 0x11:type值為0x11表示IGMP V2組成員查詢(Query)報文。查詢 報文又分為一般查詢報文和特定查詢報文,一般查詢報文用來查詢 哪些組在所連接的網路上有組成員;而特定查詢則用來查詢指定組 在所連接的網路上是否有組成員。一般查詢報文和特定查詢報文時 這麼區分的:如果Group Address字段值為0,就是一般查詢報文, 否則就是特定查詢報文。
• 多播MAC地址就是範圍 在01:00:5E:00:00:00到01:00:5E:7F:FF:FF內的MAC地址;
• 多播IP地址和MAC地址之間的映射關係; 將MAC地址的前25位強行規定位01.00.5e,而後23位對應 IP地址的後23位,而組播IP地址的前4位均相同。如: IP地址: 1110yyyy.yxxxxxxx.xxxxxxx.xxxxxxxx MAC地址:00000001.00000000.01011110.0xxxxxxx.xxxxxxx. xxxxxxxx
1)0x11 成員查詢 3)0x12 IGMP V1的Report消息 5)0x17 IGMP V2的Leave消息 IGMP V3的查詢消息格式為
IGMP协议详解与测试方法
IGMP协议详解与测试方法IGMP(Internet Group Management Protocol,Internet组管理协议)是一种用于IP网络的组播协议。
它允许主机加入到特定的组播组,并通过查询和报告机制通知路由器有关组播组成员的信息。
本文将详细介绍IGMP协议的工作原理,并提供一种测试IGMP功能的方法。
IGMP的工作原理如下:1. 主机加入组播组:主机通过发送IGMP报文加入到组播组。
IGMP 消息有三种类型:查询(Query)、报告(Report)和离开(Leave)。
查询消息由路由器发出,用于了解网络中的组播组成员。
报告消息由主机发出,用于加入到组播组或报告存在。
离开消息由主机发出,用于离开组播组。
2.路由器维护组播组成员表:路由器通过接收IGMP消息维护一个组播组成员表。
当收到报告消息时,路由器将主机添加到对应的组播组成员表中。
当收到离开消息时,路由器将主机从对应的组播组成员表中删除。
3.路由器转发组播流量:当路由器接收到组播数据包时,它会查找组播组成员表,确定需要转发数据包的接口。
然后,路由器根据IP协议的特性将数据包转发到指定接口。
IGMP的测试方法如下:1.确保网络拓扑正确:首先,需要构建一个符合组播网络拓扑的实验环境。
包括至少一个路由器和多个主机,确保它们的IP地址和子网掩码设置正确,并且路由器启用了IGMP功能。
2.观察组播组成员表:使用网络管理工具或命令行工具,查看路由器的组播组成员表。
确认路由器能够正确维护主机的加入和离开。
3. 加入组播组和报告存在:在其中一个主机上执行加入组播组操作,并发送报告消息。
可以使用命令行工具如"igmp join <组播组IP>"执行加入操作,并使用网络抓包工具观察IGMP报文。
4. 离开组播组和报告离开:在加入组播组的主机上执行离开组播组操作,并发送离开消息。
可以使用命令行工具如"igmp leave <组播组IP>"执行离开操作,并使用网络抓包工具观察IGMP报文。
igmp协议格式
igmp协议格式IGMP协议格式IGMP(Internet Group Management Protocol,互联网组管理协议)是一种用于在IP网络中进行多播组管理的协议。
它允许主机和路由器在网络上加入或离开一个多播组。
下面将介绍IGMP协议的格式。
1. IGMP报文格式IGMP报文分为两种类型:查询报文和应答报文。
查询报文用于查询特定多播组的成员,应答报文用于回复查询报文。
2. IGMP查询报文格式IGMP查询报文由四个字段组成:类型字段、最大响应时间字段、校验和字段和组地址字段。
类型字段:指示该报文是一个查询报文还是一个应答报文。
它的值为0x11,表示这是一个查询报文。
最大响应时间字段:指示发送者期望接收到响应的最长时间,以秒为单位。
如果没有成员在该多播组中,则发送者将等待这个时间后停止等待响应。
如果有成员在该多播组中,则成员将随机等待一段时间后发送一个应答报文。
校验和字段:对整个数据包进行校验和计算,并存储在该字段中。
组地址字段:指示要查询的多播组地址。
3. IGMP应答报文格式IGMP应答报文由五个字段组成:类型字段、保留位字段、校验和字段、组地址字段和可选数据字段。
类型字段:指示该报文是一个查询报文还是一个应答报文。
它的值为0x12,表示这是一个应答报文。
保留位字段:保留位,必须设置为0。
校验和字段:对整个数据包进行校验和计算,并存储在该字段中。
组地址字段:指示要加入或离开的多播组地址。
可选数据字段:可选的数据,用于向发送者提供更多信息。
如果没有任何可选数据,则该字段为空。
4. IGMP协议操作IGMP协议的操作分为三个阶段:成员加入阶段、成员维护阶段和成员离开阶段。
成员加入阶段:当主机或路由器希望加入一个多播组时,它将发送一个IGMP报文,其中包含要加入的多播组地址。
路由器接收到这个报文后,将在其转发表中添加一个条目,以便将流量转发到该多播组。
如果没有其他成员在该多播组中,则路由器将发送一个查询报文以查找其他成员。
IGMPv1-v2-v3的原理报文形式_New.docx
IGMPv1-v2-v3的原理报文形式目录1 IGMP 协议 (3)1.1 IGMPv1协议 (3)1.1.1 IGMPv1的工作原理1.1.2 IGMPv1报文格式1.1.3 IGMPv1工作过程1.2 IGMPv2协议 (7)1.2.1 IGMPv2的工作原理1.2.2 IGMPv2的报文格式1.2.3 IGMPv2工作过程1.3 IGMPv3协议 (11)1.3.1 IGMPv3的工作原理1.3.2 IGMPv3的报文格式1.3.3 IGMPv3的主要改进2 MLD协议 (16)2.1 MLDv1协议 (16)2.1.1 MLDv1的工作原理 (16)2.1.2 MLDv1报文格式 (16)2.1.3 MLDv1工作流程 (18)2.2 MLDv2协议 (19)2.2.1 工作原理 (19)2.2.2 MLDv2报文格式 (20)2.2.3 MLDv2工作过程 (28)1 IGMP 协议IGMP用来动态的将各个主机注册到特定局域网中的一个组播组中。
主机向本地的组播路由器发送IGMP消息来表明自己所属的组播组。
在IGMP协议中,路由器侦听IGMP消息并周期的发出查询,以发现某个子网上哪些组是活动的,哪些是不活动的。
IGMP消息在IP数据报内发送,用IP协议号2来标识。
同时,将IP存活时间(TTL)字段值设定为1,因此IGMP信息处于本地范围本子网内传送并且不会被路由器转发。
1989年,IGMP版本1(RFClll2)第一次详细定义了IGMP规范。
后来施乐公司对最早的IGMP版本1进行了大幅更新,产生了IGMP版本2(RFC2236)。
到目前为止IGMP版本3规范己经称为IETF正式标准(RFC3376),通用的是IGMPv2。
IGMPvl实现简单,但是有离开延迟过大和选择查询路由器需要依赖组播路由协议的缺点,IGMPv2对此进行了改进。
IGMPv3协议的主要目的是支持源特定组播,并进一步对IGMPv2进行完善。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
离开组消息报告。