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对象之后,将不再接受发送到该组播组的数据报。

java udp 广播 组播_UDP广播和组播的基础知识介绍相关推荐

  1. Java网络编程详解——网络基础知识介绍、IP和端口介绍、URL和URLConnection介绍

    网络基础知识--计算机网络介绍.通信协议与网络结构模型 一. 计算机网络就是把分布在不同地理区域的计算机与专门的外部设备,用通信线路互连成一个网络系统,从而使众多的计算机可以互相传递信息,共享资源. ...

  2. java udp ip端口 设置_UDP端口扫描Java只找到1个开放的UDP端口

    我对端口扫描有一个分歧.我在 Java中扫描一些IP地址的UDP端口.在我的程序中(假设一切正常)我只能找到一个开放的UDP端口.在另一方面端口扫描"nmap"我得到4个开放的UD ...

  3. 数据加解密基础知识介绍,及Java实现Base64加密(详细)

    加密流程涉及的一些关键词: 明文:准备加密的信息 加密:把明文处理为密文的过程 加密算法:具体实现明文转为密文的算法 加密密钥:通过加密算法进行加密操作需要的密钥 密文:被加密的明文 解密:将密文转为 ...

  4. 计算机体系结构基础知识介绍之缓存性能的十大进阶优化之减少命中时间和流水线访问和多组缓存增加带宽(三)

    优化二:减少命中时间的方式预测 路预测是一种高速缓存优化技术,它在高速缓存中保存额外的位来预测下一次高速缓存访问的路(或者组内的块).这种预测可以提前设置多路选择器来选择期望的块,并且在那个时钟周期内 ...

  5. java easing_[译] 动画中缓动(easing)的基础知识

    自然界中没有东西是从一个点线性地移动到另一点. 在现实中,事物在运动时可能加速或减速. 我们的大脑习惯于期待这种运动,因此在做动画时,应利用此规律. 自然的运动会让用户对你的应用感觉更舒服,从而产生更 ...

  6. java 重定向到某个页面并弹出消息_java面试基础知识-网络基础知识(HTTP相关)

    HTTP简介: 超文本传输协议HTTP主要特点: 支持客户机/服务器模式:浏览器作为客户端像服务器发送各种请求 简单快速:客户端只要传送请求方法参数和路径,规模小,通讯速度快 灵活:可以传输任意类型的 ...

  7. Java实现单播,组播,广播

    单播.组播.广播介绍:https://blog.csdn.net/ahou2468/article/details/86526509 目录 1.单播.组播.广播关键类说明 2.单播和广播的具体实现 2 ...

  8. 基于 UDP 的 组播、广播详解

    背景 有些时候我们在网络通信中也需要用到 组播(多播).广播.现在我们来介绍如何实现. 建议:在此之前,关闭防火墙. ubuntu: service ufw stop windows: 控制面板关闭 ...

  9. java udp 多播 广播_Java UDP 广播与多播

    1.广播: 同一网段所有主机都能接收,前提是端口要监听 客户端发送广播,开启端口监听的服务端接收并打印消息 服务端程序: import java.io.IOException; import java ...

最新文章

  1. ML基石_12_NonLinearTransformation
  2. 详解Makefile 函数的语法与使用
  3. 算法面试:精选微软经典的算法面试100题(第1-20题)
  4. WordPress podPress插件‘playerID’参数跨站脚本漏洞
  5. 【Linux】一步一步学Linux——gzip命令(63)
  6. Docker的运行机制
  7. Mybatis多参数封装到一个类中模糊查询
  8. java逆向_Java逆向基础之异常
  9. 拳打苹果 脚踢三星 国产品牌占据泰国手机市场超半数份额!
  10. 用Java开源项目JOONE实现人工智能编程
  11. luogu4093 [HEOI2016/TJOI2016]序列
  12. nar神经网络_基于神经网络的预测模型
  13. c++链表——银行账户管理系统
  14. 信息与计算机科学学校排名,2021中国信息与计算科学专业大学排名 最好的高校排行榜...
  15. new Date() 获取当前时间对象(getFullYear、getMonth、getDate、getHours、getMinutes、getSeconds、getDay、getTime)
  16. 特征重要性判断(一)----决策树
  17. PS文件的打开与关闭
  18. 201812CCF-CCSP竞赛:第1题-小明上学
  19. fpc : 调用 MS TTS 读中英文
  20. 群晖918+ SATA改eSATA,挂载NTFS硬盘。

热门文章

  1. 6、数字调制与多路复用(物理层)
  2. javascript 全文替换
  3. 对话实在智能CEO孙林君:AI创新加速RPA普惠
  4. mysql中的三目运算
  5. IE7.0使用技巧30招
  6. 微信小程序暂无数据组件封装
  7. 网页前端培训笔记第八课
  8. Win7一键备份、还原有门道
  9. 2022年中国制造业数字化转型研究报告
  10. 暴力摩托(NDK1045)