网络层(五):IP多播与IGMP协议
1、IP多播与单播的区别
IP单播的工作过程示意图如下:
在IP单播状态下,若主机0打算向主机1~主机20发送同一文件,则它需要准备20个文件的副本,分别封装在源地址相同,而目的地址不同的20个分组中,分别将者20个分组发送给20个目的主机。
IP多播工作过程示意图如下:
在IP多播状态下,若主机0打算向主机1~主机20发送同一文件,则它需要准备1个文件的副本,封装在1个多播分组中,发送给多播组中20个多播组成员。
支持IGMP协议路由器称为多播路由器(multicast router)。
2、IP多播地址
IP多播可以分为两类:一类是在Internet范围内进行多播,另一类只是在局域网内进行多播。
多播涉及两类多播地址:一个是IP多播地址,一个是Ethernet多播地址。
1、实现IP多播的分组使用的是IP多播地址。IP多播地址只能用于目的地址,而不能用于源地址。
2、标准分类的D类地址是为IP多播地址定义的。D类IP地址的前4位为1110,因此D类地址的范围在224.0.0.0~239.255.255.255。每个D类IP地址可以用于标识一个多播组,则当D类地址能标识出2^38个多播组。
3、当一个IP分组的目的地址写入IP多播地址时,对应的IP分组头的类型字段值为2,表示IP分组的数据部分是IGMP数据。多播分组的传输也必然会保留IP的基本特征,即只能提供"尽力而为"的服务,不能保证多播分组能够被传送到网络中多播组的所有成员。
4、IP多播地址分为两类:永久多播地址与临时多播地址。永久多播地址需要向IANA申请。临时多播地址是在一段时间中使用的地址。
3、IGMP协议的基本内容
3.1、IP多播的实现方法
IP多播的基本思想是:多个接受者可以接收到从同一个或一组源主机一次发送的相同那个内容的分组。发送IP多播工作模式包括以下内容:
1、定义了一个组地址(group address)。每个组代表一个或多个发送者与一个或多个接受者的一个会话(session)。
2、接收者可以用多播地址通知路由器,它希望加入(或退出)哪个多播组。
3、发送者使用多播地址发送分组,无须了解接收者的位置信息与状态信息。
4、路由器建立一棵从发送者分支出去的多播传递树,这棵树延伸到所有的,其中至少有一个IP多播成员的网络中。利用这棵传递树,路由器把多播分组转发到由多播组成员的网络中。
3.2、IGMP协议的操作
IGMP协议的操作主要有:加入一个组、继续组成员关系、监视组成员的关系与离开一个组。
3.2.1、加入一个组
当某个主机加入新的多播组时,该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员。本地的多播路由器收到IGMP报文后,将组成员关系转发给Internet上的其他多播路由器。
3.2.2、继续组成员关系
由于多播组的成员关系是动态的,因此本地多播路由器要周期性查询本网络上的主机,以便知道这些主机是否还继续是组的成员。只要对某个组有一个主机响应,则多播路由器就应为这个组是活跃的。
若一个组经过几次查询后没有一个主机响应,则多播路由器就认为本网络上的成员都已离开这个组,就不再将该组的成员关系转发给其他多播路由器。
3.2.3、监视组成员的关系
多播路由器在查询组成员关系时,只需对所有的组发送一个请求信息的查询报文,而不需要对每个组发送一个查询报文。默认查询速率是每125s发送一次。同一组内的每个主机都要监听响应,只要有本组的其他主机先发送响应,自己就可以不再发送响应。这样就一直了不必要的通信量。
多播路由器只需知道网络上是否至少还有一个主机是本组成员。当查询报文通过多播达到组内每个成员后,因此最先发送的响应能被组内所有成员接收到。
一个组的成员只要知道其他主机已发送对本组的响应,就取消自己原来准备发送给的响应。这样,询问报文实际上每个组只有一个主机送响应。
3.2.4、离开一个组
当一个主机收到一个查询报文而不进行应答,超过一定时间之后,路由器将其他地址从多播地址表中删除,该主机自动离开该组。
4、多播路由器与IP多播中的隧道技术
4.1、多播路由器
当多播IP分组跨越多个网络时,存在关于多播IP分组的路由问题。多播路由器的作用是完成多播分组的转发工作,具体有两种实现方式:一种是专用多播路由器,另一种是在传统路由器上实现多播路由的功能。
在多播传送中,当多播路由器对多播分组进行存储转发时,在任一多播路由器所在的网络上都可能有该多播组成员,在传送过程中随时会遇到某个目的主机。
4.2、IP多播中的隧道技术
当IP多播分组在传输过程中遇到有不支持多播协议的路由器或网络时,就要采用隧道(tunneling)技术。
IP多播隧道的工作原理:
网络1的主机向网络2中的一些主机进行多播。但是,路由器1或路由器2不支持多播协议,因而不能按多播地址转发多播分组。因此,路由器1就必须对多播分组进行再次封装,加上普通IP分组头,使它成为向单一目的站发送的单播分组,然后通过"隧道"从路由器1发送到路由器2。
单播分组到达路由器2后,再由路由器2除去其普通IP分组头,使它又恢复成原来的多播分组,继续向多个目的站转发。
这种使用隧道技术传送IP分组的方法称为"IP中IP分组"(IP-in-IP)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)