什么是 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 不使用 TCPUDP 之类的传输层协议。

有哪些类型的 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 地址)的消息只会发送到该设备——而不是像多播那样发送到多个设备。