第十四章 多播与广播

《TCP/IP网络编程》 尹圣雨 P230~P237

 

向大量客户端发送相同的数据时,会对服务器端和网络流量产生负面影响,可以使用多播技术解决该问题。

 

多播

Multicast多播方式的数据传输是基于UDP完成的。与UDP服务器端/客户端的实现方式非常接近。区别在于,UDP数据传输是以单一目标进行的,而多播数据同时传递到加入(注册)特定组的大量主机即采用多播方式时,可以同时向多个主机传递数据。

多播的数据传输方式及流量方面特点:

(1)多播服务器端针对特定播组,只发送1次数据。

(2)即使只发送一次数据,但该组内的所有客户端都会接收数据。

(3)多播组数可在IP地址范围内任意增加。

(4)加入特定组即可接收发往该多播组的数据。

 

多播组是D类IP地址(224.0.0.0~239.255.255.255),“加入多播组”可以理解为提供程序完成如下声明:

在D类IP地址中,希望接收发往目标239.234.218.234的多播数据。

 

多播数据包的格式与UDP数据包相同。只是与一般的UDP数据包不同,向网络传递1个多播数据包时,路由器将复制该数据包并传递到多个主机。这样,多播需要借助路由器完成。

 

多播主要用于“多媒体数据的实时传输”。

路由Routing和TTL(Time to Live,生存时间),以及加入组的时间

为了传递多播数据包,必须设置TTL。TTL是决定“数据包传递距离”的主要因素。TTL用整数表示,并且每经过1个路由器就减一。TTL变为0时,该数据包无法再被传递,只能销毁。因此TTL的值设置过大将影响网络流量。当然设置过小也会无法传递到目标,需要引起注意。

 

与TTL相关的协议层为IPPROTO_IP,选项名为IP_MULTICAST_TTL。

加入多播组也通过设置套接字选项完成,加入多播组相关的协议层为IPPROTO_IP,选项名为IP_ADD_MEMBERSHIP。

 

实现多播Sender和Receiver

多播中用“发送者Sender”和“接受者Receiver”替代服务器端和客户端。Sender是多播数据的发生主体,Receiver是需要多播组加入过程的数据接收主体。

P233~P236是具体的实现代码。

 

多播主干网MBone Multicast Backbone

多播是基于MBone这个虚拟网络工作的,即通过网络中的特殊协议工作的软件概念上的网络MBone部分可以触及的物理网络。它是以物理网络为基础,通过软件方法实现的多播通信必备虚拟网络。



广播

一次性向多个主机发送数据这一点与多播相似,但传输数据的范围有区别。多播即使在跨越不同的情况下,只要加入多播组就能接收数据,相反,广播只能向同一网络中的主机传输数据。

 

广播的理解及实现方法

广播是向同一网络中的所有主机传输数据的方法。广播也是基于UDP完成的。根据传输数据时使用的IP地址形式,分为:

直接广播:DirectBroadcast ,IP地址中除了网络地址外,其余主机地址全部设置尾1.

本地广播:LocalBroadcast,使用IP地址限定wie255.255.255.255.

如果不仔细观察广播示例中通信时使用的IP地址,则很难与UDP示例进行区分。数据通信中使用的IP地址是与UDP示例的唯一区别。默认生成的套接字会组织广播。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值