主机之间一对一的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制。如果10个客户机需要相同的数据,则服务器需要逐一传送,重复10次相同的工作。但由于其能够针对每个客户的及时响应,所以现在的网页浏览全部都是采用单播模式,具体的说就是IP单播协议。网络中的路由器和交换机根据其目标地址选择传输路径,将IP单播数据传送到其指定的目的地。
单播的优点:
1)服务器及时响应客户机的请求
2)服务器针对每个客户不通的请求发送不通的数据,容易实现个性化服务。
单播的缺点:
1)服务器针对每个客户机发送数据流,服务器流量=客户机数量×客户机流量;在客户数量大、每个客户机流量大的流媒体应用中服务器不堪重负。
2)现有的网络带宽是金字塔结构,城际省际主干带宽仅仅相当于其所有用户带宽之和的5%。如果全部使用单播协议,将造成网络主干不堪重负。现在的P2P应用就已经使主干经常阻塞。而将主干扩展20倍几乎是不可能。
2.多播:“多播”也可以称为“组播”,在网络技术的应用并不是很多,网上视频会议、网上视频点播特别适合采用多播方式。因为如果采用单播方式,逐个节点传输,有多少个目标节点,就会有多少次传送过程,这种方式显然效率极低,是不可取的;如果采用不区分目标、全部发送的广播方式,虽然一次可以传送完数据,但是显然达不到区分特定数据接收对象的目的。采用多播方式,既可以实现一次传送所有目标节点的数据,也可以达到只对特定对象传送数据的目的。IP网络的多播一般通过多播IP地址来实现。多播IP地址就是D类IP地址,即224.0.0.0至239.255.255.255之间的IP地址。Windows 2000中的DHCP管理器支持多播IP地址的自动分配。
主机之间一对一组的通讯模式,也就是加入了同一个组的主机可以接受到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。主机可以向路由器请求加入或退出某个组,网络中的路由器和交换机有选择的复制并传输数据,即只将组内数据传输给那些加入组的主机。这样既能一次将数据传输给多个有需要(加入组)的主机,又能保证不影响其他不需要(未加入组)的主机的其他通讯。
组播的优点:
1)需要相同数据流的客户端加入相同的组共享一条数据流,节省了服务器的负载。具备广播所具备的优点。
2)由于组播协议是根据接受者的需要对数据流进行复制转发,所以服务端的服务总带宽不受客户接入端带宽的限制。IP协议允许有2亿6千多万个组播,所以其提供的服务可以非常丰富。
3)此协议和单播协议一样允许在Internet宽带网上传输。
组播的缺点:
1)与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可以通过一定的容错机制和QOS加以弥补。
2)现行网络虽然都支持组播的传输,但在客户认证、QOS等方面还需要完善,这些缺点在理论上都有成熟的解决方案,只是需要逐步推广应用到现存网络当中。
3.广播:“广播”在网络中的应用较多,如客户机通过DHCP自动获得IP地址的过程就是通过广播来实现的。但是同单播和多播相比,广播几乎占用了子网内网络的所有带宽。拿开会打一个比方吧,在会场上只能有一个人发言,想象一下如果所有的人同时都用麦克风发言,那会场上就会乱成一锅粥。集线器由于其工作原理决定了不可能过滤广播风暴,一般的交换机也没有这一功能,不过现在有的网络交换机(如全向的QS系列交换机)也有过滤广播风暴功能了,路由器本身就有隔离广播风暴的作用。广播风暴不能完全杜绝,但是只能在同一子网内传播,就好像喇叭的声音只能在同一会场内传播一样,因此在由几百台甚至上千台电脑构成的大中型局域网中,一般进行子网划分,就像将一个大厅用墙壁隔离成许多小厅一样,以达到隔离广播风暴的目的。在IP网络中,广播地址用IP地址“255.255.255.255”来表示,这个IP地址代表同一子网内所有的IP地址。
主机之间一对所有的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其网络成本可以很低廉。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所有频道的信号,但只将一个频道的信号还原成画面。在数据网络中也允许广播的存在,但其被限制在二层交换机的局域网范围内,禁止广播数据穿过路由器,防止广播数据影响大面积的主机。
广播的优点:
1)网络设备简单,维护简单,布网成本低廉
2)由于服务器不用向每个客户机单独发送数据,所以服务器流量负载极低。
广播的缺点:
1)无法针对每个客户的要求和时间及时提供个性化服务。
2)网络允许服务器提供数据的带宽有限,客户端的最大带宽=服务总带宽。例如有线电视的客户端的线路支持100个频道(如果采用数字压缩技术,理论上可以提供500个频道),即使服务商有更大的财力配置更多的发送设备、改成光纤主干,也无法超过此极限。也就是说无法向众多客户提供更多样化、更加个性化的服务。
3)广播禁止允许在Internet宽带网上传输。
中间主机的以太网接口看到该帧,并将它的目的以太网与自己的以太网地址进行比较。由于二者不相等,接口便忽略该帧。因此,单播帧不会对这台主机造成任何额外开销。
右边主机的以太网接口也看到该帧。并将它的目的以太网与自己的以太网地址进行比较。发现二者相等,接口便读入该帧。
左边的主机发送的是广播数据报,其地址为128.7.6.255,当左边的主机发送数据报时,它注意到目的IP地址是子网广播地址,于是便将它映射成48位的以太网地址:ff.ff.ff.ff.ff.ff。这使得子网上的每一个以太网接口都会接收该帧。
由于是广播类型的数据报,右侧的两台主机都将数据报传递到IP层。但是由于中间的主机没有任何应用进程绑定相应的UDP端口,于是主机的UDP代码丢弃这个已收到的数据报。
以上的例子表明了广播存在一个根本问题:子网上所有未参与广播应用系统的主机也必须完成对数据报的协议处理,直至在UDP层将它丢弃。因此以高速率产生IP数据报的应用系统(例如音频、视频应用程序)会严重影响子网上其他主机的运行,而这类型的应用程序应该采用多播技术来解决该问题。
最右边主机绑定123端口,并加入多播组224.0.1.1,告诉数据链路接收以01:00:5e:00:01:01为目的的帧。最左边主机向IP地址224.0.1.1及端口123发送数据报。发送主机将帧映射到相应的以太网目的地址,并将帧发送出去。帧中同时包含目的以太网地址(由接口检查)和目的IP地址(由IP层检查)
中间主机忽略该帧,这是因为:
(1)帧的目的以太网地址与该主机接口地址不一致。
(2)帧的目的以太网地址不是广播地址。
(3)中间主机没有加入一个多播组。
该帧基于非完备过滤机制被右边的数据链路接收。这是因为我们告诉接口接收以某个具体以太网组地址为目的地址的帧时,它也可能接收以其他以太网地址为目的地址的帧。
数据链路接收该帧后再传送到IP层。由于该帧的目的地址为多播IP地址,IP层将该分组与我们的应用所加入的多播地址进行比较。如果是自己需要的分组就接收,否则就丢弃。
IP层继续把该分组传送到UDP层。UDP层将数据报传到绑定123端口的套接口上。这个过程称为完备过滤。
广播地址应用于网络内的所有主机
1)受限广播
它不被路由发送,但会被送到相同物理网络段上的所有主机
IP地址的网络字段和主机字段全为1就是地址255.255.255.255
2)直接广播
网络广播会被路由,并会发送到专门网络上的每台主机
IP地址的网络字段定义这个网络,主机字段通常全为1,如192.168.10.255
受限的广播地址
受限的广播地址是255.255.255.255该地址用于主机配置过程中IP数据包的目的地址此时主机可能还不知道它所在网络的网络掩码甚至连它的IP地址也不知道在任何情况下路由器都不转发目的地址为受限的广播地址的数据报这样的数据报仅出现在本地网络中
指向网络的广播
指向网络的广播地址是主机号为全1的地址A类网络广播地址为netid.255.255.255其中netid为A类网络的网络号一个路由器必须转发指向网络的广播但它也必须有一个不进行转发的选择
指向子网的广播
指向子网的广播地址为主机号为全1且有特定子网号的地址作为子网直接广播地址的IP地址需要了解子网的掩码例如如果路由器收到发往128.1.2.255的数据报当B类网络128.1的子网掩码为255.255.255.0时该地址就是指向子网的广播地址但如果该子网的掩码为255.255.254.0该地址就不是指向子网的广播地址
指向所有子网的广播
指向所有子网的广播也需要了解目的网络的子网掩码以便与指向网络的广播地址区分开指向所有子网的广播地址的子网号及主机号为全1例如如果目的子网掩码为255.255.255.0那么IP地址128.1.255.255是一个指向所有子网的广播地址然而如果网络没有划分子网这就是一个指向网络的广播
1. TCP/IP协议栈中, 传输层只有UDP可以广播.
2. 只能对同一子网内部广播, 广播数据包不经过路由器.
3. UDP的广播地址为255.255.255.255
4. 在winsock实现中, 有一个选项对应是否允许广播.
必须调用setsockopt打开该选项.
5. 打开后, 用sendto向255.255.255.255发送的数据包全部广播.
很多局域网都定义了一个特殊的保留地址, 称为广播地址. 当信息头中目的地址域的内容为广播地址时, 该帧被局域网上所有计算机接收. 这个过程称为广播.
合法的广播地址就是主机的网络地址加上最大的主机号网络地址通过机器的ip地址与子网掩码按位与得出我们以ip地址为10.78.202.175 子网掩码为255.0.0.0
为例来分析一下上面的几个概念
首先将这两个东西换算成二进制代码
ip地址00001010.01001110.11001010.10101111
子网掩码11111111.00000000.00000000.00000000
按位与之后得出网络地址00001010.00000000.00000000.00000000
十进制表示就是10.0.0.0
这个网络地址理论上可以有一亿多台主机