IGMP:Internet组管理协议

来源:互联网 发布:物理仿真模拟软件 编辑:程序博客网 时间:2024/05/17 07:28

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报告。

 

 

 

原创粉丝点击