首页 > 其他分享 >计算机网络:网络层 —— 网际组管理协议 IGMP

计算机网络:网络层 —— 网际组管理协议 IGMP

时间:2024-11-03 20:48:58浏览次数:4  
标签:多播 IP 报文 网络层 网际 主机 IGMP 路由器

文章目录

IP多播协议

要在因特网上进行IP多播,就必须要考虑IP多播数据报经过多个多播路由器进行转发的问题。多播路由器必须根据IP多播数据报首部中IP多播地址,将其转发到有该多播组成员的局域网。

网际组管理协议IGMP

网际组管理协议(Internet Group Management Protocol,IGMP)是 TCP/IP 体系结构网际层中的协议,其作用是让连接在本地局域网上的多播路由器知道本局域网上,是否有主机(实际上是主机中的某个进程)加入或退出了某个多播组

IGMP 仅在本网络有效,使用 IGMP 并不能知道多播组所包含的成员数量,也不能知道多播组的成员都分布在哪些网络中

![[网际组管理协议IGMP.png]]

IGMP的三种报文类型

网际组管理协议 IGMP 目前的最新版本是2002年10月公布的 IGMPv3 [RFC 3376]

IGMP 有三种报文类型:

  • 成员报告报文
  • 成员查询报文
  • 离开组报文

IGMP 报文被封装在 IP 数据报中传送,TCP/IP 的网际层会为其添加一个 IP 首部,使之成为 IP 数据报:

  • 协议字段的值=2,表示数据载荷部分是 IGMP 报文

  • 目的地址字段的值根据其所封装 IGMP 报文类型各有不同,但都属于IP多播地址

  • 生存时间TTL字段的值=1,避免封装 IGMP 报文的 IP 多播数据报被路由器转发到其他网络。

  • 封装有 IGMP 报文的 IP 数据报都是 IP 多播数据报

IGMP的基本工作原理
加入多播组

加入多播组:希望加入多播组的主机(即希望接收多播数据的设备)向以太网发送IGMP成员报告报文

假设 主机B 首先以太网发送 IGMP 成员报告报文,主机A 也要发送 IGMP 成员报告报文,接收到 主机B 发送的成员报告报文后,就取消发送自己的成员报告报文:

![[加入多播组.png]]

  1. 主机B发起请求

    • 主机B首先决定它想要加入一个具有 IP 地址 226.0.9.26 的多播组。
    • 它通过发送一个 IGMP 成员报告报文来表达这一意图。这个报文被封装在 IP 多播数据报中,再进一步封装在以太网多播帧里。
    • 报文中指定了目标多播地址 226.0.9.26,以及对应的以太网多播地址 01-00-5E-00-09-1A
  2. 路由器R1接收到请求:当路由器 R1 收到这个 IGMP 成员报告报文时,它解析出相关信息,并将其添加到内部维护的多播组列表中。此时,R1 知道至少有一台主机(B)对该多播组有兴趣。

  3. 其他主机的行为:其他主机(如 A, C 和 D)也可能尝试加入不同的多播组。

    • 主机A 同样希望加入 226.0.9.26 组,但它发现 B 已经发送了请求,于是选择不发送自己的 IGMP 成员报告报文。

    • 主机C 想加入另一个多播组 228.1.1.1,但它的请求在 MAC 层就被丢弃了,可能是由于某种原因(例如,该组不在其配置范围内)。

    • 主机D 不打算加入任何多播组,因此不会发送 IGMP 成员报告报文。

  4. 结果

    • 最终,路由器 R1 的多播组列表中记录了两个组:226.0.9.26 和 228.1.1.1。
    • 对于每个组,R1 会根据成员情况调整其多播数据的转发策略,确保仅将数据发送给已知的感兴趣成员所在的子网。
监视多播组的成员变化

监视多播组的成员变化:多播路由器默认每隔125秒就向其直连网络发送一个封装有 IGMP 成员查询报文的 IP 多播数据报

