单播、多播和广播经典详解

1         什么是单播、多播和广播 

单播Unicast)、多播Multicast)和广播Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语。那么这些术语究竟是什么意思?区别何在?且听下文分解。

————
  网络节点之间的通信就好像是人们之间的对话一样。如果一个人对另外一个人说话,那么用网络技术的术语来描述就是单播,此时信息的接收和传递只在两个节点之间进行,参见图1

 

  图1 单播:一对一

  单播在网络中得到了广泛的应用,网络上绝大部分的数据都是以单播的形式传输的,只是一般网络用户不知道而已。例如,你在收发电子邮件、浏览网页时,必须与邮件服务器、Web服务器建立连接,此时使用的就是单播数据传输方式。但是通常使用点对点通信Point to Point)代替单播,因为单播一般与多播广播相对应使用。

————
多播可以理解为一个人向多个人(但不是在场的所有人)说话,这样能够提高通话的效率。如果你要通知特定的某些人同一件事情,但是又不想让其他人知道,使用电话一个一个地通知就非常麻烦,而使用日常生活的大喇叭进行广播通知,就达不到只通知个别人的目的了,此时使用多播来实现就会非常方便快捷,但是现实生活中多播设备非常少。多播如图2所示。

 

  图2 多播:一对多

多播也可以称为组播,在网络技术的应用并不是很多,网上视频会议、网上视频点播特别适合采用多播方式。因为如果采用单播方式,逐个节点传输,有多少个目标节点,就会有多少次传送过程,这种方式显然效率极低,是不可取的;如果采用不区分目标、全部发送的广播方式,虽然一次可以传送完数据,但是显然达不到区分特定数据接收对象的目的。采用多播方式,既可以实现一次传送所有目标节点的数据,也可以达到只对特定对象传送数据的目的

IP网络的多播一般通过多播IP地址来实现多播IP地址就是DIP地址224.0.0.0239.255.255.255之间的IP地址Windows 2000中的DHCP管理器支持多播IP地址的自动分配。

——广——
广播可以理解为一个人通过广播喇叭对在场的全体说话,这样做的好处是通话效率高,信息一下子就可以传递到全体,如图3所示。

广播在网络中的应用较多,如客户机通过DHCP自动获得IP地址的过程就是通过广播来实现的。但是同单播和多播相比,广播几乎占用了子网内网络的所有带宽。拿开会打一个比方吧,在会场上只能有一个人发言,想象一下如果所有的人同时都用麦克风发言,那会场上就会乱成一锅粥。

  在网络中不能长时间出现大量的广播包,否则就会出现所谓的广播风暴。广播风暴就是网络长时间被大量的广播数据包所占用,正常的点对点通信无法正常进行,外在表现为网络速度奇慢无比。出现广播风暴的原因有很多,一块有故障的网卡,就可能长时间向网络上发送广播包而导致广播风暴

 

  图3 广播:一对全体

  集线器由于其工作原理决定了不可能过滤广播风暴,一般的交换机也没有这一功能,不过现在有的网络交换机(如全向的QS系列交换机)也有过滤广播风暴功能了,路由器本身就有隔离广播风暴的作用。

  广播风暴不能完全杜绝,但是只能在同一子网内传播,就好像喇叭的声音只能在同一会场内传播一样,因此在由几百台甚至上千台电脑构成的大中型局域网中,一般进行子网划分,就像将一个大厅用墙壁隔离成许多小厅一样,以达到隔离广播风暴的目的。

  在IP网络中,广播地址用IP地址255.255.255.255来表示,这个IP地址代表同一子网内所有的IP地址。

  单播、多播和广播是网络技术的基础性知识,对网络技术感兴趣的读者一定要搞懂哟!

2         二层广播和三层广播

2.1  经典文章(一)

