IGMP:Internet组管理协议

2023-12-14 15:18
文章标签 协议 管理 internet igmp

本文主要是介绍IGMP:Internet组管理协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.引言

       TCP是一个面向连接的协议,它意味着分别运行于两主机内的两进程(由端口号确定)存在一条连接。所以广播和多播只适用于UDP

       为了弄清广播和多播,需要了解主机对由信道传送过来帧的过滤过程。图12-1说明了这一过程。

网卡:判定目的地址是否是网卡物理地址或广播地址的帧(检验和出错也将丢弃)。

设备驱动程序:首先,帧类型中必须指定要使用的协议( I PA R P等等)。其次,进行多播过滤来检测该主机是否属于多播地址说明的多播组。

IP层:根据源地址及目的地址做更多的检测(检验和出错也将丢弃)。

UDP/TCP根据端口号进行数据过滤,如果当前没有进程使用该端口号,就丢弃数据包并产生一个ICMP端口不可达报文(检验和出错也将丢弃)。

       使用广播的问题在于它增加了对广播数据不感兴趣主机的处理负荷。拿一个使用U D P广播应用作为例子。如果网内有5 0个主机,但仅有2 0个参与该应用,每次这2 0个主机中的一个发送U D P广播数据时,其余3 0个主机不得不处理这些广播数据报。一直到U D P层,收到的U D P广播数据报才会被丢弃。这3 0个主机丢弃U D P广播数据报是因为这些主机没有使用这个目的端口。多播的出现减少了对应用不感兴趣主机的处理负荷。使用多播,主机可加入一个或多个多播组。这样,网卡将获悉该主机属于哪个多播组,然后仅接收主机所在多播组的那些多播帧。

2.广播

2.1受限的广播

       32位全为1IP地址"255.255.255.255"为受限广播地址,用来将一个分组以广播方式发送给本网络中的所有主机,路由器则阻挡该分组通过,将其广播功能限制在本网内部。

2.2指向网络的广播

       指向网络的广播地址是主机号为全1的地址。A类网络广播地址为n e t i d . 2 5 5 . 2 5 5 . 2 5 5,其中n e t i dA类网络的网络号。

2.3指向子网的广播

       指向子网的广播地址为主机号为全1且有特定子网号的地址。作为子网直接广播地址的I P地址需要了解子网的掩码。例如,如果路由器收到发往1 2 8 . 1 . 2 . 2 5 5的数据报,当B类网络1 2 8 . 1的子网掩码为2 5 5 . 2 5 5 . 2 5 5 . 0时,该地址就是指向子网的广播地址;但如果该子网的掩码为2 5 5 . 2 5 5 . 2 5 4 . 0,该地址就不是指向子网的广播地址。为什么不是?因为第9位为1的话,那么必定必点是单数(点分十进制)。

2.4指向所有子网的广播

       指向所有子网的广播也需要了解目的网络的子网掩码,以便与指向网络的广播地址区分开。指向所有子网的广播地址的子网号及主机号为全1。例如,如果目的子网掩码为2 5 5 . 2 5 5 . 2 5 5 . 0,那么I P地址1 2 8 . 1 . 2 5 5 . 2 5 5是一个指向所有子网的广播地址。然而,果网络没有划分子网,这就是一个指向网络的广播。

3.多播

       1 2 - 2显示了DI P地址的格式。

      不像其他三类I P地址(ABC),分配的28 bit均用作多播组号而不再表示其他。

      多播组地址包括为1110的最高4 bit和多播组号。它们通常可表示为点分十进制数,范围从2 2 4 . 0 . 0 . 02 3 9 . 2 5 5 . 2 5 5 . 2 5 5

4.IGMP:Internet组管理协议

       I n t e r n e t组管理协议( I G M P)用于支持主机和路由器进行多播。它让一个物理网络上的所有系统知道主机当前所在的多播组。多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发。

       ICMP一样IGMP也是IP层的一部分,封装在IP数据报中。

4.1IGMP报文格式

       版本为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。

       组地址为DIP地址。在查询报文中组地址设为0,在报告报文中组地址为要参加的组地址。

