什么是 IGMP?| 互联网组管理协议

互联网组管理协议 (IGMP) 使一组联网设备能够共享相同的 IP 地址并接收相同的消息。

学习目标

阅读本文后,您将能够:

  • 定义多播
  • 了解 IGMP 如何实现多播
  • 探索 IGMP 的运作原理

相关内容


想要继续学习吗?

订阅 TheNET,这是 Cloudflare 每月对互联网上最流行见解的总结!

参阅 Cloudflare 的隐私政策,了解我们如何收集和处理您的个人数据。

复制文章链接

什么是互联网组管理协议 (IGMP)?

互联网组管理协议 (IGMP) 是允许多个设备共享一个 IP 地址以便它们可以接收相同数据的协议。IGMP 是一个网络层协议,用于在使用互联网协议版本 4 (IPv4) 的网络上设置多播。具体来说,IGMP 允许设备加入一个多播组。

什么是多播?

多播是指一组设备都接收相同的消息或数据包。多播通过在多个设备之间共享 IP 地址来运作。指向该 IP 地址的任何网络流量都将到达共享该 IP 地址的所有设备,而不仅仅是一台设备。这很像一组员工都收到针对某个电子邮件别名的公司电子邮件。

IGMP 如何运作?

连接到网络的计算机和其他设备在想要加入多播组时使用 IGMP。支持 IGMP 的路由器侦听来自设备的 IGMP 传输,以确定哪些设备属于哪些多播组。

IGMP 使用为多播预留的 IP 地址。多播 IP 地址在 224.0.0.0 和 239.255.255.255 之间的范围内。(相比之下,Anycast 网络可以使用任何常规 IP 地址。)每个多播组共享其中一个 IP 地址。当路由器接收到一系列指向该共享 IP 地址的数据包时,它将复制这些数据包,将副本发送给多播组的所有成员。

IGMP 多播组可以随时更改。设备可以在任何时候发送 IGMP“加入组”或“离开组”消息。

IGMP 直接在互联网协议 (IP) 之上工作。每个 IGMP 数据包都有一个 IGMP 标头和一个 IP 标头。就像 ICMP一样,IGMP 不使用 TCP 或 UDP 之类的传输层协议。

有哪些类型的 IGMP 消息?

IGMP 协议允许几种 IGMP 消息:

  • 成员报告:设备将这些发送到多播路由器,以成为多播组的成员。
  • “离开组”消息:这些消息从设备发送到路由器,并允许设备离开多播组。
  • 一般成员查询:具有多播功能的路由器将这些消息发送到整个连接的设备网络,以更新网络上所有组的多播组成员资格。
  • 组特定成员查询:路由器将这些消息发送到特定的多播组,而不是整个网络。

什么是 IGMP 侦听?

IGMP 是网络层协议,只有知道网络层的网络设备才能收发消息。路由器在网络层运行,而网络交换机可能只知道第 2 层,也称为数据链路层。结果,交换机可能不知道哪些网络设备是多播组的一部分,而哪些不是。它最终可能会将多播流量转发到不需要它的设备,这会占用网络带宽和设备处理能力,从而减慢整个网络的速度。

IGMP 侦听通过启用交换机对 IGMP 消息的“侦听”来解决此问题。通常,第 2 层交换机不知道 IGMP 消息,但它们可以通过 IGMP 侦听来侦听这些消息。这使它们能够确定应该将多播消息转发到哪里,以便只有正确的设备才会收到多播流量。

IPv4 和 IPv6 中的多播有什么不同?

IPv4 和 IPv6 是互联网协议 (IP) 的两个不同版本。IPv6 更新,但 IPv4 仍在广泛使用。在 IPv6 中,采用多播侦听程序发现 (MLD) 作为多播协议,而不是 IGMP。

多播与 Anycast 和 Unicast 有什么不同?

多播与 Anycast

Anycast 是另一种使网络通信能够到达多个地方的技术。与多播类似,Anycast 网络允许同一组服务器共享一个或多个 IP 地址。但是,不是所有服务器都接收到这些 IP 地址的所有流量,网络会根据一组预定的标准将流量路由到其中一个服务器。Anycast 网络还可以支持比多播组更广泛的 IP 地址。例如,Cloudflare 网络使用 Anycast 将所有用户流量路由到最近的数据中心。

多播与 Unicast

“Unicast”描述了大多数互联网的工作方式。在 Unicast 网络中,网络上每个连接的设备都有一个唯一的地址。指向该地址(在互联网上,即为 IP 地址)的消息只会发送到该设备——而不是像多播那样发送到多个设备。