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

相关文章

gradle第三方Jar包依赖统一管理方式

《gradle第三方Jar包依赖统一管理方式》:本文主要介绍gradle第三方Jar包依赖统一管理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景实现1.顶层模块build.gradle添加依赖管理插件2.顶层模块build.gradle添加所有管理依赖包

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

HTML5中的Microdata与历史记录管理详解

《HTML5中的Microdata与历史记录管理详解》Microdata作为HTML5新增的一个特性,它允许开发者在HTML文档中添加更多的语义信息,以便于搜索引擎和浏览器更好地理解页面内容,本文将探... 目录html5中的Mijscrodata与历史记录管理背景简介html5中的Microdata使用M

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

python uv包管理小结

《pythonuv包管理小结》uv是一个高性能的Python包管理工具,它不仅能够高效地处理包管理和依赖解析,还提供了对Python版本管理的支持,本文主要介绍了pythonuv包管理小结,具有一... 目录安装 uv使用 uv 管理 python 版本安装指定版本的 Python查看已安装的 Python

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于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 数据结构