4.2加入一个多播组

       多播的基础就是一个进程的概念(使用的术语进程是指操作系统执行的一个程序),该进程在一个主机的给定接口上加入了一个多播组。在一个给定接口上的多播组中的成员是动态的—它随时因进程加入和离开多播组而变化。

       这里暗示一个主机通过组地址和接口来识别一个多播组。主机必须保留一个表,此表中包含所有至少含有一个进程的多播组以及多播组中的进程数量。

4.3IGMP报告和查询

       多播路由器使用I G M P报文来记录与该路由器相连网络中组成员的变化情况。使用规则如下:

1) 当第一个进程加入一个组时,主机就发送一个I G M P报告。如果一个主机的多个进程加入同一组,只发送一个I G M P报告。这个报告被发送到进程加入组所在的同一接口上。

2) 进程离开一个组时,主机不发送I G M P报告,即便是组中的最后一个进程离开。主机知道在确定的组中已不再有组成员后,在随后收到的I G M P查询中就不再发送报告报文。

3) 多播路由器定时发送I G M P查询来了解是否还有任何主机包含有属于多播组的进程。多播路由器必须向每个接口发送一个I G M P查询。因为路由器希望主机对它加入的每个多播组均发回一个报告,因此I G M P查询报文中的组地址被设置为0

4) 主机通过发送I G M P报告来响应一个I G M P查询,对每个至少还包含一个进程的组均要发回I G M P报告。

       使用这些查询和报告报文,多播路由器对每个接口保持一个表,表中记录接口上至少还包含一个主机的多播组。当路由器收到要转发的多播数据报时,它只将该数据报转发到(使用相应的多播链路层地址)还拥有属于那个组主机的接口上。

       1 3 - 3显示了两个I G M P报文,一个是主机发送的报告,另一个是路由器发送的查询。该路由器正在要求那个接口上的每个主机说明它加入的每个多播组。

3.5TTL字段

       在图1 3 - 3中,我们注意到I G M P报告和查询的生存时间( T T L )均设置为1,这涉及到I P首部中的T T L字段。一个初始T T L0的多播数据报将被限制在同一主机。在默认情况下,待传多播数据报的T T L被设置为1,这将使多播数据报仅局限在同一子网内传送。更大的T T L值能被多播路由器转发。

       对发往一个多播地址的数据报从不会产生I C M P差错。当T T L值为0时,多播路由器也不产生I C M P“超时”差错。

       2 2 4 . 0 . 0 . 02 2 4 . 0 . 0 . 2 5 5的特殊地址空间是打算用于多播范围不超过1跳的应用。不管T T L值是多少,多播路由器均不转发目的地址为这些地址中的任何一个地址的数据报。

3.6所有主机组

       在图1 3 - 3中,我们看到了路由器的I G M P查询被送到目的I P地址2 2 4 . 0 . 0 . 1。该地址被称为所有主机组地址。它涉及在一个物理网络中的所有具备多播能力的主机和路由器。当接口初始化后,所有具备多播能力接口上的主机均自动加入这个多播组。这个组的成员无需发送I G M P报告。

 

 

 

这篇关于IGMP:Internet组管理协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/493046

相关文章

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

Redis实现RBAC权限管理

《Redis实现RBAC权限管理》本文主要介绍了Redis实现RBAC权限管理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1. 什么是 RBAC?2. 为什么使用 Redis 实现 RBAC?3. 设计 RBAC 数据结构

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Linux内存泄露的原因排查和解决方案(内存管理方法)

《Linux内存泄露的原因排查和解决方案(内存管理方法)》文章主要介绍了运维团队在Linux处理LB服务内存暴涨、内存报警问题的过程,从发现问题、排查原因到制定解决方案,并从中学习了Linux内存管理... 目录一、问题二、排查过程三、解决方案四、内存管理方法1)linux内存寻址2)Linux分页机制3)

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

IDEA中的Kafka管理神器详解

《IDEA中的Kafka管理神器详解》这款基于IDEA插件实现的Kafka管理工具,能够在本地IDE环境中直接运行,简化了设置流程,为开发者提供了更加紧密集成、高效且直观的Kafka操作体验... 目录免安装:IDEA中的Kafka管理神器!简介安装必要的插件创建 Kafka 连接第一步:创建连接第二步:选