分享好友 最新动态首页 最新动态分类 切换频道
《TCP/IP详解 卷一》第9章 广播和组播
2024-12-26 12:05

目录

9.1 引言

9.2 广播

9.2.1 使用广播地址

9.2.2 发送广播数据报

9.3 组播

9.3.1 将组播IP地址转换为组播MAC地址

9.3.2 例子

9.3.3 发送组播数据报

9.3.4 接收组播数据报

9.3.5 主机地址过滤

9.4 IGMP协议和MLD协议

9.4.1 组成员的IGMP和MLD处理

9.4.2 组播路由器的IGMP和MLD处理

9.4.3 例子

9.4.4 轻量级 IGMPv3 和 MLDv2

9.4.5 IGMP和MLD健壮性

9.4.6 IGMP和MLD计数器和变量

9.4.7 IGMP和MLD Snooping

9.5 与IGMP和MLD相关的攻击

9.6 总结


多播组成员管理协议

        IPv4:IGMP:Internet Group Management Protocol,互联网组管理协议。

        IPv6:MLD:Multicast Listener Discovery,组播侦听发现协议。

IP地址分类

        unicast:单播。

        multicast:多播=组播。

        broadcast:广播,IPv6没有广播。

        anycast:任播。

任播

        路由器将目的IP是任播地址的数据包发送到多个接收者中最近一个。

        使用场景

                服务发现: 如IPv6主机通过发送HTTP的任播报文。来发现局域网可用Web服务器。

                负载均衡:一组相同功能的服务器共享同一个任播地址。客户端请求路由到最近服务器。

                路由器冗余:多个路由器共享同一个任播地址,实现冗余和容错性。

IPv6链路本地地址

        前缀:fe80::,用于局域网内通信。

广播和组播为应用程序提供两种服务

        交付数据至多个目的地

        请求/发现服务器。

一般只有UDP才利用广播和组播。

IPv4组播是可选的。

IPv6组播是强制性,因为邻居发现ND需使用。

组播MAC地址

        第一个字节的最低位二进制为0代表单播地址,为1代表组播地址。

        如01:00:00:00:00:00,03:00:00:00:00:00

本地网络(有限广播)广播:255.255.255.255,用于向局域网所有设备发送数据。

子网定向广播地址:如192.168.1.255:用于向特定子网中所有设备发送通知、服务发现和配置信息等。

ping 广播IP地址+广播MAC地址作用

        触发所有接收设备回包,获得所有设备的MAC地址。无需源主机单独向每个设备发送ARP。

        但是某些操作系统可能禁止ping广播IP地址。

组播地址只能作为目的IP,不能作为源IP。

socket选项

        SO_BROADCAST:设置套接字允许发送广播数据包。

ping -b会设置SO_BROADCAST

即多播,multicast。

1. 当主机希望加入一个多播组时,它向路由器发送IGMP Membership Report报文,其中包含感兴趣的组播地址,并可能包含可选的源列表。用于指定从哪些源接收组播数据。

2. 路由器收到IGMP报文后,更新其多播组成员表,并根据多播组成员表转发组播数据到感兴趣的主机。

多播组成员表和可选源列表都会定期更新或超时删除。