二层交换机是数据链路层的设备,它能够读取数据包中的MAC地址信息并根据MAC地址来进行交换。交换机内部有一个地址表,这个地址表标明了MAC地址和交换机端口的对应关系.二层交换机对广播包是不做限制的,把广播包复制到所有端口上。

     广播分为二层广播和三层广播二层广播FFFF.FFFF.FFFF(MAC地址),二层交换机遇到这种包就会泛洪到所有同VLAN的端口,不会过滤掉,因为如果二层交换机过滤这种包,ARP广播怎么正常工作呢?没有ARP,同网段的PC如何通信呢?路由器可以过滤二层广播是因为路由器是三层设备,如果路由器不过滤这种包,任何人发起的二层广播包就会到达Internet的整个范围,这样还要路由器做什么呢?路由器就是为了划分广播域。

     三层广播还有本地广播255.255.255.255特定子网广播比如192.168.1.255/24之分。

255.255.255.255这种本地广播是肯定没法跨越路由器的,因为一旦这种广播能跨越路由器的话,同样任何人发起的这种广播就会跑到Internet的任何角落。然而对于特定子网的广播是可以配置为允许跨路由器或者不允许跨路由器的,如果允许的话,我就可以跨越路由器对特定的子网发起三层广播。通常不要允许这类广播,因为你一旦允许了很容易造成ICMP Sumrf攻击的。

2.2  经典文章(二)

二层广播一般是转发用的,三层是为寻址的,二层广播是交换机mac表里面没有目的mac然后二层广播。

三层是向本子网内发送广播包。还有一种广播是定向广播,可以穿越路由器,用来问某某地址,你的MAC地址是多少,这时明显没有对方的MAC地址就用全1了.多数情况下,对方未知都是全1,自己未知是全0.比如DHCP获取地址时,自己是没有地址的,这时发的包中源地址就是全0的。

二层广播地址就是在广播域内为了让此广播域内所有主机,网络设备收到这个帧,帧报头的Destination MAC Address 是全F的格式,正因为交换机转发表里面,或其他的网络设备的ARP高速缓存里没有要找的目的mac地址,才会发这样一个二层广播解析目的mac。

三层广播地址是本网段的最后一个地址,原理也是让本网段的所有设备都收到这个包,他的用处很多,比如rip的更新包等等

总之广播就是会引起网络瘫痪的一个重要原因,因为发大量的包,对于带宽和CPU的消耗也是很多的,所以比较先进的协议都是采用组播技术了,到了ipv6环境下,已经全是组播了。

2.3  经典文章(三)

       广播只有2层的。跨网段的访问是寻址。
 
       给你举一个例子,详细说一下数据包的转发流程,环境是三层交换机有两个网段,10.0.0.1/24和192.168.0.1/24,PC1是10段的,PC2是192段的。PC1要与PC2通信。过程如下:
 
1.     PC1将要与PC2通信,首先根据网卡的IP地址与掩码算出PC2是否与PC1是同网段,如果是同网段,则直接二层转发,如果不是将跨网段转发。
 
2.     PC1算出PC2和自己不是同网段,所以要将数据包发送到网关由网关进行三层寻址转发。

 

3.     PC1到网关为二层转发,也就是数据帧转发,数据帧转发需要知道对方MAC地址,首先PC1会读电脑的ARP缓存,看是否有网关IP与MAC地址的对应关系,如果有将直接封装帧转发;如果没有将使用ARP协议也就是广播,携带自己的IP地址与MAC地址,目的地址为网关IP,MAC地址为FFFF-FFFF-FFFF。网关收到此ARP广播后,将回复PC1自己的MAC地址,数据包为源网关IP和MAC地址,目的为PC1的IP和MAC地址。
       
4.     PC1收到数据包后会将此IP和MAC地址写入到电脑的ARP缓存表里,并直接封装数据包,三层IP头为源PC1-IP,目的为PC2-IP,二层帧格式为源PC1-MAC,目的为网关MAC地址(记住此包头)。
 
5.     网关将收到PC1发来的数据包,进行拆包,根据其目的IP地址进行寻址(路由表),找到对应的路径(也就是192段VLAN)。

 

6.     三层交换机会根据其目的IP地址进行本机的ARP缓存查找,如果查找到IP和MAC地址的对应关系将直接封装转发,如果没有交换机将发送ARP广播包获取目的IP地址的MAC地址(广播包将只发送192段VLAN,其他VLAN不广播)。

 

