java udp 广播 组播_UDP广播和组播的基础知识介绍

UDP广播和组播的基础知识介绍

━━━━━━━━━━━━━━━━━━━━━━━━━

UDP可以实现一对多的传输方式,即通过广播和组播把数据发送给一组进程。下面就介绍下UDP广播和组播的相关知识。

一、广播和组播的基本概念虽然利用TCP协议可以保证数据的可靠、有序的传输,但是TCP仅支持一对以的传输,而且传输时需要在发送端和每一个接受端之间建立单独的数据通信通道,如果需要实现网络会议、网络视频的点播等功能时要向大量主机发送相同的数据包,如果采用单播方式逐个节点传输的话,将会给发送方带来网络堵塞等问题,此时可以考虑实现UDP的多播方式——即广播和组播来实现这样的功能(一对多通信分为广播和组播两种形式)。

广播是指同时向子网中的多台计算机发送消息,并且所有子网中的计算机都可以接收到发送方发来的消息,每个广播消息包含一个特殊的IP地址,这个IP的中子网内主机标志部分的二进制都为1,例如,子网掩码为255.255.255.0,对于子网192.168.0,则这个IP地址为192.168.0.255.

然后广播消息又分为本地广播和全球广播两种类型,本地广播是指向子网中的所有计算机发送广播消息,其他网络不会受到本地广播的影响。

IP地址分为两部分——网络标志部分和主机标志部分,这两部分是靠子网掩码来区分的,主机标记部分二进制全部为1的地址成为本地广播地址。例如:

A类网络192.168.0.0,使用子网掩码255.255.0.0,则本地广播地址为:

192.168.255.255

对于IPv4来说,全球广播使用所有位全为1的IP地址,即255.255.255.255,这个广播地址代表数据报的目的地是网络上所有设备,但是由于路由器会自动过滤全球广播,所以使用这个地址根本就没有任何意义。

然后当接收者分布于多个不同的子网时,广播将不再适用,此时可以通过组播的方式来实现,组播也叫多路广播,组播是将信息从一台计算机发送到本网或全网内指定的计算机上,即发送到那些加入了指定组播组的计算机上,每台计算机都可以通过程序随时加入某个组播组中,也可以随时退出来,就像我们开网了会议一样,可以随时加入会议室进行开会,会议结束和会议进行中都可以随意的退出来。

二、加入和退出组播组组播组又称为多路广播组,组播地址的范围在224.0.0.0到239.255.255.255的D类IP地址(至于这个概念大家可以百度百科里面就查看)。任何发送到组播地址的消息都会被发送到组内所有成员设备上,组可以使永久的也可以是临时,大多数我们使用的都是临时的,仅在有成员的时候才存在。

使用组播时,注意生命周期(TTL,Time to live)的设,TTL值表示允许路由器转发的最大次数,当达到这个最大值时,数据包就会被丢弃,TTL的默认值为1,设置为1时表明只能在子网中发送数据。

加入组播组:

UdpClient类提供了JoinMulticastGroup方法,用于将UdpClient加入到使用指定的IPAddress的组播组中,调用该方法后,基础的Socket会自动向路由器发送数据包,用于请求成为组播组的成员,如果成为组播组成员,就可以接收该组播组的数据报。至于具体方法的时候会在后面实现UDP广播程序中会用到,另外大家也可以查看MSDN,所以这里我就不再列出来了,只是指出这个方法的作用,让大家知道有这么个方法来调用。

退出组播组:

同样利用UdpClient的DropMulticastGroup方法,可以退出组播组,调用该方法后,基础Socket会自动向路由器发送数据包,用于请求从指定的组播组里退出,从组中回收UdpClient对象之后,将不再接受发送到该组播组的数据报。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值