博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP/IP详解 卷一 13章 IGMP
阅读量:4126 次
发布时间:2019-05-25

本文共 1232 字,大约阅读时间需要 4 分钟。

概述

IGMP:Internet组管理协议。让一个物理网络上的所有系统知道主机当前所在的多播组。多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发。

IGMP在中定义
IGMP是IP层中的一部分
通过IP数据报进行传输
长度固定(8字节),没有可选项
在这里插入图片描述

IGMP数据报

在这里插入图片描述

类型为1说明为多播路由器发出的查询报文,为2说明是主机发送的报告报文。检验和与计算检验和的ICMP相同
查询报文中的组地址设置为0
在报告报文中的组地址为要参加的组地址

加入一个多播组

多播的基础是一个进程(程序),该进程在一个主机的给定接口上加入或离开一个多播组

在一个给定接口的多播组成员是动态的。它随时因进程的加入和离开多播组变化

IGMP报告和查询

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

  1. 当第一个进程加入一个组时,主机发送一个IGMP报告,如果是1个主机的多个进程加入同一个组,那么夜只发送1个IGMP报告。
  2. 进程离开一个组时,主机不发送报告。哪怕是组中最后一个进程离开。主机知道在确定的组中不在有组成员后,在随后的IGMP查询中就不再发送报告报文。
  3. 多播路由器定时发送IGMP查询来了解是否还有任何主机包含在属于多播组的进程。路由器必须向每个接口发送一个IGMP查询,以此希望主机对它加入的每个多播组均发回一个报告。
  4. 主机通过IGMP报告来响应一个查询报文,对每个至少还包含一个进程的组均发回IGMP报告

多播路由器对每个接口都存储一份表,表中记录着借口上至少还包含1个主机的多播组。当路由器收到要转发的多播数据报时,它只将该数据报转发到(使用相应的多播链路层地址)还拥有属于那个组主机的接口上。

实现细节

当一个主机首次发送IGMP报告时,并不保证该报告会被正确接受(IP层交付可不管是否有收到)下一个报告会间隔0~10秒的范围随机选择发送。

主机收到查询报文时并不立即响应,而是一段时间间隔后才发送响应。而同一多播组的多个主机均能发送一个报告,他们的发送间隔是随机的。在同一个物理网络中的所有主机将收到同组中其他主机的报告。
这样就会出现1个主机在等待发送报告的过程中,收到了其他主机的相同报告,则该主机的响应报文就不用发送了。因为多播路由器无所谓有多少个主机在同一组中,甚至不关心是哪个主机在多播组中。他只想知道至少有1个主机在多播组中。
在没有任何多播路由器的单个物理网络中,仅有的 I G M P通信量就是在主机加入一个新的多播组时,支持I P多播的主机所发出的报告。

生存时间字段

在这里插入图片描述

TTL字段如果为0,表示数据报被限制在同一主机,如果为1则限制在同一子网内传送,如果为更大的TTL,则能被多播路由器转发。

所有主机组

目的IP地址位224.0.0.1为所有主机组地址。它涉及在一个物理网络中的所有具备多播能力的主机和路由器。当接口初始化后,所有具备多播能力接口上的主机均自动加入这个多播组。这个组的成员无需发送IGMP报告

转载地址:http://fkepi.baihongyu.com/

你可能感兴趣的文章
ideas about sharing software
查看>>
different aspects for software
查看>>
To do list
查看>>
Study of Source code
查看>>
如何使用BBC英语学习频道
查看>>
spring事务探索
查看>>
浅谈Spring声明式事务管理ThreadLocal和JDKProxy
查看>>
初识xsd
查看>>
java 设计模式-职责型模式
查看>>
构造型模式
查看>>
svn out of date 无法更新到最新版本
查看>>
java杂记
查看>>
RunTime.getRuntime().exec()
查看>>
Oracle 分组排序函数
查看>>
删除weblogic 域
查看>>
VMware Workstation 14中文破解版下载(附密钥)(笔记)
查看>>
日志框架学习
查看>>
日志框架学习2
查看>>
SVN-无法查看log,提示Want to go offline,时间显示1970问题,error主要是 url中 有一层的中文进行了2次encode
查看>>
NGINX
查看>>