多播路由器发送IGMP成员查询报文
  • IGMP成员查询报文中的内容也可以是 0.0.0.0,表示全部多播组

  • 224.0.0.1 是特殊的IP多播地址,在本网络中所有参加多播的主机和路由器的网际层都会接受该多播数据报

  • 以太网多播帧的目的地址,是由IP多播数据报的目的地址映射而来的多播MAC地址

![[多播路由器发送IGMP成员查询报文.png]]

  1. IGMP成员查询报文的封装:查询报文被封装在 IP 多播数据报中,然后再封装在以太网多播帧中。IP 多播数据报的目标地址通常是 224.0.0.1(所有系统组),这是标准的多播地址,用于向网络中的所有主机发送消息。

  2. 查询报文的内容:查询报文中包含多播组的IP地址 226.0.9.26,说明路由器正在询问是否有主机想要加入这个特定的多播组。

  3. 主机响应查询

    • 主机A 和 主机B 分别在收到查询后的 2 秒和 8 秒内回应了 IGMP 成员报告报文,表明它们有意加入指定的多播组。

    • 主机C没有回应,这意味着它不想加入该多播组。

    • 主机D也不在任何多播组中,因此也不会回应查询。

  4. MAC层处理

    • 主机A 和 主机B 的 MAC 层接受了查询报文,并向上层传递。

    • 主机C 和 主机D 的 MAC 层丢弃了查询报文,因为它们没有加入相关的多播组。

  5. 多播组列表更新:根据主机的响应,路由器R1更新了其多播组列表,记录下了哪些主机对哪个多播组感兴趣。

通过这样的周期性查询和响应机制,多播路由器能够保持最新的多播组成员信息,从而更有效地管理和转发多播数据。

多播组成员发送IGMP成员报告报文

![[发送IGMP成品报告报文作为应答.png]]

  • 收到IGMP成员查询报文的被查询多播组的任何成员,将会发送IGMP成员报告报文作为应答,为了减少不必要的重复应答,每个多播组只需要有一个成员应答就可以了。

  • 因此,采用了一种延迟响应的策略,收到IGMP成员查询报文的主机并不是立即响应,而是在1~10秒的范围内,等待一段随机的时间后再进行响应。如果在这段随机的时间内,收到了同组其他成员发送的IGMP成品报告报文,就取消响应

多播路由器移除多播组成员

假设 主机C 不再是多播组 228.1.1.1 的成员,多播路由器长时间收不到该多播组成员的响应,则将其从多播组列表中删除。

![[主机不再是多播组成员.png]]

注意事项
  • 同一网络中的多播路由器可能不止一个,但没有必要每个多播路由器都周期性地发送IGMP成员查询报文。

  • 只要在这些多播路由器中选择一个作为查询路由器,由查询路由器发送IGMP成员查询报文,而其他的多播路由器仅被动接收响立并更新自己的多播组列表即可。

  • 选择查询路由器的方法:每个多播路由器若监听到源IP地址比自己的IP地址小的IGMP成员查询报文,则退出选举。最后,网络中只有IP地址最小的多播路由器成为查询路由器

退出多播组

IGMPV2IGMPv1 的基础上增加了一个可选项:当主机要退出某个多播组时,可主动发送一个离开组报文,而不必等待多播路由器的查询。这样可使多播路由器能够更快地发现某个组有成员

![[离开组报文.png]]

  • 224.0.0.2 是特殊的IP多播地址,在本网络中的所有多播路由器的网际层都会接受该多播数据报。

  • 有成员离开该多播组,暂时不删除该多播组,立即发送针对该多播组的特殊的IGMP成员查询报文,探测该多播组是否还有其他成员。封装该报文的IP多播数据报的目的地址,为该多播组的地址 228.1.1.1,而不是特殊的多播地址 224.0.0.1.

标签:多播,IP,报文,网络层,网际,主机,IGMP,路由器
From: https://blog.csdn.net/Zachyy/article/details/143469688

