# 6. IP 组播

## 1. IP 数据报的三种传输方式

**单播：**&#x7528;于发送数据报到单个目的地址，且每发送一份单播报文都使用一个单播 IP 地址作为目的地址。是一种**点对点**传输方式。

![在发送者和每一接收者之间需要单独的数据信道](/files/-ME3gOO5fROri-pwwmSI)

**广播：**&#x53D1;送数据报到同一广播域或子网内的所有设备的一种数据传输方式，是一种**点对多点**传输方式。

**组播（多播）：**&#x5F53;网络中某些用户需要特定数据时，组播数据发送者仅发送一次数据，借助组播路由协议为组播数据报建立组播分发树，被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发，是一种**点对多点**传输方式。

![](/files/-ME3gn8t7pH8kUTHGzee)

## 2. IP 组播地址

IP 组播地址让源设备能够将分组发送给一组设备。属于多播组的设备将被分配**一个组播组 IP 地址**（**一群共同需求主机的相同标识**）

组播地址范围为 224.0.0.0 \~ 239.255.255.255（D 类地址），一个 D 类地址表示一个组播组。只能作为分组的**目标地址**。源地址总是为**单播地址**

1. 组播数据报也是 “尽最大努力交付”，不提供可靠传输，应用于 UDP
2. 对组播数据报不产生 ICMP 差错报文
3. 并非所有 D 类地址都可以作为组播地址

## 3. 硬件组播

同单播地址一样，组播 IP 地址也需要相应的组播 MAC 地址在本地网络中实际传送帧。组播 MAC 地址以十六进制值 01-00-5E 打头，余下的 6 个十六进制位是根据 IP 组播组地址的最后 23 位转换得到的

TCP/IP 协议使用的以太网多播地址的范围是：**01-00-5E-00-00-00 \~ 01-00-5E-7F-FF-FF**

![](/files/-ME3ii7Mwn6mUw2EGadZ)

会出现一个问题，可能仅仅是不使用的 5 位不同，导致 MAC 地址完全一样。所以**收到多播数据报的主机，还要在 IP 层利用软件进行过滤，把不是本主机要接收的数据报丢弃**。

## 4. IGMP 协议

IGMP 协议让路由器知道本局域网上**是否有主机（的进程）参加或退出了某个组播组**。

**只知道有无，不知道数量**

![](/files/-ME3jgXxthkW2ojNfEPe)

### 4.1 IGMP 工作的两个阶段

1. 某主机要加入组播组时，该主机向组播组的组播地址发送一个 IGMP 报文，声明自己要成为该组的成员。本地组播路由器收到 IGMP 报文后，要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器。
2. 本地组播路由器周期性探询本地局域网上的主机，以便知道这些主机是否还是组播组的成员。只要有一个主机对某个组响应，那么组播路由器就认为这个组是活跃的；如果经过几次探询后没有发现一个主机响应，组播路由器就认为本网络上没有此组组播的主机，因此就不再把这组的成员关系发给其他的组播路由器。

## 5. 组播路由选择协议

组播路由选择协议目的是**找出以源主机为根节点的组播转发树**

构造树可以避免在路由器之间形成闭环

对不同的多播组对应于不同的多播转发树；同一个多播组，多不同的源点也会有不同的多播转发树

![](/files/-ME3l_768yLpUzx_SueC)

### 5.1 常用算法

1. 基于链路状态的路由选择（OSPF）
2. 基于距离向量的路由选择（RIP）
3. 协议无关的组播（稀疏 / 密集）

## 6. 知识脑图

![](/files/-ME3mRv72p9l6AmDzRsX)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://lfool.gitbook.io/computer-network/di-si-zhang-wang-luo-ceng/6.-ip-zu-bo.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
