一. 广播和多播仅应用于UDP,它们对需要将报文同时传送到多个接收者的应用来说十分重要。TCP是一个面向连接的协议,它意味着分别位于两主机(由两个IP地址确定)内的两个进程(由端口号确定)间存在一条连接。
链路层也有一个“广播”,但是不是这里的这个广播。
二. 主机对由信道传送过来的帧的处理过滤过程:
首先,网卡查看由信道传送过来的帧,确定是否接收该帧,若接收后就将它传往设备驱动程序。通常网卡仅接收那些目的地址为网卡物理地址或广播地址的帧(注意这里的地址是MAC地址),目前多数网卡也能接收目的地址为多播地址或者子网多播地址的帧。对于以太网,当地址中最高字节的最低位设置为1时,表示该地址是一个多播地址,用十六进制表示为01:00:00:00:00:00(以太网广播地址ff:ff:ff:ff:ff:ff可以看做是以太网多播地址的特例),注意这里的地址都是指链路层的MAC地址。另外,多数接口均被设置为混合模式,这种模式能够接收每个帧的一个复制。(tcpdump使用这种模式)
如果一个网卡接收到一个帧,如果帧检验和错误,那么直接丢弃,否则这个帧将传送给设备驱动程序。
设备驱动程序将进行另外的帧过滤。首先,帧类型必须指定要使用的协议,其次,进行多播过滤来检测该主机是否属于多播地址说明的多播组。
设备驱动程序将数据传送给下一层(网络层)。比如,当帧类型指定为IP数据报时,就传往IP层。IP根据IP地址中的源地址和目的地址进行更多的过滤检测。如果正常,就将数据报传送给下一层(如TCP或UDP)
每次UDP收到IP传送过来的数据报,就根据端口号,有时还有源端口号进行数据报的过滤。如果当前没有进程使用该目的端口号,就丢弃该数据报并产生一个ICMP不可达报文(TCP类似)。如果UDP数据报存在检验和错,将被丢弃。
由上可知,使用广播的问题在于它增加了对广播数据不感兴趣的主机的处理负荷。一个广播要到经过传输层处理(TCP或UDP)后才知到是否是自己需要的。而使用多播可以在设备驱动程序处理时(链路层)就将不感兴趣的帧丢弃掉。
一个主机可以加入多个多播组。网卡将获悉该主机属于哪个多播组,然后仅接收主机所在多播组的那些多播帧。
三. 广播
255.255.255.255是受限的广播地址。路由器不转发这样的广播,这种广播只存在于本地网络中。
路由器必须转发指向网络的广播,但是它也必须有一个不进行转发的选择。
指向子网的广播地址和指向所有子网的广播地址需要了解子网掩码。
广播是一种应该谨慎使用的功能。在许多情况下,IP多播被证明是一种更好的选择。
四. 多播
多播提供两类服务:
1)向多个目的地址传送数据。
2)客户对服务器的请求。例如无盘工作站需要确定启动引导服务器。目前这项服务通过广播来进行,但是使用多播可以降低不提供这种服务的主机的负载。
多播的地址:D类地址
前四位为1110,后面的28位全部用来表示多播组ID,而不再表示其他。它们的范围是244.0.0.0 ~ 239.255.255.255
多播地址到以太网地址的转换:
通过将其低23bit映射到响应的以太网地址中以便实现多播组地址到以太网地址的转换。由于映射过程中多播组ID的高5位(28-23)被忽略了,所以地址映射不是唯一的,因此需要其他的协议实现额外的数据报过滤。
当把多播扩展到单个物理网络以外需要通过路由器转发多播数据报时,复杂性就增加了。需要有一个协议让多播路由器了解确定网络中属于确定多播组的任何一个主机。这个协议就是Internet组管理协议(IGMP)
分享到:
相关推荐
行业分类-设备装置-增强型多媒体广播和多播业务的传输方法
windows下使用UDP的简单实例,包括单播、广播和多播的实例代码,使用VS2010编写
广播和多播是基于UDP协议的两种消息发送机制.广播数据即从一个工作站发出,局域网内的其他所有工作站都能收到它.IP协议下,多播是广播的一种变形,IP多播要求将对收发数据感兴趣的所有主机加入到一个特定的组.
讲述了UDP程序的实现方法,并用C语言编程实现了一个UDP程序,该程序能实现广播功能和多播功能,能进行广播消息和多播消息的接发。通过本章的分析,想读者展示了UDP程序的实现过程,广播和多播的区别与共同点
网络基本知识,单播、多播和广播的比较
MFC实现的播和广播的例子……主要是udp发送和接收组播和广播包……
单播、广播、组播介绍单播、广播、组播介绍单播、广播、组播介绍单播、广播、组播介绍
本软件实现了两台甚至多台电脑之间使用UDP通信的功能,包括单播,广播,组播的功能实现,三种发送方式的切换在代码中已标明。 默认状态为本机发送,本机接受,也就是接收端的ip地址设置为127.0.0.1,用户可根据实际...
单播、组播、广播和任播有什么区别?
单播、组播、广播和任播有什么区别
整理的用Qt实现的三种Udp方式:单播、组播(多播)和广播源代码,可以很好的看出三种方式的发送接收的区别,简单直接一看就懂得干货。
在广播通信中,网络层提供了将网络层封包从1个节点发送到其他节点的服务; 多播可以使1个源节点发送的封包拷贝到其他多个特定网络节点的集合。
实现单播组播广播功能
VC6中,纯C使用SOCKET的示例。实现了UDP下的广播、组播(多播)。代码中注释较为丰富,适合学习使用。版本比较老,就免费了!
通过它们产生的背景噪声(即,它们的广播和多播流量)来被动地发现,扫描和指纹识别本地链接对等体
这是一个使用UDP协议进行广播和多播的程序。广播和多播是计算机网络中实现组播通信的两种方式。广播是将数据包发送到一个特定的IP地址,该地址被计算机网络中的所有主机所理解,而多播是将数据包发送到一个特定的IP...
通过它们产生的背景噪声(即它们的广播和多播流量)被动地发现、扫描和指纹链路本地对等点
详细地介绍单播 多播 组播的广播区别,适用于初学者。
这段代码是一个简单的基于UDP协议的广播(Broadcast)和多播(Multicast)示例程序。它演示了如何使用Winsock库在局域网内进行广播和多播消息的发送和接收。 1. `initial()`函数用于初始化全局变量。 2. `...