7.     三层交换机得知PC2-MAC地址后将转发数据,三层包头为源PC1-IP,目的为PC2-I,二层帧包头为源192段网关MAC,目的为PC2-MAC。

 

8.     PC2将收到三层交换发来的数据包,进行拆封即可获取数据,并回复PC1过程同上。
 
       三层交换机等同于路由器。也就是说源IP和目的IP在数据包里一直不变(不经过NAT的情况),MAC地址将时刻改变。广播只存在二层。三层情况下是路由寻址。

255.255.255.255我记得这个地址只在DHCP协议里才出现

2.4  补充

       网络层广播:255.255.255.255
       数据链路层广播:FFFFFFFFFFFF
       路由器接收到广播直接丢弃!
       实际上是路由器有IP HELP ADDRESS配置才可以,路由器识别出广播后,再以单播方式转发给实际的DHCP服务器。表面看起来像穿越了路由器,可实际上任何广播都不可能被路由器转发的!
       如果路由器接口设置了代理ARP,ARP包也能“穿越”路由器的!

3         组播技术简介

 机开机组播接收程序时,会向TCP/IP协议注册一个组播IP地址,所以当收到目的IP地址是这个组播组的地址时,主机就会接收。  同时它又向工作在数据链路层的网卡也注册了一个二层MAC地址,这样的话,当主机接收到一个组播报文的时候,就可以
 
直接现在网卡上判断是否是自己所需要的组播报文。
 IGMPInternet组管理协议,用于主机与路由器之间交互信息的一种协议。所有要加入组播组的主机和所有连接到有组播主机的子网中 的路由器必须使用IGMPIGMP消息不能被路由转发,只能限制在本地网段内部IGMPTTL参数永远是1,保证了IGMP的使用
 
范围。
      
组播路由协议的主要功能是将组播数据从一台路由器跨越一个网络传送到另外一台路由器上
 
组播路由协议分为域内组播路由协议域间组播路由协议
      
http://wenku.baidu.com/view/b30740553c1ec5da50e27015.html

  

组播的转发技术:
单播里面,数据转发的依据是数据包的目的地址,这个目的地址明确表示了一个主机的位置,但是组播数据包并不是基于ip数据包的目的地址的,它没有唯一性,因此它需要采用一种叫RTF(Reverse Path Forwarding逆向路径转发)的方式来转发数据包,它是针对转发的时候做检查,这个检查会决定是否转发还是丢弃输入的信息包,那么它的检查过程是什么样的呢?
首先要了解的是,RPF跟单播协议密切相关,所谓的逆向路径转发是基于察看有关组播源在什么地方,组播源是一个IP的单播地址,因此呢,路由器检查到达的数据包的源地址,然后查看路由表,看这个源地址可以通过哪个接口可达,如果信息包是在可返回原站点的接口上到达,那就说明这个组播数据流是从正确的方向过来的,则RPF检查成功,信息包被转发,但如果说这个数据包的原地址不是从这个接口到达的,那就说明这个组播数据包不是从最佳路经过来的,应该丢弃该数据包。
因为RPF是要结合单播路由表的,因此在构件组播之前应该事先完成有关IP单播路由表的实现。

无组播功能交换机转发组播数据包:
对一些网桥,一些二层设备,他没办法实现路由,也没办法实现RPF,对于一个不能识别组播数据流的二层交换机来说,它收到一个组播数据包会按照广播数据包得处理方法处理。

二层交换机的组播功能实现:
因为无组播功能的交换机在转发组播数据包的时候是跟广播一样,这样就达不到组播的目的了。因此,现在很多二层交换机增加了组播功能,增加了组播功能后就可以识别组播流,并且可以针对组播流来建立有关组播地址和端口的映射。
能识别组播的交换机在它的转发表里面,都会增加一项MAC地址是组播地址,然后端口包含以希望接收组播数据的主机所相连的所有端口。

4         *泛洪

1、泛洪的定义

