互联网组管理协议 (IGMP) 使一组联网设备能够共享相同的 IP 地址并接收相同的消息。
阅读本文后,您将能够:
复制文章链接
互联网组管理协议 (IGMP) 是允许多个设备共享一个 IP 地址以便它们可以接收相同数据的协议。IGMP 是一个网络层协议,用于在使用互联网协议版本 4 (IPv4) 的网络上设置多播。具体来说,IGMP 允许设备加入一个多播组。
多播是指一组设备都接收相同的消息或数据包。多播通过在多个设备之间共享 IP 地址来运作。指向该 IP 地址的任何网络流量都将到达共享该 IP 地址的所有设备,而不仅仅是一台设备。这很像一组员工都收到针对某个电子邮件别名的公司电子邮件。
连接到网络的计算机和其他设备在想要加入多播组时使用 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 是网络层协议,只有知道网络层的网络设备才能收发消息。路由器在网络层运行,而网络交换机可能只知道第 2 层,也称为数据链路层。结果,交换机可能不知道哪些网络设备是多播组的一部分,而哪些不是。它最终可能会将多播流量转发到不需要它的设备,这会占用网络带宽和设备处理能力,从而减慢整个网络的速度。
IGMP 侦听通过启用交换机对 IGMP 消息的“侦听”来解决此问题。通常,第 2 层交换机不知道 IGMP 消息,但它们可以通过 IGMP 侦听来侦听这些消息。这使它们能够确定应该将多播消息转发到哪里,以便只有正确的设备才会收到多播流量。
IPv4 和 IPv6 是互联网协议 (IP) 的两个不同版本。IPv6 更新,但 IPv4 仍在广泛使用。在 IPv6 中,采用多播侦听程序发现 (MLD) 作为多播协议,而不是 IGMP。
Anycast 是另一种使网络通信能够到达多个地方的技术。与多播类似,Anycast 网络允许同一组服务器共享一个或多个 IP 地址。但是,不是所有服务器都接收到这些 IP 地址的所有流量,网络会根据一组预定的标准将流量路由到其中一个服务器。Anycast 网络还可以支持比多播组更广泛的 IP 地址。例如,Cloudflare 网络使用 Anycast 将所有用户流量路由到最近的数据中心。
“Unicast”描述了大多数互联网的工作方式。在 Unicast 网络中,网络上每个连接的设备都有一个唯一的地址。指向该地址(在互联网上,即为 IP 地址)的消息只会发送到该设备——而不是像多播那样发送到多个设备。