一、单播
主机之间“一对一”的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制。如果10个客户机需要
的数据,则服务器需要逐一传送,重复10次相同的工作。网络中的路由器和交换机根据其目标地址选择传径,将IP单
播数据传送到其指定的目的地。
二、单播的特点
优点:
1. 服务器及时响应客户机的请求
2. 服务器针对每个客户不同的请求发送不同的数据,容易实现个性化服务。
缺点:
1. 服务器针对每个客户机发送数据流,服务器流量=客户机数量×客户机流量;在客户数量大、每个客户机流量大的
流媒体应用中服务器不堪重负。
2.
现有的网络带宽是金字塔结构,城际省际主干带宽仅仅相当于其所有用户带宽之和的5%。如果全部使用单播协
议,将造成网络主干不堪重负。
三、广播
(1)主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都
可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其网络成本可以很低廉。
(2)有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所有频道的信号,但只将一个频道的信号还
原成画面。
(3)在数据网络中也允许广播的存在,但其被限制在二层交换机的局域网范围内,禁止广播数据穿过路由器,防止
广播数据影响大面积的主机。
四、广播的特点
优点:
1. 网络设备简单,维护简单,布网成本低廉
2. 由于服务器不用向每个客户机单独发送数据,所以服务器流量负载极低。
缺点:
1.不管主机是否有程序接收广播消息,广播消息一定会被网卡收到并提交给操作系统去处理,所以会造成网络
上流量增大,对不接收广播消息的主机造成一定的负担。
2. 网络允许服务器提供数据的带宽有限,客户端的最大带宽=服务总带宽。
3. 广播禁止在Internet宽带网上传输。
五、广播实现
(1)Linux下使用数据报socket实现广播,只需要在发送数据前调用setsockopt函数,指定广播有效即可。
(2)setsockopt用于设置与某个套接字关联的选项。
六、errno
setsockopt函数执行若失败,不但会返回-1,还会把errno设置成下列之一:
七、level
level指定控制套接字的层次,其取值如下:
八、getsockopt函数
getsockopt函数用于获取与某个套接字关联的选项,用法与setsockopt函数类似:
九、组播
• 主机之间“一对一组”的通讯模式,也就是加入了同一个组的主机可以接受到此组内的所有数据,网络中的交换
机和路由器只向有需求者复制并转发其所需数据。
• 主机可以向路由器请求加入或退出某个组,网络中的路由器和交换机有选择的复制并传输数据,即只将组内数据
传输给那些加入组的主机。这样既能一次将数据传输给多个有需要(加入组)的主机,又能保证不影响其他不需
要(未加入组)的主机的其他通讯。
十、组播的特点
优点:
1.
需要相同数据流的客户端加入相同的组共享一条数据流,节省了服务器的负载。具备广播所具备的优点。
2.
由于组播协议是根据接受者的需要对数据流进行复制转发,所以服务端的服务总带宽不受客户接入端带宽的限
制。IP协议允许有2亿6千多万个(268435456)组播,所以其提供的服务可以非常丰富。
3.
此协议和单播协议一样允许在Internet宽带网上传输。
缺点:
1.与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可以通过一定的容错机制和QOS加以弥补。
2.现行网络虽然都支持组播的传输,但在客户认证、QOS等方面还需要完善,这些缺点在理论上都有成熟的
决方案,只是需要逐步推广应用到现存网络当中。
十一、组播实现
• 客户端:
远程地址设置为组播地址(224.0.0.0-239.255.255.255),而非实际IP。
• 服务器:
1.通知Linux内核,将指定的socket加入组播IP组。
2.为了方便在本机调试,可以考虑在socket上设置选项,允许端口复用。
3 .为了方便在本机调试,可以考虑bind以后,设定允许socket广播到同一台计算机。
2013.11.21