单播 && 组播 && 广播
单播(unicast)
是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。
它是现今网络应用最为广泛,通常所使用的网络协议或服务大多采用单播传输,例如一切基于TCP的协议。
下面来看看图1。发送方正在向接收方A发送一个消息,这个消息的传输过程中需要用到二层和三层服务。发送方会通过ARP(地址解析协议)学习到网关的MAC地址,然后把去往除本地子网之外的所有其他网络的IP流量都发给网关/路由器。路由器会查看数据包的目的IP地址,然后根据路由表(第 3 层)中的信息,将数据包转发给下一跳路由器。最终目的路由器收到数据包后,会把它转发给接收方(在本例中也就是接收方 A)。从这个过程中可以看出,发送方从来不会学到接收方A的MAC地址,因为接收方A与发送方并不处于同一个子网中。
单播示意图:
如果使用单播的话,就需要网络上所有有兴趣收听广播电台的设备上都建立一条独立的会话。如图1-2所示的单播会话,这里有1个发送方和3个接收方。发送方是生成信息的设备,并且把信息通告到一个组中,接收方是收听这个信息的设备。
由于每条数据流都是复制来的,因此发送方必须为每个客户端复制同样的信息,这些网络连接也会占用3倍的带宽。如果只建立低带宽音频会话,并且只有3个用户的话,这倒不是什么大问题;但想想建立上万条或者数百万条会话的情况。为每个客户端复制信息的行为会大大消耗网络资源。
广播(broadcast)
是指封包在计算机网络中传输时,目的地址为网络中所有设备的一种传输方式。
实际上,这里所说的“所有设备”也是限定在一个范围之中,称为“广播域”。“广播”在网络中的应用较多,如客户机通过DHCP自动获得IP地址的过程就是通过广播来实现的。
但是同单播和多播相比,广播几乎占用了子网内网络的所有带宽。
以太网广播和IP广播的差别非常大。还记得IP数据包(第3层)是封装在以太网数据帧(第2层)中的。每一层都有各自的源地址和目的地址,网络设备对每一层的处理方式也都不同。在IP数据包中,第3层广播目的地址指的是这个地址主机位中的所有主机。也就是说,所有主机可以表示为255.255.255.255。在第2层,表示所有主机的广播地址是ffff.ffff.ffff,交换机在转发这种数据帧时,必须将其复制给所有潜在的接收方,而忽略目的设备的物理以太网段(这一行为被称为泛洪)。如果设备希望与某个IP主机进行通信,但却不知道这个IP主机的目的MAC地址,它就会将IP单播消息封装在表示全部主机的以太网广播数据帧中,并发送出去。同一个以太网段中的所有设备都会收到这个数据包,但只有指定的 IP 主机会对这个数据包进行完全处理并发回响应。事实上,这也正是最初ARP请求看起来的样子。
广播示意图:
如果使用广播的话,广播电台作为发送方必须要连接的会话数量会大大减少,这也就减少了发送方占用的网络带宽;但是在这种情况中,广播电台又面临了另一个难题。参考图1-3,复制数量庞大的数据流所带来的问题消除了,带宽利用率问题解决了,但现在所有设备都会收到广播电台发送的消息,无论这些设备是否有兴趣收听。当广播电台的数量增加时,网络中的每台设备都会收到越来多的可能并不希望收到的信息。所有接收方必须对广播音频流量进行处理,来判断这是不是与自己相关的信息。
“多播” 也可以称为 “组播”
指把信息同时传递给一组目的地址。它使用策略是最高效的,因为消息在每条网络链路上只需传递一次,
而且只有在链路分叉的时候,消息才会被复制。在网络技术的应用并不是很多,网上视频会议、网上视频点播特别适合采用多播方式。因为如果采用单播方式,逐个节点传输,
有多少个目标节点,就会有多少次传送过程,这种方式显然效率极低,是不可取的;如果采用不区分目标、全部发送的广播方式,
虽然一次可以传送完数据,但是显然达不到区分特定数据接收对象的目的。采用多播方式,既可以实现一次传送所有目标节点的数据,
也可以达到只对特定对象传送数据的目的。IP网络的多播一般通过多播IP地址来实现。
多播IP地址就是D类IP地址,即224.0.0.0至239.255.255.255之间的IP地址。
多播示意图:
使用组播可以同时解决这两个问题,既能够将发送方需要发送的会话数量降到最低,也能够降低网络负载,从发送诸多条数据流,到只发送一条数据流。同时我们也能保留单播提供的优势,就是只把广播电台数据包发送给想要收听的设备。图1-4描绘了使用组播的环境,发送方只发送一条数据流,并且这条数据流只会被复制给感兴趣的接收方。
IP组播消息可以跨越三层边界,从一台设备发给多台设备、从多台设备发给多台设备和/或从多台设备发给一台设备。目的节点(接收方)通过发送加入和离开消息,创建出一个按需接收组播流的设备团体。即使需要接收消息的接收方数量庞大,组播也要求发送方只发送一条数据包流,从而优化了网络资源。网络节点或三层设备负责复制消息,并将其引导给接收方。很多应用层程序都利用了组播对于消息流的优化。这些应用层程序也是推动组播在网络架构中发展的主要动力。
一些依赖于组播的常见应用如下所示:
证券交易应用;计算机成像应用;音乐保持(Music on Hold)服务;传感器更新;视频分布;企业网络广播。
总结
IP网络中的3种通信方式为单播、广播和组播。对于不同的应用来说,每种方式都有各自的优点和缺点。组播提供了一种高效的通信机制,能够向位于不同位置的多个接收方发送消息。同时它也支持多对多和多对一的通信。
组播应用通常使用IP上的UDP(用户数据报)协议。源设备(称为发送方)负责发送消息,即使网络中没有其他设备对接受这个信息感兴趣,源也会发送消息(术语称为数据流)。接收方必须向某个组播流进行注册,才能让网络中的设备向它转发这些信息。
用于组播的IP编址也具有唯一性。有很多公有地址和私有地址被分配给不同的应用和服务。在建立组播网络之前,工程师必须先知道计划使用哪些组播地址。