CISCO设备上有个概念叫泛洪。如果有学设备的,我这里顺便对比讲下,比如现在有个信息包进来,从我们交换机某个端口进来,他要寻质如果事先没有地址那么他就会给每个端口发信息,包括自己,来求证是否是对方。所以交换机不能屏蔽广播而路由器可以,因为他有记忆功能,可以形成路由表。而设备上的泛洪呢他的意思是给所有端口发除了自己,大家对记下这两个概念.而我们IP地址上的广播地址的概念:IP地址是由2进制组成,当全为一时,表示广播地址。广播地址主机都为1.主机全为0的话是网段表示一个网。

2、网络泛洪

从定义上说,攻击者对网络资源发送过量数据时就发生了洪水攻击,这个网络资源可以是routerswitchhostapplication等。常见的洪水攻击包含MAC泛洪,网络泛洪,TCP SYN泛洪和应用程序泛洪。接下来简单的分别解释一下以上这些:
    1)MAC
泛洪发生在OSI第二层,攻击者进入LAN内,将假冒源MAC地址和目的MAC地址将数据帧发送到以太网上导致交换机的内容可寻址存储器(CAM)满掉,然后交换机失去转发功能,导致攻击者可以像在共享式以太网上对某些帧进行嗅探,这种攻击可以通过端口安全技术方式,比如端口和MAC地址绑定。
    2)
网络泛洪包括SmurfDDos
    smurf
发生在OSI第三层,就是假冒ICMP广播ping,如果路由器没有关闭定向广播,那攻击者就可以在某个网络内对其它网络发送定向广播 ping,那个网络中的主机越是多,造成的结果越是严重,因为每个主机默认都会响应这个ping,导致链路流量过大而拒绝服务,所以属于增幅泛洪攻击,当然也可以对本           网络发送广播ping
    3)DDos
发生在OSI第三、四层,攻击侵入许多因特网上的系统,将DDos控制软件安装进去,然后这些系统再去感染其它系统,通过这些代理,攻击者将攻击指令发送给DDos控制软件,然后这个系统就去控制下面的代理系统去对某个IP地址发送大量假冒的网络流量,然后受攻击者的网络将被这些假的流量所占据就无法为他们的正常用户提供服务了。
    4)TCP SYN
泛洪发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。攻击者发送TCP SYNSYNTCP三次握手中的第一个数据包,而当服务器返回ACK后,改攻击者就不对之进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。这样更加会浪费服务器的资源。攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。
    5
)最后应用程序泛洪发生在OSI第七层,目的是消耗应用程序或系统资源,比较常见的应用程序泛洪是什么呢?没错,就是垃圾邮件,但一般无法产生严重的结果。其它类型的应用程序泛洪可能是在服务器上持续运行高CPU消耗的程序或者用持续不断的认证请求对服务器进行泛洪攻击,意思就是当TCP连接完成后,在服务器提示输入密码的时候停止响应。

5         冲突域和广播域

冲突域(物理分段):连接在同一导线上的所有工作站的集合,或者说是同一物理网段上所有节点的集合或以太网上竞争同一带宽的节点集合。也就是说,用Hub或者Repeater连接的所有节点可以被认为是在同一个冲突域内,它不会划分冲突域。由于广播域被认为是OSI中的第二层概念,所以像 Hub,交换机等第一层,第二层设备连接的节点被认为都是在同一个广播域。

 

冲突域(Collision Domain):一组与同一条物理介质相连的设备,其中任何两台设备同时访问该介质都将导致冲突,冲突域中同一时间内只有一台机器能够发送数据。

广播域(Broadcast Domain):网络中一组相互接收广播消息的设备。

第一层设备如集线器,与之连接的所有设备都属于同一个冲突域和同一个广播域

第二层设备如交换机和网桥,将网络划分成多个网段,每个网段是一个独立的冲突域,但是相连的所有设备是一个广播域交换机的每个端口就是一个冲突域

第三层设备如路由器,将网络划分为多个冲突域和广播域

以太网使用载波侦听多路访问/冲突检测(Carrier Sense Multi-Access/Collision Detection)技术以减少冲突的发生。即,二层广播帧覆盖的范围就是广播域;二层单播帧覆盖的范围就是冲突域。

总结一下:

多点传送(多播):一对多个

直接广播(广播):一对所有

单点传送(单播):一对一

 


展开阅读全文

没有更多推荐了,返回首页