<p>IP地址类型分为三种:单播地址、广播地址和组播地址。其中广播和组播仅能应用于UDP协议,因为TCP是面向连接的协议,所以只能够支持单播,即两个接入网络的主机进程间联立连接。</p><p>单播很容易理解,就是单播IP与单播IP之间的数据传输。</p><p>广播是一台主机向网络中所有的其他主机发送数据帧,广播分为二层广播和三层广播两种。</p><p>组播是将数据帧传送给相同组播组中的所有主机。</p><p>那广播与组播到底有什么区别,下面将详细进行讲述:</p><p>1、 传统概念角度理解组播与广播</p><p>首先,组播与广播都是一种点对多点的网络形式。</p><p>广播是将数据帧发送到网络中同一广播域的所有主机,而组播的出现减少了广播中一部分不需要接收数据报文的主机所涉及的不必要开销,只向特定的加入组播组中的一部分主机发送数据报文。</p><p class="f_center">2、协议栈角度理解组播与广播 <img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0616%2F87f39a89j00qbztd40018c000hs00dtc.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>首先默认情况下,终端的网卡收到的数据将会和网卡的MAC地址进行匹配,目标地址非自己的单播数据帧会被丢弃,除非网卡已经开启杂合模式,一般启用抓包软件,软件会将网卡修改为杂合模式进行所有数据报文的抓取。</p><p>除目标地址为自己的单播数据帧外,组播和广播数据帧也会被网卡接收,组播数据帧与检查单播数据帧相同,在数据链路层就对数据帧进行检查,查看目标MAC是否为加入的组播组MAC,如果不是将在数据链路层对报文进行丢弃。而广播数据帧收到后将层层解封装,到达传输层后才会查看终端上是否有和广播数据帧中对应的目标端口号正在被监听,如果没有正在监听的响应端口号,此广播报文才将被丢弃。</p><p>3、广播地址路由</p><p>广播地址能够被路由吗?首先必须知道广播分为两类,一类为二层广播,即目标MAC地址为FFFF-FFFF-FFFF。一类为三层广播,三层广播MAC地址为单播,IP地址为广播地址。三层广播又有四种分类:1、受限的广播:255.255.255.255/32;2、指向网络的广播:192.168.1.255/24;3、指向子网的广播192.168.1.128/25;4、指向所有子网的广播:192.168.255.255/16。</p><p>根据终端的类型不同,对收到的广播数据报文处理也不相同,例如,windows操作系统收到目标地址是广播地址的数据包将直接丢弃,不会进行响应。而部分品牌的网络设备收到目标地址是广播地址的数据包将进行响应。</p><p>下面我们通过一个实验,来证明三层广播是可以经过路由的。</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0616%2Fj00qbztd4000pc000hs006ic.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>首先路由可达的情况下,即R1 ping R3单播目标可达,R1 ping 192.168.2.255,默认情况下仅有192.168.2.1这个接口通过192.168.1.1这个地址响应ICMP请求:如下图所示:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0616%2Fcfj00qbztd4001tc000wx005hc.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>因为设备未开启转发三层广播数据包的功能,广播无法穿越设备达到R3、R4和R5如下图所示:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0616%2Ffdd8eb2bj00qbztd40021c000c900dgc.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>下面我们通过在需要转发广播的接口下输入<strong>ip directed-broadcast</strong>,开启广播转发功能:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0616%2Fd9029aabj00qbztd40025c000ck00dic.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>此时再通过R1 ping 192.168.2.255,发现不仅192.168.2.1通过192.168.1.1接口响应ICMP,R3、R4、R5收到了R1发送的广播报文并予以回复,如下图:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0616%2F7a14b401j00qbztd40017c000hs006sc.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>R1向192.168.2.255发送ICMP广播报文,收到此报文的终端通过单播回应ICMP响应。</p><p>由此可见,三层广播报文可以被路由转发。</p><p><strong>知识扩展:ip directed-broadcast的具体作用是什么呢?</strong></p><p><strong>通过抓包我们能够看到,开启ip directed-broadcas的接口会将收到的广播数据包文重新封装目标MAC为广播MAC地址,目标IP地址为受限的广播地址并在接口发出。</strong></p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0616%2F7e8cd006j00qbztd4000jc000ln0024c.jpg&thumbnail=660x&quality=80&type=jpg"/><br/> 4、 组播地址映射<br/></p><p>为什么组播能在数据链路层就能知道是数据包否为自己加入的组播组?而不需要通过组播的IP地址进行分辨的原因是因为组播的IP地址和MAC地址有映射关系。</p><p>但是,由于设计组播协议之初,项目组没有足够的资金购买大量的MAC地址,所有导致现在每32个组播IP地址将共用一个组播MAC地址。</p><p>例如:0100-5E01-0101,将被224.1.1.1、224.129.1.1、225.1.1.1、225.129.1.1、226.1.1.1.......239.129.1.1,这32个组播IP地址共用,在设计组播网络时一定要注意。</p><p>组播的IP及MAC地址映射关系如下:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0616%2Fa43b2353j00qbztd4000sc000hs008hc.jpg&thumbnail=660x&quality=80&type=jpg"/><br/> 5、 简单组播实验<br/></p><p>实验拓扑如下:</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0616%2Fd7dbce2aj00qbztd4000pc000j4004qc.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>R8开启组播路由,R10及R11加入239.1.1.1组播组,使用R7 ping 239.1.1.1,测试组播互通性,并进行数据报文分析。</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0616%2Fj00qbztd4000ec000g4002ac.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>由图可见,R7 ping 一个组播地址,加入此组播组的R10与R11都对此ICMP请求报文通过单播给予了回应。</p><p class="f_center"><img src="https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0616%2Ff6916c09j00qbztd4000zc000ux003nc.jpg&thumbnail=660x&quality=80&type=jpg"/><br/></p><p>由此可见,组播相比广播的优势在于减少了广播中一部分不需要接收数据报文的主机所涉及的不必要开销,而组播相对于单播的优势在于不需要发送大量重复单播报文,只需向组播地址发送数据报文,所有加入组播组的终端都可收到此报文。</p><p>以上内容均为本人对所掌握知识总结归纳所创作的原创文章,希望能给大家的学习过程带来帮助,如有技术理解错误希望能够得到大家的指正,大家共同学习,共同进步。</p><p><strong>欢迎关注我的头条号,私信交流,学习更多网络技术!</strong></p>
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/193744.html