计算机网络之我见-通俗理解计算机网络(七)

本文深入探讨了广播、组播的概念及其工作原理,并介绍了IGMP协议的作用及组播路由器的工作方式。通过对比广播与组播的特点,阐述了组播在减少网络资源消耗方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇主要讲解广播、组播和IGMP协议(写的比较仓促,质量不好~)

一、广播

1 广播的分类

广播分为本地受限广播和子网广播

本地受限广播的IP地址为255.255.255.255,只能在发送主机所在的同一网段内进行传播

子网广播的IP地址为“网络号+主机号位数全为1”的地址,如C类地址192.168.0.255,会广播给192.168.0.1到192.168.0.254的所有主机

2 广播的原理

本质是通过链路层广播地址来发送,链路层广播地址为48位全为1的mac地址,交换机接收到广播mac地址后会群发给同一网段的全部主机

本地受限广播的简要发送过程:

1 主机某一上层进程构建目的地址为255.255.255.255的广播地址的IP数据包,交给IP发送队列

2 IP层发送该数据包的时候发现目的地址是本地受限广播,则构建48位全为1的mac广播地址,交给链路层从本机所有接口发送出去

3 和本机所有接口连接的交换机收到该帧后,发现目的地址是广播mac,则向网段内所有主机群发该帧

4 网段内的所有主机接收到广播帧,交给其上层IP层进行处理

子网广播发送过程:

1 主机某一上层进程构建目的地址为某子网的广播地址的IP数据包,交给IP发送队列

2 IP层和本机网卡的接口的子网掩码比较,判断是不是发往本子网的,如果是则下面过程和本地受限广播一致

3 如果不是发往本子网的,则将数据包交给网关路由器,网关路由器收到把子网广播包IP和路由表项比较,判断是不是属于某一子网的,进行路由、、、数据包到达目的网络后在目的网络进行广播

注意(不是所有的路由器都开启并支持子网广播转发,因为广播风暴问题)~

3 广播的用途和弊端

用途:广播通常用在UDP上,对不知道具体目的IP地址,但是提供了在指定端口号上监听的服务的主机,我们可以发送目的地址为广播地址的UDP数据包来访问服务,如路由交换协议RIP协议就是这样工作的

弊端:由于广播的mac层地址全为1,不管上层UDP层是否有相关进程在运行和接收数据包,主机链路层收到广播包后必须都交给上层IP层进行分发,IP层再根据UDP等协议进行分发,此时收到广播的主机才能发现是不是有相关的UDP socket在接收,如果没有上层socket在监听,就白白消耗了资源

二、组播

1 组播的产生

组播主要是解决上面所讲的广播浪费资源的问题而产生的,通过分析上面所讲的广播的弊端,发现浪费资源的症结主要在mac层不能过滤相应的mac广播地址(因为mac全是1),组播的解决方案是:

1 给组播组分配组播组号

2 主机要想接收指定组播组收到的组播,必须事先加入指定的组播组号

3 mac层组播地址也绑定组播组号,当收到绑定的组播组号的帧的时候网卡才接收,否则就不接受

这样本质上就是在mac层进行了一次广播过滤,解决了广播的缺点~

2 组播组号和加入组播组的过程

组播地址是D类IP地址,由1110的最高4bit和剩余的所有位组成组播组号。点分十进制数,范围从224.0.0.0到239.255.255.255。

加入组播组时,上层socket绑定指定的组播组号,同时内核会修改mac层数据,把组播组号IP地址的后23位绑定到48位mac地址的后23位(这样就告诉了mac层网卡,过滤我指定的组播组号的帧,非我绑定的组号的帧不要接受)

3 组播发送过程

# 某一个主机的指定进程构建一个目的地址为指定组播地址的IP数据包,交给链路层

#  链路层发现IP地址是组播地址,则构建根据IP地址构建组播绑定的mac地址,然后发送给交换机

# 交换机发现是组播帧,则网段内广播

# 网内主机mac层过滤:加入该组播组的机器收下该帧并交给上层,没有加入该组播组的机器丢弃该帧

这样就完成了组播通信的过程~

三、组播路由器和IGMP协议

1 概念

组播路由器是支持组播IP包传播的路由器;

IGMP协议是组管理协议,主要用来组播路由器下面的主机加入和离开某一组播组时通告给路由器,让路由器知道我下面的主机都加入了哪些组播组,当有目的地址是路由器负责的组播组的数据包时应不应该转发

2 IGMP工作原理

# IGMP协议是IP层至上的协议,分为头域和体域,头域有相关字段来区分是IGMP请求还是IGMP响应包

# IGMP体的内容就是一个主机加入的组播号IP地址

# 组播路由器启动后会在所有接口组播IGMP请求包(目的地址也是组播地址224.0.0.1,这个地址是特殊的组播组地址,代表所支持组播的所有主机或路由,所有的支持组播的设备都默认加入了改组),询问下面的主机都加入了哪些组播组

# 路由器下面的主机接收到IGMP询问组播包后,会给路由器发送一个IGMP响应组播(也是一个组播,主播号是主机加入的组播地址,路由器默认接收目的地址是任意组播组地址的数据包),路由器收到响应后更新自己的路由表,表示自己应该负责转发该组播组的组播包

3 组播路由器间如何工作

组播路由器间通过路由协议交换路由表,这样就知道了全网的组播信息~ 再详细我也不懂了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值