IPv4通信方式
- 单播通信:
- 单播通信是一种一对一的通信方式,
- 源地址和目的地址是一个单播IP地址,
- 广播通信:
- 广播通信是将广播报文在一个广播域内进行泛洪,广播域的所有设备都会收到广播报文,并且都需要解析该报文,
- 设备通过解析广播报文确定自己是否需要该报文,如果不需要,则会丢弃该报文(通常情况下,设备至少需将报文解析到传输层头部才能判断自己是否需要该报文),
- 广播这种通信方式容易对网络造成不必要的资源消耗(IPv6通信方式中已经将广播取消,将广播的功能改用组播来实现),
- 网络中的三层设备(例如路由器)的三层接口在收到广播报文后通常不会进行转发,每一个三层接口都可视为一个广播域,广播流量会终结在设备的三层接口上。
- 组播通信:
- 组播通信是一种一对多的通信方式,
- 组播报文(目的IP地址为组播IP地址的报文,D类型地址:224.0.0.0/4)发向一组接收者,这些接收者需要加入到相应的组播组中才会收到发往该组播组的报文。
- 一个组播组中,即使网络中存在多个接收者,对于组播源而言,每次也只需发送一份报文,网络中的组播转发设备负责拷贝组播报文并向有需要的接口转发。
- 和广播报文的处理方式类似,网络中的三层设备在收到组播报文后,缺省并不会对其进行转发,
- 单播报文的转发需要依靠设备的单播路由表项,和单播报文转发原理类似,组播报文的转发需要网络设备激活组播路由功能,并且维护组播路由表项,然后依据这些表项对组播报文进行合理转发。
- 单播流量的传输需要依靠一个单播网络来承载(通常借助单播路由协议实现,比如RIP、OSPF、IS-IS、BGP等路由协议),和单播流量传输基础类似,组播流量的传输,需要一个组播网络来承载(通常借助组播路由协议实现,比如PIM、MOSPF、MBGP等路由协议)。
背景需求
如下图所示,Server是一台多媒体服务器,而PC 1, PC2, PC3及PC4是网络中的主机。现在Server开始播放视频,用户期望在PC1, PC2及PC3上实时收看Server所播放的视频。
解决方法
基于单播通信的解决方案
-
解决方法
由于网络中存在多个接收者,对于Server而言,需要为每个接收者各创建一份数据,每一份数据都被发往一台单独的PC(如下图所示)。
-
局限性
- 不适合于大规模接受者的应用场景。如果网络中存在大规模的接收者,那么Server就不得不每次都创建大量的数据拷贝,而且每份拷贝的内容是完全相同的,只是目的IP地址各不相同,这种通信显然是极其低效的,同时也造成了链路带宽及设备性能的浪费。
- Server在发送数据前,需要明确所有接收者的IP地址,否则它将无法构造数据包。
- 若用户要求PC可以自由地接入或离开,或者PC的IP地址并不固定,单播通信的方式在此场景不适用。
基于广播通信的解决方案
- 解决方法和局限性
- 广播是将广播报文在广播域内泛洪,如果Server采用广播的方式发送这些数据,那么所有的接收者就不得不与Server处在相同的广播域内,因为广播报文在网络中的泛洪范围非常有限。
- 从网络优化角度考虑,广播流量又是应该尽可能被减少的,毕竟,这些流量会造成其他设备不必要的性能损耗,因此在这种场景中使用广播通信显然并非最佳方案。
基于组播通信的解决方案
- 解决方法
-
组播源:当Server开始播放视频时,组播报文从Server源源不断地被发送出来,无论网络中存在多少接收者,Server每次都仅需发送一份数据。Server发出的组播报文的源IP地址是192.168.100.1,而目的IP地址则是组播IP地址(以224.1.1.1为例)。
-
组播设备:如图下图所示,Server发送的组播报文到达路由器R1后,R1将组播报文进行拷贝,然后将组播报文从有需要的接口转发出去(给R2及R3),至于不需要该报文的接口,路由器是不会向其转发组播报文的。R2及R3收到组播报文后,继续进行拷贝及转发,直到报文到达接收者。只有加入组播组224.1.1.1的接收者才会收到这些组播报文。
-
组播接受者:PC1, PC2及PC3需要通过某种机制(IGMP)宣告自己加入组播组224.1.1.1。
- 局限性:
- 组播是基于UDP的,采用尽力而为的传输方式。
- 没有拥塞避免机制。
- 可能出现报文重复的现象。
- 可能出现报文失序的现象
- 总结
- 组播源并不关心一个组播组中存在多少个接收者,或者这些接收者处于网络中的什么位置、它们的IP地址是什么,它只管将组播报文发送出去,
- 组播网络设备负责将组播报文根据需要进行拷贝及转发。在上图中,没有加入组播组224.1.1.1的PC4是不会收到组播流量的,事实上R5并没有连接任何接收者,因此它自己也不会收到发往该组播组的流量,R3及R4不会将组播流量转发给它。
- 组播技术适用于一对多的通信场景,在多媒体直播、在线会议、股票金融等领域有着广泛的应用。