05m.网络层多播
- 格式:pdf
- 大小:335.21 KB
- 文档页数:33
1.概念单播是用于两个主机之间传送数据,广播是一个主机对局域网内的所有主机发送数据。
而多播,又称为组播,它是对一组特定的主机通信。
将网络上同一类型业务逻辑上分组,只和组内的成员通信,其它主机没有加入组则不能通信。
与单播相同的是,组播允许在Internet上通信,而广播只是同一局域网内的主机通信。
组播地址是特定的,D类地址用于组播,即244.0.0.0到239.255.255.255. 并划分为局部连接多播地址,预留多播地址和管理权限多播地址3类。
(1)局部多播地址(224.0.0.-224.0.0.255)为路由协议和其它用途保留的地址,路由器不转发此范围的IP包(2)预留多播地址(224.0.1.0-238.255.255.255)可用于全球范围内或网络协议(3)管理权限的多播(239.0.0.0-239.255.255.255) 可供组织内使用,类型于私有IP,不用于Internet,可限制多播范围2. 多播套接字设置可用setsockopt或getsockopt设置或得到多播选项. 常用的多播选项如下所示:IP_MULTICAST_TTL 设置多播的TTL值IP_MULTICAST_IF 获取或设置多播接口IP_MULTICAST_LOOP 禁止多播数据回送到本地loop接口IP_ADD_MEMBERSHIP 将指定的接口加入多播IP_DROP_MEMBERSHIP 退出多播组struct ip_mreq{struct in_addr imn_multicastaddr;//多播组地址struct in_addr imr_interface;//加入的接口的IP地址}int ttl=255;setsockopt(s,IPPROTO_IP,IP_MULTICAST_TTL,&ttl,sizeof(ttl));//设置跳数s-套接字描述符PROTO_IP-选项所在的协议层IP_MULTICAST_TTL-选项名&ttl-设置的内存缓冲区sizeof(ttl)-设置的内存缓冲区长度struct in_addr in;setsockopt(s,IPPROTO_IP,IP_MUTLICAST_IF,&in,sizeof(in));//设置组播接口int yes=1;setsockopt(s,IPPROTO_IP,IP_MULTICAST_LOOP,&yes,sizeof(yes));//设置数据回送到本地回环接口struct ip_mreq addreq;setsockopt(s,IPPROTO_IP,IP_ADD_MEMBERSHIP,&req,sizeof(req));//加入组播组struct ip_mreq dropreq;setsockopt(s,IPPROTO_IP,IP_DROP_MEMBERSHIP,&dropreq,sizeof(dropreq));//离开组播组3. 多播程序的设计流程(1)建立socket(2)设置TTL值IP_MULTICAST_TTL(3)设置是否允许本地回环IP_MULTICAST_LOOP(4)加入多播组IP_ADD_MEMBERSHIP(5)发送数据send(6)接收数据recv(7)退出多播组IP_DROP_MEMBERSHIP注意: TCP协议也不能用于多播.4. 多播实例服务器端不停的向加入多播组的主机发送数据.服务器:#include <sys/socket.h>#include <sys/types.h>#include <string.h>#include <stdlib.h>#include <stdio.h>#include <arpa/inet.h>/**广播与多播只支持UDP协议,因为TCP协议是端到端,这与广播与多播的理念相冲突广播是局域网中一个主机对所有主机的数据通信,而多播是一个主机对一组特定的主机进行通信.多播可以是因特网,而广播只能是局域网。
计算机网络第五章第五章网络层5.1网络层设计问题网络层任务:存储转发数据包互换,向传输层提供更多服务。
紧紧围绕这一任务,在设计网络层时,internet社团与电话公司为代表的社团进行了争议,internet社团指出:网络必须就是不可信的,错误掌控与流量掌控均必须由主机顺利完成,电话公司阵营任务:网络必须就是可信的,面向相连接的服务。
并无相连接服务的同时实现:ip(internetprotocol)就是整个internet的基础,每个数据包随身携带一个目标的ip地址,路由器采用该地址去单独留言每一个数据包。
面向连接服务的实现:存在一个重要过程标签交换(labelswitching)。
例子:多协议标签交换(mpls,multiprotocollabelswitching),主要用于internet的isp网络,mpls往往对客户是隐藏的,isp用它来为超大流量建立长期的连接。
备注:没绝对一说道,中庸之道就是很存有道理的,什么东东都会存有用武之地,不要那么极端嘛!5.2路由算法路由算法就是网络层的重中之重,(在书中的第一部分就说道了,本章高度关注的就是算法,所以我还买了一本《算法导论》),它就是网络层软件的一部分,它负责管理确认一个入境数据包必须被发送到哪个输出线路上,因此路由和留言这就是两个功能。
路由算法必须满足用户的特性:正确性,直观性,鲁棒性,稳定性,公平性和有效性!(这里面存有相互矛盾的目标)。
算法分类:(1)非自适应性算法(nonadaptivealgorithm),也表示静态路由(staticrouting),适应环境于路由挑选非常确切的场合。
(2)自适应性算法(adaptivealgorithm),也表示动态路由(dynamicrouting)。
下面的路由算法均就是基于流形水平结构展开路由决策的。
最短路算法:这里涉及到每一条边的权重,这个衡量的因素很多,包括:跳数,物理距离,距离,带宽,平均流量,通信成本,平均延迟等。
多播路由规则主要依赖于网际组管理协议(IGMP)和多播路由选择协议来实现。
多播路由的工作原理涉及以下几个关键方面:
1. 网际组管理协议(IGMP):这是一种让多播路由器知道本地局域网上是否有主机加入或离开某个多播组的协议。
多播组成员通过IGMP向最近的多播路由器注册,表明自己属于某个特定的多播组。
2. 多播路由选择协议:这是用于确定多播数据从源到所有组成员的最佳路径的协议。
这些协议确保多播数据能够以最小的成本传送给所有组成员。
由于多播路由选择协议需要同时考虑多个目的地,因此它们比单播路由选择协议更为复杂。
3. 多播树的动态更新:理想的多播路由算法会构建一棵仅覆盖多播组成员的树,并且这棵树能够随着组成员的变化而动态更新。
这样可以最小化传输延迟和网络资源的使用。
4. 多播地址:在IPv4中,多播地址块被指定为224.0.0.0/4,这个地址块包含了超过2亿个可能的地址。
某些地址被保留用于特定类型的通信,例如本地网络控制或协议控制通信量。
此外,在云服务提供商如AWS中,多播路由还涉及到网络访问控制列表(ACL)和安全组规则的配置,以确保多播流量的正确传递和安全性。
网络层技术是计算机网络中的一个重要组成部分,它负责将数据包从源主机传输到目标主机。
而多路径路由是一种实现网络通信的方法,通过同时利用多条路径来传输数据,提高网络的带宽利用率和数据传输效率。
本文将探讨如何利用网络层技术实现多路径路由。
一、背景介绍在传统的网络通信中,数据包通常只能通过单条路径进行传输,这使得网络的带宽利用率受限,同时也容易出现拥塞和丢包等问题。
而多路径路由技术可以克服这些问题,通过同时利用多条路径来分担数据的负载,提高网络的整体性能。
二、多路径路由协议多路径路由协议是实现多路径路由的关键,它负责确定数据包在网络中的传输路径。
目前,常用的多路径路由协议有ECMP(Equal-Cost Multipath)和MPTCP(Multipath TCP)。
1. ECMPECMP是一种基于最短路径算法的多路径路由协议。
它通过在路由器中设置多个等距的路径,将数据包按照一定的规则进行分发,从而实现负载均衡和冗余路径。
ECMP协议不需要对网络拓扑进行任何修改,只需在路由器的转发表中设置多个路径即可。
然而,ECMP协议在决策转发路径时只考虑路径长度,没有考虑网络的拥塞情况,可能会导致有些路径负载过大,而有些路径负载较轻。
2. MPTCPMPTCP是一种基于TCP协议的多路径路由协议,它通过在传输层上实现多条TCP连接的同时传输,从而实现多路径路由。
MPTCP协议在建立连接时,会向对方发送多条TCP的SYN报文,建立多个子连接,并通过子连接之间的协调共享数据。
MPTCP协议可以根据网络拥塞情况动态调整数据的传输路径,从而实现负载均衡和冗余路径。
然而,MPTCP协议需要在操作系统和应用层进行相应的支持,对于已经使用TCP协议的应用来说,需要进行一定的改进和适配。
三、实现多路径路由的关键技术实现多路径路由需要借助一些关键的技术手段,包括:1. 路径测量:对网络中的路径进行测量,获取路径的性能指标,包括延迟、带宽、丢包率等。
网络基础知识讲座十九:了解多播路由协议多播在历史上已不只一次成为时髦用语。
IP多播指的是一个发送者向多个接收者发送数据,但只需发送一份数据副本。
多播对流媒体非常有用,所以我们来研究一下它的工作原理。
多播很象广播,多播数据被分配一些特定的地址。
两者的区别在于,一些多播地址可以被路由,并使用在Internet上。
IANA(Internet 地址分配机构)为多播预留的地址空间是224.0.0.0/4,我们现在不再说“D类”地址了。
224/4的地址范围是从224.0.0.0一直到239.255.255.255。
多播比广播更具效率,因为广播数据包必须由本地链路上每台电脑接收,而每个操作系统都会生成一个中断,以便对收到的数据包进行检查,这个过程中通常会复制一些数据。
而在多播时,网卡并不会接收这些数据包,除非它被告知需要接收。
缺省情况下,启用了多播功能的网络接口卡(NIC)在引导时只会侦听224.0.0.1上的数据,这个地址被赋给了“该子网上的所有系统”。
是的,这与广播非常相似,事实上很多人认为广播就是多播的一种特殊情况。
通过设置网卡是否忽略多播内容,多播可以选择传送的目的对象,这是本地链路的工作方式,但Internet是怎样做的呢?如果有人想通过多播向非洲传送一个名人孩子出生的流数据,我们并不想让Internet 上的每一台路由器都消耗带宽把它传送到每台电脑。
除了通过设置本地NIC做出决策外,还有一些多播路由机制可以“修剪”某些子网。
如果你的网络中没有人想看这些信息,那么就没有理由让它进入你的网络。
那些对这一信息感兴趣的人可以运行一个特别的程序,该程序会依次告诉NIC去加入一个多播组。
NIC利用Internet组管理协议(IGMP)提醒本地多播路由器,它想加入一个特定的组。
不过这只能单向实现(只能接收多播数据)。
如果有人想发送和接收多播的信息,那么IP层就需要更高的技巧。
为了发送数据,IP协议会把一个IP地址映射到一个以太网地址上,并把它告诉网卡驱动程序,以便用另一个MAC(媒体访问控制)地址配置网卡。
组播地址IP组播地址,或称为主机组地址,由D类IP地址标记。
D类IP地址的最高四位为“1110”,起范围从224.0.0.0到239.255.255.255。
如前所述,部分D 类地址被保留,用作永久组的地址,这段地址从224.0.0.0-224.0.0.255。
比较重要的地址有:224.0.0.1-网段中所有支持组播的主机224.0.0.2-网段中所有支持组播的路由器224.0.0.4-网段中所有的DVMRP路由器224.0.0.5-所有的OSPF路由器224.0.0.6-所有的OSPF指派路由器224.0.0.9-所有RIPv2路由器224.0.0.13-所有PIM路由器临时主机组的组播地址由网络管理员选择,他需要保证这个地址在一定的范围内没有其他的主机组在使用这个组播地址。
第2层的组播地址(组播MAC地址)可以从IP组播地址中衍生。
计算方法是把IP地址的最后23位拷贝到MAC地址的最后23位,然后把这23位前面的那一位置为0。
MAC地址的前24位必须为0x01-00-5E。
例如:组播IP地址224.0.1.128,16进制表示为0xE0-00-01-10,最低的23位为0x00-01-10,计算得出的MAC地址为:0x01-00-5E-00-01-10。
3.1IP组播地址分配不像单播IP地址唯一地识别单个IP主机,组播IP地址指定一任意的IP主机组,其IP主机已经加入组并且希望接收发往该组的信息。
在组播通信中,我们需要两种地址:一个IP组播地址和一个Ethernet组播地址。
其中,IP组播地址标识—个组播组。
由于所有IP数据报都封装在Ethernet帧中,所以还需要一个组播Ethernet地址。
为使组播正常工作,主机应能同时接收单播和组播数据,这意味着主机需要多个IP和Ethernet地址。
在组播网内,一个组播群组指定为一个D类地址。
组播地址的是:224.0.0.0到239.255.255.255,并被划分为局部链接组播地址、预留组播地址和管理权限组播地址三类。
广播、多播介绍我们曾提到有三种IP地址:单播地址、广播地址和多播地址。
本章将更详细地介绍广播和多播。
说明:单播地址:目的为单个主机广播地址:目的端为给定网络上的所有主机多播地址:目的端为同一组内的所有主机广播和多播仅应用于UDP,因为它们需将报文同时传往多个接收者。
而TCP是一个面向连接的协议,它意味着分别运行于两主机(由IP地址确定)内的两进程(由端口号确定)间存在一条连接。
为了弄清广播和多播,需要了解主机对由信道传送过来帧的过滤过程。
图1说明了这一过程。
图1:协议栈各层对收到帧的过滤过程首先,网卡查看由信道传送过来的帧,确定是否接收该帧,若接收后就将它传往设备驱动程序。
通常网卡仅接收那些目的地址为网卡物理地址或广播地址的帧。
然而,多数接口均有被设置为混合模式的选项,这种模式能接收每个帧的一个复制。
设备驱动程序将进行另外的帧过滤。
首先,帧类型中必须指定要使用的协议( IP、ARP等等)。
其次,进行多播过滤来检测该主机是否属于多播地址说明的多播组。
设备驱动程序随后将数据帧传送给下一层,比如,当帧类型指定为I P数据报时,就传往IP层。
IP根据IP地址中的源地址和目的地址进行更多的过滤检测。
如果正常,就将数据报传送给下一层(如TCP或UDP)。
每次UDP收到由IP传送来的数据报,就根据目的端口号,有时还有源端口号进行数据报过滤。
如果当前没有进程使用该目的端口号,就丢弃该数据报并产生一个ICMP不可达报文(TCP根据它的端口号作相似的过滤)。
如果UDP数据报存在检验和错,将被丢弃。
使用广播的问题在于它增加了对广播数据不感兴趣主机的处理负荷。
拿一个使用UDP广播应用作为例子。
如果网内有50个主机,但仅有20个参与该应用,每次这20个主机中的一个发送UDP广播数据时,其余30个主机不得不处理这些广播数据报。
一直到UDP层,收到的UDP广播数据报才会被丢弃。
这30个主机丢弃UDP 广播数据报是因为这些主机没有使用这个目的端口。