相关文章

  • 计算机网络:网络层 —— 开放最短路径优先 OSPF
    文章目录路由选择协议动态路由协议开放最短路径优先OSPF链路状态OSPF路由器邻居关系的建立和维护链路状态通告链路状态更新分组链路状态数据库OSPF的五种分组类型OSPF的基本工作过程多点接入网络中的OSPF路由器OSPF划分区域OSPF区域的类型OSPF区域的相关概念路......
  • 计算机网络-网络层概述
    网络层所处的地位网络层在五层协议模型当中处于第三层的位置,它为上层的传输层提供服务。应用层的数据传输单位是报文。应用层把报文交给传输层之后,传输层会把报文拆分成报文段,紧接着传输层又把报文段交给网络层,让网络层进行传输,那网络层会在报文段的基础之上加一个首部,我们......
  • 计算机网络第四章——网络层
    网络层的主要任务就是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层的传输单位是数据报。网络层的主要功能:功能一:路由选择与分组转换功能二:异构网络互联功能三:拥塞控制一.SDN路由器的功能:转发和路由选择转发:达到路由器输入链路之一的数据报然......
  • MAC地址+网络层
    进制二进制和十六进制之间1个16进制可以用4个二进制表示,1:4关系1111是否取值8421取值所代表的数值 在一台交换机上每台设备间的物理链路:不是直连--直接连接逻辑状态:都处于互联状态,处于一条链路上MAC地址由两部分组成,前24位代表该供应商代码,由IEEE管理和......
  • 第七章网络层协议与应用
    基础单词:source      源destination   目标type      类型header      包头一、网络层的功能:(逻辑寻址、路由转发)   1.定义了基于IP协议的逻辑地址   2.连接不同的媒介类型   3.选择数据通过网络的最佳路径二、数据包的格式:......
  • 每天五分钟玩转深度学习框架PyTorch:将nn的神经网络层连接起来
    本文重点前面我们学习pytorch中已经封装好的神经网络层,有全连接层,激活层,卷积层等等,我们可以直接使用。如代码所示我们直接使用了两个nn.Linear(),这两个linear之间并没有组合在一起,所以forward的之后,分别调用了,在实际使用中我们常常将几个神经层组合在一起,这样不仅操作方便,而且......
  • TCP/IP-网络层
    网络层的主要作用        网络层通过路由选择来确定数据包从发送端到接收端的最佳路径,并通过网络地址(如IP地址)来标识和寻址主机和网络。其提供的服务是无连接的,表示数据包的传输不依赖于事先建立的连接。路由选择        路由选择是确定数据包从源主机到目......
  • 0224-网络层的分片
    环境Time2022-11-20WSL-Ubuntu22.04Rust1.65.0pnet0.31.0tun-tap0.1.3前言说明参考:https://docs.rs/pnet/latest/pnet/index.html目标通过ping命令来认识网络层中的分片。查看MTU可以看到最大的MTU为1500。root@jiangbo12490:~#ipaddrshowdevtun0......
  • 【Linux】网络架构探秘:网络层功能、IP协议详解及路由过程指南
    文章目录前言:1.网络层是干什么的?2.IP协议2.1理论铺垫2.2IP协议的头格式2.3网段划分(重点)2.3.1分类划分法:2.3.2子网掩码:2.3.3为什么要经行子网划分?2.4特殊的IP地址2.5IP地址的数量限制2.6私有IP地址和公网IP地址3.路由过程总结:前言:在当今数字化时代......
  • Linux网络:网络层IP协议(一)
    目录一、网络层与IP协议基本概念1.1IP协议构成1.2网段划分1.3DHCP一、网络层与IP协议基本概念 在详细了解网络层之前我们需要先引入一些基本概念:主机:配置有IP地址,但不进行路由控制的设备,这里的主机就是我们的一台台电脑;路由器:即配置有IP地址,又能进行......