什么是IGMP?IGMP与ICMP有啥区别?

简介: IGMP 代表 Internet 组播管理协议,是 IPv4 网络上的主机和相邻路由器用来建立多播组成员资格的通信协议,当多播主机希望加入特定多播组并开始接收组流量时,IGMP 消息主要用于向其本地多播路由器发送信号,IGMP有三个版本:版本1、版本2、版本3。

你好,这里是网络技术联盟站。

前几天给大家带来了ICMP的文章:

  • 什么是 ICMP ?ping和ICMP之间有啥关系?

在多个平台广受大家喜爱,有朋友又想看IGMP的文章,咋一看这两个技术中间就差了一个字母,不过两者可是完全不一样的技术,那么今天瑞哥就安排一下!

让我们直接开始!

什么是IGMP?

  • 英文全称:Internet Group Management Protocol
  • 中文名称:互联网组管理协议
  • 第 3 层协议
  • IP 协议号:2
  • IPv4 组播的关键组件
  • IGMP 有 3 个版本:IGMPv1、IGMPv2 和 IGMPv3

IGMP允许主机将其组播成员身份通告给相邻的交换机和路由器,主机通过向其本地组播路由器发送 IGMP 消息来识别组成员身份,在 IGMP 下,路由器侦听 IGMP 消息并定期发送查询来发现特定子网上哪些组是活动的或非活动的。

IGMP基本架构

流量类型

流量一般三种类型:

单播示意图

单播

单播英文名叫Unicast,是点对点传输,单播需要一个发送方和一个接收方使用基于会话的协议发送数据包,例如TCP和UDP。

  • TCP的常见传输模式示例有httptelnetsmtp
  • UDP 的常见传输模式示例有 VoIP视频会议流媒体实时服务

广播

广播英文名叫Broadcast,单个设备向网络上的所有其他设备发送通信。

LAN 上广播流量的常见示例包括查询 LAN 上所有计算机的 ARP 消息。

广播流量不是可路由流量。

广播示意图

组播

组播英文名叫Multicast,也叫多播,支持从一个节点到多个接收者的单个数据传输副本,发送设备会将 UDP 数据包转发到组播 IP 地址和端口,以便所有想要接收流的目的地都可以接收传输,从而节省带宽和网络开销。

组播流量是可路由的流量,但需要 IGMP 和 PIM 来控制整个网络的泛滥、使上行链路饱和并可能导致网络瘫痪。

组播示意图

组播版本

在组播介绍中,我们介绍了组播有 3 个版本:

我们来稍微详细的了解一下。

IGMPv1

IGMPv1 是 TCP 网络中使用的通信协议的第一个开发和发布版本,对于这个版本,定义了组地址0.0.0.0,并定义了224.0.0.1作为一般查询的目标地址。

这些路由器生成请求的标准时间是 60 秒,并允许计算机加入对应的组播组。

随后,向对应的组播地址发出成员资格请求。

IGMPv1 不允许计算机通过超过时间限制自行离开组,从而将计算机从其访问的组中删除。

IGMP 头的总长度为 64 位,前 8 位表示协议版本和消息类型。

lGMPv1报文头如下:

IGMPv2

IGMPv2 在第一个版本发布后,于 1997 年在 RFC 2236 中定义,在lGMPv2中,group(0.0.0.0)和destination(224.0.0.1)地址没有变化,但是间隔时间增加到125秒。

第二个版本的主要创新是通过替换使用的注销时间限制来加快进程,由设备启动注销过程的第一个版本。

另一项创新是特定组播地址的接收状态是通过特定于组的消息确定的。

在这个版本中,地址 224.0.0.2 被定义为目标地址,IGMPv2 使用简单的 IP 数据包发送消息,IP 协议号为 2

在 IGMPv2 版本中,子网中具有最低 IP 地址的路由器用于多播查询

lGMPv2包头如下:

IGMPv3

IGMPv3 版本在 RFC 3376 和 RFC 4604 在 2002 中定义,在这个版本中,0.0.0.0224.0.0.1 地址被认为是一个组和目标地址,间隔时间与版本 2 相同。

新的特点是可以特殊选择组播流,这大大降低了对网络的需求,并且由于在传输过程中不使用未知或随机源,因此还提供了更高的安全性。

前两个 32 位序列与 lGMPv2 头类型、最大响应时间、校验和和组地址相同。

IGMPv3包头如下:

IGMP如何工作?

我们已经知道组播就是发送方向一组主机发送一条消息,组播路由器有责任将消息复制并转发给组播组的每个主机,组播组的每个主机都会收到消息,除非在接收主机上应用了过滤器。

IGMP协议工作的最核心部分就是管理主机在组播组中的成员关系,在管理组播组中主机或路由器的成员身份时,协议必须处理以下过程:

ICMP消息

暂且不看IGMP的版本,一般来说,从大的方面,IGMP消息有以下这六种:

Membership Report 成员报告消息

客户端在想要接收组播组时发送此消息,成员报告本质上是一条信息,表明有兴趣收听特定组。

Leave 离开消息

客户端在想要离开组时发送此消息。

General Query 一般查询消息

查询器将一般查询消息发送给所有客户端,无论查询器当前是否正在向客户端发送组播,来找出它们正在侦听的组,对一般查询的响应确保查询者的组成员信息保持最新。

一般查询的组地址字段设置为 0.0.0.0,它们被发送到目标地址 224.0.0.1,默认情况下,Allied Telesis 路由器和交换机每 125 秒发送一次。

Specific Query 具体查询消息

查询器将具体查询消息发送到组地址,来检查客户端是否仍在侦听该组,在客户端为该组发送离开消息后,查询器发送特定查询,特定查询使查询器能够确认所有下游客户端何时离开组,以便查询器可以停止发送多播流。