IGMP报文中的源列表分为

        特定源组播(SSM:明确接收或不接收特定发送方的组播流量。

        任源组播(ASM:不考虑发送方身份。

组播数据应使用组播MAC地址作为目的MAC。

组播MAC地址结构

        前24位: 前24位固定为01-00-5E。

        后23位: 等于IPv4组播IP地址的低23位。

IPv4组播的以太网地址范围:01:00:5E:00:00:00到01:00:5E:7F-FF-FF

组播IP地址转换为组播MAC地址

IPv4组播地址范围:224.0.0.0到239.255.255.255,D类地址。

根据上图所示转换方法

        组播地址 224.128.64.32(十六进制为 E0.80.40.20 )和 224.0.64.32(十六进制为 E0.00.40.20 )都被映射到01:00:5E:00:40:20

所以发往组播224.128.64.32的报文应使用源MAC 01:00:5E:80:40:20来封装。

IPv6组播IP地址转换为组播MAC

        MAC前16位: 前缀固定是33-33

        MAC后32位: IPv6组播地址的最后32位。

        如组播地址ff02::1:2。转换为组播MAC地址:33-33-00-01-00-02。

mDNS:组播DNS。

        一般工作在局域网内部。

        作用

                共享DNS响应:多个主机共享DNS响应,减轻DNS服务器负担,避免太多主机DNS查询。

                设备互相发现:新设备发送mDNS查询来通告自己的存在。

                服务发现:通过mDNS查询来寻找局域网特定服务(打印机)。

224.0.0.251:mDNS组播组IP。

使用ICMP报文回复了ping 224.0.0.251的主机,表明加入了mDNS组。

多网口的主机须决定使用哪个IP地址和接口。

组播组的成员资格是动态的,它随进程加入或离开组而改变。

查看组播组成员方法

        ip maddr show

        netstat -gn

# ip maddr show

1:         lo                 接口索引号和接口名称。

        inet 224.0.0.1         该接口加入的IPv4组播地址。

        inet6 ff02::1                 该接口加入的IPv6组播地址

        inet6 ff01::1

加入组播组方法

        ip maddr add 224.0.0.1 dev eth0 eth0接口加入224.0.0.1组

        ip maddr add ff02::1 dev eth0

mreq.imr_multiaddr.s_addr = inet_addr("组播组地址");

mreq.imr_interface.s_addr = htonl(INADDR_ANY);

加入组播组

        setsockopt(sockfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq))

离开组播组

        setsockopt(sockfd, IPPROTO_IP, IP_DROP_MEMBERSHIP, &mreq, sizeof(mreq))

组播成员管理协议

        IGMP:Internet Group Management Protocol,互联网组管理协议,IPv4使用。

        MLD:Multicast Listener Discovery,组播侦听发现协议,IPv6使用。

MLD和IGMP功能几乎相同,都用于管理组播组成员。

IGMP/MLD管理方法

        主机向路由器发送组成员报告报文,路由器知道主机感兴趣组播组后,以便知道组播数据报转发到对应接口。

SSM,即源特定多播模式

        接收方只能接收来自特定源的多播流量。

        目前广泛使用IGMPv3和MLDv2的支持SSM。

        当主机想要接收特定源的多播流时,会发送IGMPv3/MLDv2报文,其中包含指定源地址和多播组地址。

ASM:即任意源多播模式。

        接收方可以接收来自任意源的多播流量。

如上图,组成员管理的两种方式

        路由器定期IGMP/MLD查询。

        主机主动IGMP/MLD报告。

IGMPv3报告发送到224.0.0.22,即IGMPv3组播路由器地址。

MLDv2报告发送到ff02::16,即MLDv2组播路由器地址。

和ICMP类似,IGMP报文也封装在IPv4。

IGMP报文的TTL固定为1,所以报文仅限于本地子网。

报文格式

组播路由器也和广域组播协议(PIM-SM,BIDIR-PIM)交互,将流量转发给感兴趣主机,或禁止流量流向不感兴趣主机。

广域组播协议

        在广域网(WAN)中实现组播。

        如:PIM,BIDIR-PIM。

PIM(Protocol Independent Multicast:即协议无关组播协议。

两种模式

        PIM-DM(Dense Mode:适用于组播组成员密集的网络

        PIM-SM(Sparse Mode:适用于组播组成员分布稀疏的网络。

PIM使用场景

        大型企业内部跨子网或分支机构的组播通信。如视频会议、流媒体。

        电信运营商广域网中组播通信,如电视直播、广播和IPTV等。

作用:允许主机指明自己有兴趣的组,还可以指定允许/拒绝特定源发送的流量。

方法:向同子网的组播路由器发送报告。

IGMP报告报文如下

类型字段

        指示报文类型,可能的值有

                0x11: Membership Query(成员查询

                        路由器发送成员查询消息

                0x12: Membership Report(成员报告

                        主机发送成员报告消息,表示主机加入多播组。

                0x13: Leave Group(离开组

                        主机发送,表示主机离开组播组,路由器不在转发该组播组流量给该主机。

                0x22: IGMPv3 Membership Report(IGMPv3 成员报告

                        IGMPv3的成员报告,用于支持源特定多播(SSM)和其他高级功能。

组记录

        其中每个组记录格式如下

上图字段解释

        记录类型

                INCLUDE:主机对指定的源地址感兴趣。

                EXCLUDE:主机对指定的源地址不感兴趣。

        IPv4组播地址

                加入或离开的组播组。

        源地址:主机感兴趣、不感兴趣的源地址。

组播路由器的工作内容

        发送组成员查询。

        接收组成员报告,维护组播组成员。

        成员刷新与老化。

组播路由器有三种查询报文

        通用查询:查询所有组播组。

        特定组查询:查询特定组播组的成员。

        特定组和源查询:用于组播路由器之间查询与响应。

通用查询报文目的IP

        IPv4 IGMP中为224.0.0.1,代表所有组播节点。

        IPv6 MLD中为ff02::1,代表链路范围内所有组播节点。

特定组查询报文的目的IP

        为查询的该特定组的组播IP。

上图显示ICMPv6协议报文细节,其实就是MLD协议,MLD属于ICMPv6。

从上文可知,该报文是IPv6 MLD查询报文

        组播目的IP地址:组播地址ff02::1 (表示所有组播节点

        组播目的MAC地址:33:33:00:00:00:01 (根据组播IP转换而来,固定前缀为33:33

主机发送的IGMP报文TTL为1,不会通过路由器转发。

很多应用协议都通过发送报文到组播地址,或来查询服务或散播服务,实现局域网设备和服务发现。如

        mDNS

        UPnP:用于智能家居设备发现。

        发现局域网是否有打印机。

同一链路可运行多个组播路由器,故障备份,最小IP地址路由器被选为查询器。

查询器选举(querier election)

        比较源IP地址,IP小的路由器为查询器,非查询器进入备用模式。

查询组播路由器需要定期查询组播成员。

IGMP和MLD需处理组播路由器的失效、协议报文丢失,早期协议版本的兼容性。

        大多基于状态改变和计时器来启用这些功能。

IGMP ( MLD) snooping

        2层交换机查看在第3层的信息,了解它对特定的组播流量流动是否有兴趣。

如果没有IGMP snooping,交换机会广播链路层流量。

而支持IGMP(MLD)snooping的交换机通过查看主机与路由器通信的IGMP信息,记录哪些端口需要哪些特定的组播流动,从而减少流量转发。

IGMP Flooding 攻击:发送大量IGMP或MLD报文,引起带宽耗尽。

IGMP欺骗:攻击者伪造IGMP报文,导致路由器维护错误组播组成员信息,最终路由器错误转发。

伪装成组播路由器,在IGMP查询报文中使用非常小的"最大响应时间",诱导主机频繁发送组播成员报告,消耗CPU。

两种IPv4广播地址

        受限(255.255.255.255

        定向(如192.168.1.255

IPv4组播MAC:前缀01:00:5e+组播IP地址的低23位。

IPv6组播MAC:16位前缀33:33+组播IP地址的低序32。

IGMP和MLD中鲁棒性变量

        一个时间值。

        表示如果路由器在该时间内没有再收到成员报文,路由器将成员从组播组成员列表中移除。

如果没有鲁棒性变量,当网络抖动或不稳定性时。不好影响

        路由器过早认定主机已离开组播组,过早将主机从成员列表中删除,导致主机无法接收到组播流量。

        过多组播成员状态变化和更新导致网络拥塞或不必要的流量。特别是大型网络中。

最新文章
院士怒怼完美电池“短期内是不可能的”!千亿汽车巨头涨停后遭质疑
固态电池、掺硅补锂电池、石墨烯电池近期,各种汽车巨头纷纷发布电池创新技术,虽然引发资本追捧,但被专家迎头泼了一盆冷水,直指完美的电池短期内是不可能的。今年1000公里续航的车肯定要出来,快充也是肯定要出的,8分钟充满1000公里,
高一设计_今日高一函数设计教程
摘要:高一设计,今日高一函数设计教程,新片场素材小编朱一松高一设计,今日高一函数设计教程相关内容整理,如果您对高一设计,今日高一函数设计教程感兴趣欢迎访问免费阅读。高一设计,今日高一函数设计教程一、高一在线设计教程介绍高一,读
课件ppt怎么制作
在现代教育环境中,课件PPT已成为教师授课的重要辅助工具。一个制作精良的PPT不仅能吸引学生的注意力,还能有效提升教学效果。那么,如何制作一份高质量的课件PPT呢?以下是一些关键步骤和技巧。一、明确主题与目标在制作PPT之前,首先要明
小程序直播助手:轻松开启直播新体验
一、引言随着互联网技术的快速发展,直播已成为一种极为流行的社交与传播方式。为了满足不同行业与用户的需求,众多平台推出了各具特色的直播助手工具。其中,小程序直播助手凭借其简单易用、快速接入、高度定制等特性,为直播从业者提供了
构筑轻工新质创新体系 | 坚持科技领先 做家电行业新质生产力的“领航者”
【开栏的话】党的二十届三中全会提出“健全因地制宜发展新质生产力体制机制”。轻工业作为国民经济的重要组成部分,是形成新质生产力的基础和主阵地。中国轻工业联合会响应国家政策,以“八大轻工”为指引,加快构筑轻工新质创新体系、新质
路环岛网站排名优化,提升网站在搜索引擎中的可见度,路环岛图片
路环岛网站排名优化,旨在提升网站在搜索引擎中的可见度。通过优化网站结构、内容质量和关键词策略,提高网站在相关搜索结果中的排名。路环岛图片作为网站的重要组成部分,也需进行相应优化,包括图片命名、描述和标签等,以提高图片在搜索
独立站营销:独立站关键页面优化的5大方法!
一个优质的独立站关键页面可以提高用户对您网站的信任度和满意度,促使他们更有可能进行转化。以下是一些关键的步骤和技巧,可以帮助您进行有效的关键页面优化,下面跟着独立站营销的小编一起来看看吧~1.关键词研究:首先,您需要确定与您
管道巡检大数据分析
一、大数据应用在管道巡检中的意义管道巡检是保障工业管道运行安全和稳定的重要环节。传统的巡检方法主要依靠人工观察、检测仪器等手段,但效率有限且容易出现漏检。而随着大数据技术的发展和应用,管道巡检大数据分析正逐渐成为改善管道巡
管家婆一票一码100正确王中王|智能解答解释落实
  在不同的领域中,通常会有一些特殊的名词用来代指特定的事物或概念。“管家婆一票一码100正确王中王”就是这样一个令人兴奋的短语。它在商业、技术和客户服务等领域内可能有着独特的含义和应用。本文旨在通过智能解答的方式,深入探讨
网站SEO优化与推广,网络公司制胜的关键竞争力
网站SEO优化与推广是网络公司的核心竞争力,它通过提高网站在搜索引擎中的排名,吸引更多潜在客户,增强品牌影响力。有效优化与推广,助力企业实现业务增长,提升市场竞争力。随着互联网的飞速发展,网络公司如雨后春笋般涌现,在激烈的市
相关文章
推荐文章
发表评论
0评