IP组播及IGMP协议

来源:互联网 发布:电玩城斗牛软件 编辑:程序博客网 时间:2024/06/05 02:19

今天去的中科大洋面试网络工程师职位,被问及IP组播的相关知识,我一时无法回忆清楚其中的细节,在这里进行一次相关知识的梳理。

 

IP组播地址到MAC地址的映射


 由于在子网中,链路层数据帧的发送其实是一种“广播”的形式,每个在网络上的节点都能够监测到数据帧,只是通过网卡驱动的过滤功能,过滤掉了目的MAC地址不是本节点地址的数据帧。所以在IP组播中,组播出去的数据在链路层不可能去找寻每个组成员的MAC地址,然后给每个组成员发送一个数据包。这样,就必然要有一个特殊的代表专门组的MAC地址,以防止网卡驱动把组播包过滤掉。

IP组播地址的头4位一定是1110,所以IP组播地址的范围是224.0.0.0239.255.255.255。在IP地址映射到MAC地址时,IP地址的后23位直接复制到MAC地址的后23位中。

这样IP组地址中还剩下32-4-23 = 5bit没有用,造成了一个组MAC地址可能最多代表了25IP组地址。例如224.128.40.25224.0.40.25对应的MAC组地址都是01:00:5e:00:28:19所以在组播中IP层是要参与组播数据包的过滤的

 

IGMP的操作过程

 


 

IGMP

IGMPInternet组管理协议)是用于记录和跟踪组播路由器以及其相连网络中组成员变化情况的一种协议。IGMP只是用于路由器及其组内成员管理的,而组内成员不能通过这个协议获知网络中其他组成员的信息,也不能用于在广域网上完成组播信息的路由。

IGMP中主要有两种报文:查询报文(membership_query)和应答报文(membership_report)Query一般用于路由器在查询与它相连接的节点所加入的所有组播组,路由器希望每个组播组至少有一个成员发回一个应答,所以它的目的IP字段为224.0.0.1,这个地址是一个代表所有主机组的地址,只要主机支持组播,则这个IP地址就会成为相应接口的一个地址。这样就保证了只要主机支持组播,则它就能够收到query查询报文(不管它具体属于哪个组播组)。

Report报文用于组播组成员通知路由器,这时它的目的地址改成了相应的组地址,正因为这样,子网内所有属于此组的成员都能收到report报文。路由器收到report报文后在其接口的路由表上标识出至少还有一个主机的属于该组播组。当路由器收到要转发的组播数据报时,它就会将数据报转发到还拥有属于那个组主机的接口上。

 

原创粉丝点击