Membership Query 成员查询消息

这是具体查询和一般查询的通用术语。

IGMP优缺点

优点

  • IGMP促使带宽得到了有效利用
  • 比较灵活,可以立即离开某个组再加入另外一个组
  • 不存在大量垃圾包,性能得到提升

缺点

  • 缺少 TCP,可能会发生网络拥塞
  • 安全性不高,容易受到攻击

IGMP 侦听

IGMP 在第 3 层运行,因此,交换机无法理解 IGMP 消息,另外,交换机也不可能将组播MAC地址加入转发表,这是因为组播MAC地址从不作为源地址,这会导致组播流量被泛洪到广播域内的所有主机。

IGMP 侦听是在第 2 层交换机上启用的一项功能,用于检查主机和路由器之间的 IGMP 传输,通过这种检查,建立了一个映射,其中包含特定 VLAN 中的哪些主机需要接收组播传输,然后,交换机使用此信息将给定组播组的组播流量仅转发给给定 VLAN 内的接收器。

ICMP和IGMP的区别

文章开头也说了,这两个协议只差了一个字母,但是协议本身差异是非常巨大的,我们来了解一下:

1、定义
  • ICMP 代表 Internet 控制消息协议
  • IGMP 代表 Internet 组消息协议
2、典型功能
  • ICMP:ping
  • IGMP:组播
3、工作协议层
  • ICMP:第 3 层协议
  • IGMP:第 3 层协议
4、用途
  • ICMP:用于测试主机或网络的可达性
  • IGMP:用于 DTS 服务等分组数据传输

总结

IGMP 代表 Internet 组播管理协议,是 IPv4 网络上的主机和相邻路由器用来建立多播组成员资格的通信协议,当多播主机希望加入特定多播组并开始接收组流量时,IGMP 消息主要用于向其本地多播路由器发送信号,IGMP有三个版本:版本1、版本2、版本3,其中版本2是默认版本。

本文主要介绍了:

  • 什么是IGMP?
  • 流量类型

    • 单播
    • 广播
    • 组播
  • 组播版本

    • IGMPv1
    • IGMPv2
    • IGMPv3
  • IGMP如何工作?
  • ICMP消息

    • Membership Report 成员报告消息
    • Leave 离开消息
    • General Query 一般查询消息
    • Specific Query 具体查询消息
    • Membership Query 成员查询消息
  • IGMP优缺点

    • 优点
    • 缺点
  • IGMP 侦听
  • ICMP和IGMP的区别
  • 总结

谢谢您的阅读,如果有任何疑问,请在评论区与我讨论!

目录
相关文章
|
7月前
|
网络协议 网络架构
网络协议与攻击模拟-05-ICMP协议
网络协议与攻击模拟-05-ICMP协议
50 0
|
8月前
|
网络架构
ICMP协议(Internet控制消息协议)
本文详细的介绍ICMP协议,内含详细的实例解析,该文你值得拥有。
|
8月前
|
Linux C语言 C++
Linux ICMP协议实现:C/C++编程指南
ICMP(Internet Control Message Protocol)是网络通信中的重要协议,用于在IP网络中传递错误消息和诊断信息。在Linux系统中,我们可以使用C/C++编程语言来实现基本的ICMP功能,例如发送ICMP回显请求(Ping)和解析ICMP消息。本文将带您深入了解C/C++实现的ICMP协议,包括套接字编程、构造ICMP报文、发送和接收ICMP消息等,以及提供实际的代码示例。
472 1
|
缓存 网络协议 Linux
计算机网络——Wireshark软件使用与协议分析(ARP协议、IP与ICMP分析)
Wireshark软件使用与协议分析 ARP协议分析 使用 Wireshark 抓取局域网的数据包并进行分析: 1. 学习 Wireshark 基本操作:重点掌握捕获过滤器和显示过滤器。 2. 观察 MAC 地址:了解 MAC 地址的组成,辨识 MAC 地址类型。 3. 分析以太网帧结构:观察以太网帧的首部和尾部,了解数据封装成帧的原理。 4. 分析 ARP 协议:抓取 ARP 请求和应答报文,分析其工作过程。 IP与ICMP分析 启动 Wireshark,捕捉网络命令执行过程中本机接受和发送的数据报。
1757 0
计算机网络——Wireshark软件使用与协议分析(ARP协议、IP与ICMP分析)
|
2月前
|
域名解析 缓存 网络协议
|
3月前
|
监控 网络协议 网络安全
ICMP (Internet Control Message Protocol,互联网控制消息协议)
ICMP(Internet Control Message Protocol,互联网控制消息协议)是用于在IP网络中传递控制消息的协议。它通常被用于网络设备之间交换状态信息和错误报告,以及执行网络诊断和故障排除。
60 0
|
3月前
|
网络协议 API 网络安全
用户态协议栈设计实现udp,arp与icmp协议
用户态协议栈设计实现udp,arp与icmp协议
63 1
|
4月前
|
监控 网络协议 网络性能优化
【网络层】DHCP协议(应用层)、ICMP、IPv6详解
【网络层】DHCP协议(应用层)、ICMP、IPv6详解
58 0
|
4月前
|
网络协议 网络架构
Wireshark中的ICMP协议包分析
Wireshark可以跟踪网络协议的通讯过程,本节通过ICMP协议,在了解Wireshark使用的基础上,重温ICMP协议的通讯过程。 ICMP(Internet Control Message Protocol)Internet控制报文协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 ICMP是TCP/IP模型中网络层的重要成员,与IP协议、ARP协议、RARP协议及IGMP协议共同构成TCP/IP模型中的网络层。 在Wireshark界面,我们可以看到