2025年udp的广播和组播(udp的广播和组播是什么)

udp的广播和组播(udp的广播和组播是什么)有些时候我们在网络通信中也需要用到 组播 多播 广播 现在我们来介绍如何实现 建议 在此之前 关闭防火墙 ubuntu service ufw stop windows 控制面板关闭 基本概念 单播 两个主机间单对单的通信 广播 一个主机对整个局域网上所有主机上的数据通信 网络地址全 1 单播和广播是两个极端 要么对一个主机进行通信 要么对整个局域网的主机进行通信 组播 实际情况下

大家好,我是讯享网,很高兴认识大家。



有些时候我们在网络通信中也需要用到 组播(多播)、广播。现在我们来介绍如何实现。

建议:在此之前,关闭防火墙。

基本概念

  1. 单播:两个主机间单对单的通信
  2. 广播:一个主机对整个局域网上所有主机上的数据通信(网络地址全1)

单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网的主机进行通信

  1. 组播:实际情况下,经常需要对一组特定的主机进行通信,而不是所有局域网上的主机
  • IP组播(也称多址广播或多播),是一种允许一台或多台主机发送数据包到多台主机的TCP/IP网路技术。
  • 多播是 IPv6 数据包的 3 种基本目的地址类型之一,多播是一点对多点的通信, IPv6 没有采用 IPv4 中的组播术语,而是将广播看成是多播的一个特殊例子。

多播组只能用UDP 或者原始套接字实现,不能用TCP。

广播地址

在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机。

传输层只有UDP可以广播 。

组播地址

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

  • 局部链接多播地址范围在 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,可限制多播范围。


    讯享网

组播地址与MAC地址的映射

使用同一个 IP 多播地址接收多播数据包的所有主机构成了一个主机组,也称为多播组。一个多播组的成员是随时变动的,一台主机可以随时加入或离开多播组,多播组成员的数目和所在的地理位置也不受限制,一台主机也可以属于几个多播组。

这个我们可以这样理解,多播地址就类似于 群号,多播组相当于 群,一个个的主机就相当于群里面的成员。

设备驱动程序就必须接收所有多播数据帧,然后对它们进行过滤,这个过滤过程是网络驱动或IP层自动完成。(设备驱动程序会对多播数据进行过滤,将其发到相应的位置)

组播应用

  1. 单点对多点应用

点对多点应用是指一个发送者,多个接收者的应用形式,这是最常见的多播应用形式。典型的应用包括:媒体广播、媒体推送、信息缓存、事件通知和状态监视等。

  1. 多点对单点应用

多点对点应用是指多个发送者,一个接收者的应用形式。通常是双向请求响应应用,任何一端(多点或点)都有可能发起请求。典型应用包括:资源查找、数据收集、网络竞拍、信息询问等。

  1. 多点对多点应用

多点对多点应用是指多个发送者和多个接收者的应用形式。通常,每个接收者可以接收多个发送者发送的数据,同时,每个发送者可以把数据发送给多个接收者。典型应用包括:多点会议、资源同步、并行处理、协同处理、远程学习、讨论组、分布式交互模拟(DIS)、多人游戏等。

多播程序框架主要包含套接字初始化、设置多播超时时间、加入多播组、发送数据、接收数据以及从多播组中离开几个方面。其步骤如下:

1)建立一个socket。

2)然后设置接收方多播的参数,例如超时时间TTL、本地回环许可LOOP等。

3)设置接收方加入多播组。

4)发送和接收数据。

5)从多播组离开。

我们需要用到 setsocket 函数 ,使用这些参数:

c

 
  
讯享网

level :

  • IPPROTO_IP

optname:

  • IP_MULTICAST_LOOP 支持多播数据回送
  • IP_ADD_MEMBERSHIP 加入多播组
  • IP_DROP_MEMBERSHIP 离开多播组

默认情况下,当本机发送组播数据到某个网络接口时,在IP层,数据会回送到本地的回环接口,选项IP_MULTICAST_LOOP用于控制数据是否回送到本地的回环接口。

使用IP_ADD_MEMBERSHIP选项每次只能加入一个网络接口的IP地址到多播组,但并不是一个多播组仅允许一个主机IP地址加入,可以多次调用IP_ADD_MEMBERSHIP选项来实现多个IP地址加入同一个广播组,或者同一个IP地址加入多个广播组。

optval:

  • IP_MULTICAST_LOOP 选项对应传入 unsigned int 来确认是否支持多播数据回送
  • IP_ADD_MEMBERSHIP 传入 ip_mreq
  • IP_DROP_MEMBERSHIP 传入 ip_mreq

组播例程

group_client.c

c

讯享网

group_server.c

c

 

广播的实现比较简单,只需要设置socket允许广播(想广播的终端设置即可),然后在发送数据前指定为广播地址即可。我们直接看例程吧。

boardcast_client.c

c

讯享网

boardcast_server.c

 

如果说我的文章对你有用,只不过是我站在巨人的肩膀上再继续努力罢了。
若在页首无特别声明,本篇文章由 Schips 经过整理后发布。
博客地址:https://www.cnblogs.com/schips/

基于 UDP 的 组播、广播详解 - 黄树超 - 博客园 (cnblogs.com)


小讯
上一篇 2025-05-04 12:41
下一篇 2025-05-04 19:59

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/153507.html