当前位置:网站首页 > 编程语言 > 正文

udp广播和组播区别(udp广播和单播)



日常的网络编程中,不管是TCP还是UDP,应用程序主要是基于单播,即点对点通信,对组播和广播涉及的相对少。这里先用通俗的例子解析一下这三者的区别:

单播:有具体目标地址的帧从源到达目标地址的过程。比如你对张三喊“张三”,哪么只有张三答应你.
多播(组播):帧送往定义在一组内的地址。比如你喊:姓张的请举手,那么只有姓张才会举手回应你,其他不姓张的人,就不会举手。
广播:把帧发往所有能到达的地址。比如你在学校的广播中喊“今天放假”。哪么全校的同学都能听到,然后欢呼。 

特别注意:组播和广播是通过UDP实现的,TCP不支持组播和广播


组播地址范围
组播通信必须依赖于IP多播地址,在IPv4中它是一个D类IP地址,范围从 224.0.0.0到239.255.255.255,并被划分为局部链接多播地址、预留多播地址和管理权限多播地址三类:

局部链接多播地址范围在 224.0.0.0~224.0.0.255,这是为路由协议和其它用途保留的地址,路由器并不转发属于此范围的IP包;
预留多播地址为 224.0.1.0~238.255.255.255,可用于全球范围(如Internet)或网络协议;
管理权限多播地址为 239.0.0.0~239.255.255.255,可供组织内部使用,类似于私有 IP 地址,不能用于 Internet,可限制多播范围。

我们一般使用224.0.0.0~224.0.0.255范围作为组播地址,比如mDNS协议,就使用224.0.0.251固定地址。

单播
每次只有两个实体相互通信,发送端和接收端都是唯一确定的。

广播

  • 主机之间的一对多的通信
  • 所有的主机都可以接收到广播消息(不管你是否需要)
  • 广播禁止穿过路由器(只能做局域网通信)
  • 只有UDP可以广播
  • 广播地址 有效网络号+全是1的主机号
  • 192.168.50.123 -----》 192.168.50.255
  • 255.255.255.255    给所有的网段中的所有主机发送广播,也是只能做局域网通信
  • 需要相同端口

一.广播  (UDP协议)
广播地址:  主机号最大的地址;

以192.168.1.0 (255.255.255.0) 网段为例,最大的主机地址192.168.1.255代表该网段的广播地址 

前面介绍的数据包发送方式只有一个接受方,称为单播
如果同时发给局域网中的所有主机,称为广播
     (同一局域网内的主机都会接收到,如果其他主机没有加入广播站,就会将消息丢弃)

只有用户数据报(使用UDP协议)套接字才能广播
一般被设计为局域网搜索协议   

广播的发送者:
广播发送端创建流程
1)广播的发送端流程  ---》类似于UDP的客户端

socket                创建套接字
setsockopt         设置允许广播,默认是不允许的
填充接收方的结构体,给sendto使用,指定发送给谁
a。IP    (192.168.50.255/255.255.255.255)

b。端口号

sendto               发送数据

 

 

广播的接收者:(不需要设置为广播态)
广播接收端创建流程
2)广播的接收端流程  -----》类似于UDP服务器

socket                创建套接字
填充结构体,
ip:广播ip;
0.0.0.0(将本机所有可用的IP都绑定到套接字上:192.168.50.58,127.0.0.1(本地回环))(本地回环地址给自己发送,本地自测,不走网卡)
端口号,一台主机只能打开一个服务器只用同一个端口号
bind
recv

广播的缺点: 
广播方式发给所有的主机,过多的广播会大量的占用网络带宽,造成广播风暴,影响正常的通信;

组播
广播是给网段内的所有机器发消息     占用网络带宽,影响正常通信
单播是一对一的 
主机之间一对一组的通信模式,也就是说只要加入了同一个小组,那就可以收到发送端的消息
组播地址:D类的224.0.0.1~~239.255.255.255
224.10.10.10(相当于组名)

。单播方式只能发给一个接收方

。 组播是一个人发送,加入到多播组的主机接收数据

。 多播方式既可以发给多个主机,又能避免像广播一样造成过多的负载:

  第一字节的前四位固定为 1110  

         D类IP  :    224.0.0.1  -  239.255.255.255

                        224.10.10.10

 

socket    创建套接字
填充结构体,给sendto函数使用,指定接收方
IP:组播ip(224.0.0.0~~239.255.255.255)
PORT:与接收方绑定的一致
sendto 发送数据

代码 

广播接收端

 

广播发送端

 

组播发送端

 

组播接收端

 

到此这篇udp广播和组播区别(udp广播和单播)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • qq实名需要手机号验证吗(qq实名认证需要吗)2025-01-19 15:18:05
  • sshd免密登录(ssh免密钥登录)2025-01-19 15:18:05
  • 天气预报 接口(天气预报接口调用)2025-01-19 15:18:05
  • pdfView和普通版区别(pdfview和pdf的区别)2025-01-19 15:18:05
  • ssh免密码登录配置不起作用(配置ssh免密码登陆)2025-01-19 15:18:05
  • 安装统信操作系统(统信操作系统怎么安装)2025-01-19 15:18:05
  • 汾怎么读(汾酒怎么读)2025-01-19 15:18:05
  • 拆包英文(拆包 英文)2025-01-19 15:18:05
  • spss 27(spss 27安装程序错误)2025-01-19 15:18:05
  • dex反混淆工具安卓(dex反编译工具安卓版)2025-01-19 15:18:05
  • 全屏图片