版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、广播与多播,课程目标,广播的概念与实现 多播的概念与实现,广播与多播概述,单播广播与多播,之前学习使用UDP与TCP处理的都是单播。 单播只允许一台主机进程与另一台主机一对一地通信. 如果一台主机需要与多台主机一对多地通信,就要使用多广播与多播. 简单地说,单播是一台主机向另外一台主机发送数据;广播是一台主机向本子网内的所有主机发送数据;多播是在单播和广播之间提供一种折衷方案,数据只发往网络中的部分主机. TCP只支持单播. 利用UDP可以实现广播与多播.,广播的概念与实现,广播的用途,假定服务器主机在本地局域网上,但不知道它的单播IP地址时对它进行定位,即进行资源发现。 当有多个客户和单个服
2、务器通信时,减少局域网上的数据流量。 使用广播的因特网应用的例子: ARP协议通过链路层广播定位具有指定IP地址的主机的MAC地址 主机通过广播向DHCP服务器申请IP地址,广播地址,子网广播地址 所有主机号全为1的IP地址是子网广播地址。 向子网广播地址发送的数据报,子网内的所有主机都能收到。 子网广播数据报不会被路由器转发。 受限广播地址 255.255.255.255地址为受限广播地址。 受限的意思是路由器不会转发该地址的IP数据报。 BOOTP和DHCP服务器就是利用这个地址为发出IP地址广播申请的主机分配IP地址 。 链路层广播地址 MAC地址全1的地址,即FF:FF:FF:FF:F
3、F:FF。 带有这样目的MAC地址的帧经过任何该子网上的主机时,都会被其链路层接收。 ARP就是利用这个地址发出广播来确定具有指定IP地址对应主机的MAC地址。,广播过程,sendto 目的IP=128.7.6.255 目的端口=5000 发送应用进程 接收应用进程 | | 端口=5000 | | | | UDP层 协议= UDP UDP 层-丢弃 协议= UDP UDP层 | | | | IPV4层 帧类型=0800 IPV4层 帧类型=0800 IPV4层 |_ _| | | 数据链路层 数据链路层 数据链路层 | 00:04:ac:17:bf:38 | 00:0a:95:87:bc:55
4、 | | | | _ |_ |_ |_ 子网128.7.6 | host1 | host2 -以太网头 | IPV4头 | UDP头 | UDP数据- MAC=ff:ff:ff:ff:ff:ff 目的IP=128.7.6.255 目的端口=5000 类型=0800 协议=UDP,广播的实现,广播只需要更改UDP客户端。 UDP客户端广播包跟发送普通的UDP包没有什么区别,但是要注意两点: 发送前,要设置广播选项 发送地址不是某一台机器的IP,而是整个网络的广播地址(如192.168.0.255),int bBroadcast=1; setsockopt(s,SOL_SOCKET,SO_BROA
5、DCAST,(const char*),UDP广播客户端实例,#include #include #include #include #include #include #include #include int main(int argc, char *argv) struct sockaddr_in s_addr; int sock; int addr_len; int len; char buff128; int yes; /* 创建 socket */ if (sock = socket(AF_INET, SOCK_DGRAM, 0) = -1) perror(socket); exi
6、t(errno); else printf(create socket.nr); /* 设置通讯方式对广播,即本程序发送的一个消息,网络上所有主机均可以收到 */ yes = 1; setsockopt(sock, SOL_SOCKET, SO_BROADCAST, ,多播的概念与实现,多播的用途,单播和广播是两个极端,要么一个,要么全部。 多播提供一种折衷方案,多播数据报仅由对该数据报感兴趣的接口接收。 广播一般局限于局域网。 而多播既可以用于局域网也可以跨越广域网。,加入多播组,主机要接收多播数据必须预先加入多播组。 IP多播组由特定IP地址来区分。 进程通过把UDP套接字(SOCK_DG
7、RAM类型)绑定到一个多播组的IP地址,并设置相应的套接字选项,就可以加入这个多播组。 设置套接字选项通知网络接口该多播地址上到来的消息应该被传送给这个套接字。 如果同一台机器上有多个进程加入该组,则网络接口会把每个消息复制给所有这些进程。,多播地址,多播是通过D类地址进行的。 D类地址的前4位是1110,后面28位是多播的组标识。 多播地址范围是224.0.0.0 239.255.255.255。 224.0.0.1为全主机组,支持多播的主机必须加入全主机组。 224.0.0.2为全路由组,支持多播的由器必须加入全路由组。 多播组按照多播范围(多播的消息会从源开始被传送多远)被分为四类: 链
8、路-本地多播地址:224.0.0.0 224.0.0.255 这些地址是给那些在网络拓扑的最底层相连的机器的。 多播路由器不会转发这些地址的多播消息。 全局多播地址:224.0.1.0 238.255.255.255 该地址范围内的消息应该被所有多播路由器传播。 管理范围内的多播地址:239.0.0.0 239.255.255.255 这些地址用在专门组织内部,并且不应该被传递到组织范围之外。 多播IP地址与多播MAC地址的转换 多播MAC地址前24位固定为:00000001 00000000 01011110 多播MAC地址第25为固定为0 多播MAC地址后23位取多播IP地址后23位,IP
9、地址 11100000 10000000 00000001 00000001 MAC址 00000001 00000000 010111100 0000000 00000001 00000001 01 00 5e,多播过程,sendto 目的IP=224.0.1.1 目的端口=5000 发送应用进程 接收应用进程 | 端口=5000 | | | UDP层 UDP 层 协议= UDP UDP层 | | | IPV4层 IPV4层 帧类型=0800 IPV4层 加入224.0.1.1多播组 | | | 数据链路层 数据链路层 数据链路层 | | | 00:0a:95:87:bc:55 | | |
10、IP层提示接收MAC为01:00:5e:00:00:01的帧 _ |_ |_ |_ | host1 | host2 -以太网头 | IPV4头 | UDP头 | UDP数据- MAC=01:00:5e:00:01:01 目的IP=224.0.1.1 目的端口=5000 类型=0800 协议=UDP,多播的实现,多播只需要更改UDP服务器 UDP服务器需要接收某个多播组的多播数据必须预先加入该多播组: 多播选项 IP_ADD_MEMBERSHIP 加入一个多播组 IP_DROP_MEMBERSHIP 离开一个多播组 加入多播组 struct ip_mreq mltaddr; mtladdr.im
11、r_multiaddr.s_addr = inet_addr(224.0.1.1); mtladdr.imr_interface.s_addr = htonl(INADDR_ANY); setsockopt(udpfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, ,UDP多播实例,#include #include #include #include #include #include #include #include int main(int argc, char *argv) struct sockaddr_in peeraddr; struct in_addr ia
12、; int sockfd; char recmsgBUFLEN + 1; unsigned int socklen, n; struct ip_mreq mreq; /* 创建 socket 用于UDP通讯 */ sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd 0) printf(socket creating err in udptalkn); exit(1); /* 设置要加入组播的地址 */ bzero( ,思考题,广播与多播的比较 广播数据报的接收是被动的。 连接到子网上的所有主机都要接收广播数据报,这会增加网络流量,并且子网上的主机增加额外的负担。 多播数据报的接收是主动的。主机主动加入指定的多播组,才会接收该组的多播数据报。 采用多播方式可以只把数据报发送给对数据报感兴趣的主机。 发送广播数据报,只需要处理发送端。 只要将目的地址设置为网络的广播地址,设置套接字选项SO_BROADCAST。 发送多播数据报,只需要处理接收端。 多播数据报D类地址进行发送,在发送端不用进行套接字选项设置,但在接收端需要指出主机加入哪一个多播组。,课堂练习,封装通用因特网广播接口 int open_udp_brdcst(void); 创建一个udp客户端socket,并
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年财务试用期工作报告
- 2026年幼儿园保育员安全培训
- 2026年食品安全保障工作实施方案
- 2026年饭店安全生产应急预案演练方案
- 2026年小学综合实践创意主题活动
- 2026年校园内人身安全案例
- 2026年开学安全防范演练方案
- 2026年大学生绿色设计大赛
- 供气协议书及安全协议书
- 2026年人教版高二第二学期英语期末普通基础测评试卷(附答案可下载)
- 精密与特种加工技术(第3版) 课件全套 第1-10章 绪论 - MEMS及纳米加工技术
- 2025年湖北省中考地理试卷(含答案)
- 2025年山东省高考招生统一考试高考真题生物试卷(真题+答案)
- 贷款夫妻还贷协议书
- 国家保密知识培训课件
- 拼多多客服培训课件
- 国家能源集团招聘笔试题库2024
- JCT 2126.1-2023 水泥制品工艺技术规程 第1部分:混凝土和钢筋混凝土排水管 (正式版)
- JBT 1306-2024 电动单梁起重机(正式版)
- TCALC 003-2023 手术室患者人文关怀管理规范
- 国家开放大学《城市管理学》期末复习题参考答案
评论
0/150
提交评论