【计算机网络】网络层


站长推荐:程序员必备10TBJava大数据机器学习人工智能从入门到精通视频教程下载


网络层是协议栈中最复杂的层次之一。

网络层的功能即将分组从一台主机发送到接收主机。这需要网络层协议提供两种功能:

转发。当分组到达路由器时,路由器必须将分组转发到适合的输出链路。

路由选择。当分组从发送方流向接收方时,网络层必须决定这些分那组所采用的路由或路径。计算这些路径的算法称为路由选择算法。

连接建立。就像TCP需要三次握手一样,以类似的方式,某些网络层体系要求从源到目的地沿着所有选择的路径彼此握手,以便在给定源到目的地连接中的网络层数据分组能够开始流动之前建立起状态。


每台路由器具有一张转发表,路由器通过检查到达分组首部字段的值(可能是目的地址或者该分组所属连接的指示),在转发表中索引查询,得到对应的输出链路接口。


因特网的网络层提供了单一的服务,即尽力而为服务。分组间的定时是不能确保被保证的,顺序也不能保证和发送顺序一样,分组也不保证最终能够交付。然而并不是说网络层的协议就都是这样,其他的网络结构体系如ATM体系提供了多重服务模型可以保证有序,有的保证恒定速率,有的保证最小速率等。


计算机网络的两种基本类型:虚电路网络和数据报网路。

虚电路(Virtual-Circuit,VC)网络:仅在网络层提供连接服务的计算机网络。

数据报网络:仅在玩过曾提供无连接服务的计算机网络。


虚电路网络的组成

①   源和目的主机之间的路径。

②   VC号,沿着该路径的每段链路的一个号码。

③   沿着该路径的每台路由器中的转发表表项。属于一条虚电路的分组将在它的首部携带一个VC号。


它的转发表可能如下:

入接口    入VC号   出接口   出VC号

 1              12           2               22

 2              63           1               18

 3              7             2                17

 4             97            3               87

……

你可能会发现一个分组沿着其路由并不简单保持相同的VC号,这是因为通过允许沿着该虚电路路径每条链路有不同的VC号,大大简化了虚电路的建立,每条链路能够独立于沿着该链路的其他链路选择的号码选择一个VC号。如果要求所有路径上所有VC号有一样,那么路由器将不得不交换大量的报文来约定一个共同的VC号。(比如一个并未由这些路由器的其他现有虚电路使用的号码)

无论何时跨越一台路由器创建一条新的虚电路,转发表就增加一个新表项。

无论何时终止一条虚电路,沿着该路径每个表中的相应项将被删除。


虚电路三个阶段:

①   虚电路建立。建立阶段,发送方制定接收方地址,等待网络建立虚电路。网络层决定发送方与接收方之间的路径,也为每条链路决定一个VC号,最后网络层沿着路径的每台路由器的转发表中增加一个表项。

②   数据传送。一旦建立的虚电路,分组就可以开始沿着该虚电路流动了。

③   虚电路拆除。当任何一方通知网络层希望终止时,将通知网络另一侧的端系统结束呼叫,并更新路径上每台路由器中的转发表以表明该虚电路已经不存在了。


TCP的连接建立与虚电路的连接建立的区别:

TCP的连接建立仅涉及两个端系统。而虚电路网络层在两个端系统之间路径上的所有路由器都要参与虚电路的建立,每台路由器都完全知道经过它的所有虚电路。


在数据报电路中,每当一个端系统要发送分组,就为该分组加上目的端系统的地址,然后将分组推进网络中,通过一系列路由器来传递到达目的地。路由器通过什么来得知向哪个路由器转发呢?在路由器中有一个转发表。转发表使用分组的目的地址的前缀与该表中的表项进行匹配。如果匹配,路由器就向匹配项联系的链路转发分组。转发表是通过路由选择算法进行修改的,通常每1到5分钟更新一次转发表。转发表能够在任何时刻修改,从一个端系统到另一个端系统发送分组,可能在通过网络时走不同的路径,并可能无序到达。

 

路由器工作原理:

一个路由器由几部分功能组成,分别是输入端口,交换结构,输出端口,路由选择处理器。


输入端口:

将一条输入的物理链路与路由器相连接。并且负责完成查找功能,通过查询转发表决定路由器的输出端口。转发表的一份影子副本通常会被存放在每个输入端口中,这样无需调用中央路由选择处理器,转发决策也能在输入端口本地做出,避免了集中式处理的瓶颈。如果来自其他输入端口的分组当前正在使用交换结构,一个分组可能会在加入交换结构时被暂时阻塞,被阻塞的分组在输入端口处排队,等待调度。如果交换结构不能快得使所有到达分组无时延的通过它传送,则在输入端口出现分组排队。一种典型的阻塞现象叫做输入排队交换机中的线路前部(HOL,Head-Of-Line)阻塞。假如两个输入队列前端的两个分组要发往同一个输出端口,其中一个被阻塞,然而排在这个被阻塞的分组之后的要发往另外一个输出端口的一个分组,却因为前面的分组被阻塞而无法发送。HOL阻塞是导致输入队列长度增大的一个重要原因。


交换结构:

将路由器的输入端口与输出端口相连接。完全包含在路由器中。交换可以由多种方式完成。如经内存交换,经总线交换,经互联网络交换。


输出端口:

储存从交换结构接收的分组,通过执行必要的链路层和物理层功能在输入链路上传输这些分组。同时在输出端口也实现了缓存管理。(当缓存空间被耗尽时,便出现所谓的丢包,正是在一台路由器的这些队列中,这些分组被实际丢弃或者丢失)。在输出端口上的一个分组调度程序在这些排队的分组中选出一个来发送。在某些情况下,在缓存填满前便丢弃一个分组以便向发送方提供一个拥塞信号是有利的,已经有许多分组丢弃和标记策略,统称为主动队列管理(Active Queue Management,AQM)算法随机早期检测(RandomEarly Detection,RED)算法是一种得到最广泛研究和实现的AQM算法,他为输出队列长度维护一个加权平均值,如果平均队列长度小于最小阈值,则一个新的分组到达时被接纳进队列,如果大于等于最大阈值,丢弃刚到达的分组,如果平均队列长度在最小阈值和最大阈值之间,则刚到的分组以某种概率被丢弃。


路由选择处理器:执行路由选择协议,维护路由选择表以及连接的链路状态信息,并为路由器计算转发表。

路由转发平面:输入端口,输出端口,交换结构实现的转发功能,并且总是用硬件实现。

路由器控制平面:比路由转发平面速度慢,路由器的控制功能(执行路由选择协议,对上线或者下线的连接链路进行响应,执行管理功能等)通常使用软件并在路由选择处理器上执行。


网际协议:因特网中编址和转发是网际协议(IP)的重要组件。目前有两个版本的IP协议,分别是IPv4IPv6


网络层三个主要组件:

①IP协议

②路由选择部分,决定了数据报从源到目的地所流经的路径。

③报告数据报中的差错和对某些网络层信息请求进行响应的设施。


IPv4数据报的关键字段:

版本号:4比特。规定了数据报的IP协议版本。即IPv4和IPv6.

首部长度:4比特,IPv4包含一些可变数量的选项,需要用首部长度确定IP数据报中数据部分实际从哪里开始。

服务类型(TOS):该比特用来使不同类型的IP数据报能相互区别开来。

数据包长度:16比特,IP数据报的总长度(首部+数据)。由于是16比特,理论上最大长度为65535字节,然而很少有超过1500字节的。

标识、标志、片偏移:跟IP分片有关。分片在IPv6中已经被废除。

寿命(Time-To-Live,TTL):用来确保数据报不会永远在网络中循环。每当数据报由路由器时,TTL的值减1。

协议:到达目的地时使用。指示了交给哪个运输层协议,如值为6表明交给TCP,值为16表明数据交给UDP。

首部检验和:每两个字节当做一个数,求和后取反,该值放在检验和字段中。路由器要对每个收到的IP数据报计算其首部检验和,丢弃产生错误的分组。(在每台路由器上必须重新计算首部校验和,因为像TTL这种首部以及选项字段可能会改变)要注意的一点是,这里只对首部进行校验,而在TCP中是对整个报文段,包括数据进行校验。

源/目的IP地址:

选项:选项字段允许IP首部被扩展。很少使用,由于各种原因,IPv6首部中已经去掉了IP选项。

数据(有效载荷):即TCP报文段或者UDP报文段。也可能是其他类型的数据。

一个IP数据报的有总长为20字节的首部(无选项)。如果承载TCP报文,则再加上20字节的TCP首部,总共40字节的首部。


IP数据报分片:

并不是所有的链路层协议都承载相同长度的网络层分组。一个链路层帧能承载的最大数据量叫做最大传送单元(Maximum Transmission Unit,MTU)。数据报在路由器之间转发,然而每个路由器之间的链路层协议有可能不同,即可能具有不同的MTU。当IP数据报比MTU大时,一种解决方案是将IP数据报中的数据分片成几个较小的数据报再发送,用单独的链路层帧封装这些较小的IP数据报后输出。每个较小的数据报称为。为了网络层协议的简单,路由器并不实现片的重新组装,而是由端系统来实现。目的主机通过IP数据报中的标识,标志和片偏移字段来实现片的重组。为了让目的主机相信它已经收到了初始数据报的最后一个片,最后一个片的标志比特被设置为0,其他所有片的标志比特为1.为了让目的主机确定是否丢失片,使用偏移字段指定该片应该放在初始IP数据报的哪个位置。然而分片也是有开销的,其次,分片能够用来被用于生成致命的DoS攻击,如Jolt2攻击,攻击者向目的主机发送小片的流,没有一个片的偏移量是0,当目的主机重组数据报时可能会引发崩溃。另一种是发送交迭的IP片,这些片的偏移量并不能够被正确的排列,如果目的主机不知道怎么处理,可能会崩溃。新版本的IPv6废止了分片,从而简化了IP分组,并使得它不太容易受到攻击。


IPv4编址:

我们知道路由器上有许多的接口,而路由器的任务就是从连路上接收数据报并从其他链路转发出去。因此,IP要求每台主机和路由器接口拥有自己的IP地址。每个IP地址长度为32位,约有40亿个可能的IP地址。一般按照点分十进制记法来书写,因为二进制书写较长。比如193.32.216.9,对应11000001001000001101100000001001.每一位都是0到255的十进制数,刚好等价8位比特。


子网:

路由器接口与其下面互联起来的主机接口形成的网络。具体定义如下:分开主机和路由器的每个接口,产生几个隔离的网络岛,使用接口端接这些隔离的网络的端点,这些隔离的网络中的每一个都叫做一个子网。比如地址223.1.1.0/24,其中的/24记法被称为子网掩码,指示了32比特中的最左侧24比特定义了子网地址。例如,223.1.1.1和223.1.1.24都位于223.1.1.0/24子网下。一个公司内部,或者学术机构一般具有多个子网,在给定子网上的所有设备都具有相同的子网地址。


因特网的地址分配策略

因特网的地址分配策略被称为无类别域间路由选择(Classless Interdomain Routing,CIDR)。32比特的IP地址被划分为两部分,具有a.b.c.d/x形式,x指示了地址第一部分中的比特数,被称为该地址的前缀。而剩下的32-x比特可被认为是用于区分该组织内部设备的。当该组织内部的路由器转发分组时,才会考虑这些比特。一个组织通常被分配一块连续的地址,即具有相同前缀的一段地址。比如某ISP下有若干个组织,每个组织有自己的子网(200.23.16.0/23,200.23.18.0/23等)。而该ISP只需要向外界通告接收前20比特与200.23.16.0/20相符的数据报。这种使用单个网络前缀通告多个网络的能力通常被称为地址聚合,也称为路由聚合路由摘要。地址按块分给ISP,又由ISP分给客户组织,这样的方式极为有效。需要注意的是,如果ISP1通告了200.23.16.0/20,ISP2通告了200.23.18.0/23,它们将使用一个最长前缀匹配,朝着ISP2路由方向转发。因为ISP2通告了更加具体的地址前缀。


特殊的IP地址(广播地址)

255.255.255.255。当主机发出一个目的地址为255.255.255.255的数据报时,该报文会交付给同一个网络中的所有主机。


因特网名字和编号分配机构(ICANN):

一个全球性的权威机构,管理IP地址空间并向各ISP和其他组织分配地址块,同时它也管理DNS根服务器,分配域名与解决域名纷争。


动态主机配置协议(DynamicHost Configuration,DHCP):

某组织一旦获取了一块地址,就可以为本组织内的主机与路由器接口逐个分配IP地址,系统管理员通常手工配置路由器中的IP地址,主机地址也能手动配置,但通常更多的是使用DHCP来完成。它允许主机自动获取(被分配)一个IP地址。因为它具有将主机连接进一个网络的网络相关方面的自动能力,又常被称为即插即用协议。考虑一种情景,我们到达一个咖啡厅或者图书馆,使用那里的wifi,这时我们的主机需要一个新的IP地址,此时DHCP是最理想的方法,因为有许多人来来往往,不可能针对每个人都去配置一个IP地址。DHCP是一个客户-服务器协议。客户是新到达的主机,服务器(如果子网中没有DHCP,服务器,则由DHCP中继代理来告知服务器的地址)。


DHCP四个步骤:

①   DHCP服务器发现。主机由于不知道DHCP服务器地址,使用广播地址255.255.255.255并且本地主机源地址使用0.0.0.0,链路层将该DHCP发现报文广播到所有与该子网连接的子网。

②   DHCP服务器提供。DHCP服务器接收到一个DHCP报文后,用一个DHCP回复报文,含有事务ID,向客户推荐的IP地址,网络掩码以及IP地址租用期。该报文仍然使用IP广播地址作为目的地址。

③   DHCP请求。客户收到DHCP回复报文后选择其中一个服务器用一个DHCP请求报文进行响应。

④   DHCP ACK。服务器用ACK报文对DHCP请求参数进行响应,证实要求的参数。


网络地址转换(NAT,NetworkAddress Translation)

NAT使能路由器使得对于子网中的地址仅对该网络中的设备有意义,而对于外部世界,NAT路由器就如同一个具有单一IP地址的单一设备。所有离开子网去访问外部世界的报文都拥有同一个源IP地址,所有进入子网的报文段都拥有同一个目的地址。也就是说,NAT路由器对外部隐藏了家庭网络的细节。NAT路由器从ISP的DHCP服务器得到它的地址,并且路由器运行一个DHCP服务器,为位于NAT-DHCP路由器控制的家庭网络地址空间中的计算机提供地址。NAT路由器通过一张NAT转换表来知道它应该将分组转发给哪个内部主机。在表中包含了主机端口号及其IP地址以及相应的对外IP地址和端口号。然而NAT也有其不足。它妨碍了P2P应用程序。主要原因是NAT不允许外网主机主动访问内网主机,但是P2P技术却要求通信双方都能主动发起访问。如果P2P应用中只有一方位于NAT路由器后面,假设为A,另一方为B,同时有一个服务器C,A和B都已经和C建立了TCP连接。如果A要发起到B的通信,可以直接通过TCP连接到B,但如果B要发起到A的通信,请求到达NAT路由器后就会被拒绝连接。想要与A通信,B应该通过C向A转发一个连接请求,反过来请求A连接到B,A会主动向B发起一个TCP请求,这样NAT路由器上就会建立起关于这个连接的相关表项,使A和B之间能够正常通信,从而建立TCP连接。这种关系称为连接反转,实际上被许多P2P应用于NAT穿越。


因特网控制报文协议(ICMP)

ICMP被主机和路由器用来彼此沟通网络层的信息。最典型的用途是差错报告。例如”目的网络不可达”之类的报文,就是在ICMP中产生,它作为IP分组的有效载荷进行传输。ICMP报文有许多类型,如回显回答,TTL过期,IP首部损坏,目的XX不可达,源抑制等通知描述。


IPv6

由于IP结点以惊人的增长率增加,32比特的IP地址即将耗尽,为此开了一种新的IP协议IPv6.IPv6最重要的变化如下:

扩大的地址容量。IPv6将IP地址长度从32比特增加到128比特。可以达到2^128次方,确保全世界不会用尽IP地址。

流标签与优先级。该字段可用于给属于特殊流的分组加上标签,这些特殊流是发送方要求进行特殊处理的流。


IPv6数据报结构更为简单,如下:

版本。4比特,用于标识IP版本号。

流量类型。8比特,跟IPv4字段的服务类型类似。

流标签。20比特,用于标识一条数据报的流。

有效载荷长度。16比特,给出了IPv6数据报中跟在定长的40字节数据报首部后的字节数量。

下一个首部。IPv4中的协议字段。

跳限制。每台路由器对该字段的内容减1,为0则丢弃。

源地址和目的地址。128比特。

数据。IPv6的有效载荷部分。


由上述字段可知:

①     分片和重新组装已经在IPv6中不再存在。如果数据报过大则路由器只需要丢掉,并发回一个“分组太大”的ICMP报文即可。

②     首部检验和也不再存在。由于每台路由器都要重新计算IPv4首部检验和过于耗时。并且运输层和数据链路层协议执行了检验操作,因此去掉。

③     选项。并没有消失。转移到 “下一个首部”字段中。


关于IPv4和IPv6的转换:

IPv4和IPv6的转换可不仅仅是在版本字段中将版本修改一下这么简单。而使所有使用IPv4协议的路由器升级到IPv6这种重大的技术迁移并不可行。引入IPv6协议最直接的方法是使用双栈方法,一种实现方法是同时实现IPv4和IPv6,可以同时使用IPv4数据报和IPv6数据报。另一种实现方法是建隧道。即在两台IPv6路由器之间,将中间IPv4路由器的集合称为一个隧道,我们将整个IPv6数据报放入IPv4数据报的有效载荷字段中进行运输。

 

路由选择算法:

主机通常直接与一台路由器相连接,该路由器即为主机的默认路由器,又称为该主机的第一跳路由器。如何确认源路由器与目的路由器之间的路径?他们之间的路径可以看成是一张图,一般来说,我们需要找的是从源点到终点的最低费用路径,有时候等价于最少链路数量的路径。

路由选择算法分类:

全局式路由选择算法:该算法必须知道网络中每条链路的费用,具有全局状态信息的算法常被称作链路状态(Link State,LS)算法。

分散式路由选择算法:以迭代、分布式的方式计算出最费用路径。每个节点仅有与其直接相连链路的费用知识即可开始工作,迭代计算后与相邻节点交换信息。主要的算法是距离向量(Distance-Vector ,DV)算法。

静态路由选择算法:随着时间流逝,路由的变化非常缓慢,通常是人工干预进行调整。

动态路由选择算法:能够当网络流量负载或者拓扑发生变化时改变路由选择路径。

负载敏感算法:链路费用会动态地变化以反映出底层链路的当前拥塞水平。

链路状态路由选择算法:即Dijkstra算法,在这里不做具体介绍。

距离向量路由选择算法:与Bellman-Ford方程相关,即d(x,y)=min(cost(x,k)+d(k,y),不做具体介绍。


层次路由选择:

在理想状况下,一个组织应当能够按自己的愿望运行和管理其网络,还要能将网络与外部网络相连接。我们可以通过将路由器组织进自治系统(AutonomousSystem,AS)来解决。每个AS由一组通常处在相同管理控制下的路由器组成(例如相同的ISP运营或属于相同的公司网络)。在相同的AS中的路由器全部运行相同的路由选择算法。

自治系统内部路由选择协议(intra-autonomoussystem routing protocol):在一个自治系统内运行的路由选择算法。

网关路由器:AS之间需要彼此互联,因此一个AS内的一台或者多台路由器将负责向本AS之外的目的地转发分组,这样的路由器称为网关路由器。

自治系统间路由选择协议:

从相邻AS获取可达性信息和向该AS中所有路由器传播可达性信息是由自治系统间路由选择协议处理的任务。两个通信的AS必须运行在相同的自治系统间路由选择协议上。事实上,因特网中的所有路由器都运行相同的AS间路由选择协议,该协议称为BGP4.


每台路由器接收来自一个AS内部路由选择协议和一个AS间路由选择协议的信息,并使用这两个协议的信息来配置它的转发表。

在AS内部,所有路由器运行同样的自治系统内部路由选择协议,在AS之间,AS运行相同的AS间路由选择协议。


热土豆路由选择:

选择具有最小的最低费用的网关。在热土豆路由选择中,AS尽可能经济地(尽可能快地)转发分组。该网关路由器在到目的地路径上的所有网关路由器中有最低的路由器到网关的费用。


内部网关协议(AS内部路由选择协议)

有两个两个路由选择协议曾广泛应用,分别是路由选择信息协议(Routing Information Protocol,RIP)开放最短路优先(Open Shortest Path First,OSPF).


RIP协议

RIP协议目前仍然在广泛使用。它是一种距离向量协议,很像DV协议。它使用术语,跳是从源路由器到目的子网的最短路径所经过的子网数量。RIP中,路由选择更新信息在邻居之间通过使用一种RIP响应报文来交换,大约30秒交换一次。每台路由器维护一张路由选择表的RIP表,包括目的子网,下一台路由器,以及到目的地的跳数。一开始每个路由器都只有与邻居之间的信息,这些信息会被会被转发到相邻路由器,邻居接收到信息后更新自身的表并转发给新的邻居。最终每个路由器都能得到一张AS内最短路径的表。

OSPF协议

OSPF协议的核心是一个使用洪泛链路状态信息的链路状态协议和一个Dijkstra最低费用路径算法。使用OSPF时,路由器向自治系统内所有其他路由广播路由选择信息(通过255.255.255.255)而不仅仅是向相邻路由器广播。

一个OSPF自治系统可以配置成多个区域,每个区域运行自己的OSPF链路状态路由选择算法,一个区域内的每台路由器都向该区域内的所有其他路由器广播其链路状态。在一个区域内,一台或多台区域边界路由器负责为流向该区域外的分组提供路由选择,在AS内只有一个OSPF区域配置称为主干区域。其作用是为AS内其他区域之间的流量提供路由选择,该主干总是包含了AS内的所有区域边界路由器,并且可能还包含了一些非边界路由器。AS内的区域间的路由选择要求分组首先到达一个区域边界路由器(区域内路由选择)然后再通过主干路由到位于目的区域的区域边界路由器,再路由到最终目的地。


自治系统间路由选择BGP协议(Border Gateway Protocol,边界网关协议)

如果没有BGP的话,每个子网将是隔离的,BGP 每个子网向因特网通告他们的存在,正是BGP将所有的东西粘合到了一起。它使用TCP连接,保证路由交换信息的可靠性。

它提供了如下功能:

①     从相邻AS处获得子网可达性信息。

②     向本AS内部的所有路由器传播这些可达性信息。

③     基于可达性信息和AS策略,决定到达子网的“好”路由。


iBGP:会话AS内部中的两台路由器之间的BGP会话称为内部BGP会话

eBGP:在AS外部的两台网关路由器之间的BGP会话称为外部BGP会话

在BGP中,目的地是CDIR化的前缀,它标识一个子网或者一个子网集合。在网关路由器之间的会话中,他们交换可达性信息,如果得到新的前缀,就对内部其他路由器转发该信息,当一台路由器得知新前缀时,它为该前缀在其转发表中创建一个项。

在BGP中,一个自治系统由其全局唯一的自治系统号(ASN,AutonomousSystem Number)标识。(有一种特殊情况,桩AS没有所谓的ASN,它只负责承载原地址或者目的地址为本AS的流量,即不负责转发)

路由器通告前缀时,会在其中包含一些BGP属性,带有前缀的属性被称为路由。两个重要的属性是AS-PATHNEXT-HOP

AS-PATH属性

包含了该前缀已经通告过的AS,如果路由器看到自己的AS被包括在路径列表中则拒绝该通告。

NEXT-HOP属性

表示去往指定网络的下一个AS的IP地址。向ebap邻居通告路由时,NEXT-HOP地址更改为本路由器,在ibap间通告路由时,NEXT-HOP属性保持不变。

BGP路由选择:

路由器可能知道到达任何一条前缀的多条路由,这种情况下路由器必须选择一条,如果存在相同前缀的多条路由,BGP有它自己的消除规则,不断消除直到只剩下一条路由,这里不做详细介绍。


单播、广播与多播

单播:点对点的路由选择协议,单个源节点基于这种协议向单个目的节点发送分组。

广播:网络层提供了一种从源结点到网络中的所有其他节点交付分组的服务。

多播:单个源结点能够向其他网络节点的一个子集发送分组的副本。


广播路由选择算法:

①   源结点产生N个副本,对不同目的地进行编址后使用单播路由发送。缺点是效率低,并且源结点需要知道所有其他目的地址的信息。

②   无控制洪泛。源结点向所有邻居发送分组的副本,当邻居接收到广播分组后,复制该分组并向所有邻居发送。这种方案简单优雅,缺点是如果图有环的话,将产生广播风暴,导致无休止的广播分组的复制。

③   受控洪泛。跟无控制洪泛一样的做法,但是可以选择何时洪泛分组,何时不洪泛分组。一种是序号控制洪泛,每个结点维护它收到的、复制的和转发的源地址和每个广播分组的序号列表。如果收到的广播分组在列表中,则丢弃,不在,则接收并复制给所有邻居。另一种是反向路径转发(Reverse Path Forwarding,RPF)也称为反向路径广播(RFB)当一台路由器收到具有给定的源地址的广播分组时,仅当该分组到达的链路正好是她自己的返回其返回到源的最短单播路径上,才向其所有出链路传输报文。

④   生成树广播。虽然③中的方法避免了广播风暴,但无法避免冗余广播分组的传输。提供广播的另一种方法是首先对网络结点构造出最小生成树,当一个源结点要发送一个广播分组时,沿着生成树的特定链路发送分组。一个结点并不需要知道整棵树,它只需要知道哪些邻居是属于生成树的。


多播服务:

多播分组仅被交付给网络结点的一个子集。多播数据报采用间接地址,标识一组接收方,寻址到该组的分组副本被交付给所有与该组相关联的多播接收方,且该组使用这个单一标识符。


因特网组管理协议(IGMP)

运行在一台主机与其直接连接的路由器之间,它为主机提供了手段,通知与其相连的路由器:在本主机上运行的一个应用程序想加入一个特定的多播组。由网络层多播路由选择协议来协调遍及因特网内的多播路由器。多播路由选择协议的目标就是发现一颗连接了所有属于该多播组的相连主机的路由器的树。


有两种方法来确定多播路由选择树:

①   使用一颗组共享树的多播路由选择。使用基于中心的树进行多播路由选择,关键问题就是去确定这颗树的中心,由属于多播组的主机向中心经单播发送加入报文,从而构造一棵树。

②   使用一颗基于源的树的多播路由选择。使用RPF算法(源。点x)来构造一颗多播转发树,以用于源于源点x的多播数据报


网络层多播路由选择协议

第一个用于因特网中的多播路由选择协议是距离向量多播路由选择协议(DVMRP),使用的是具有剪枝的RFP算法。使用最为广泛的是协议无关的多播路由选择协议(PIM路由选择协议),它明确辨识稠密模式和稀疏模式,通过多播组成员的位置分布来使用不同的算法。

 

本站声明
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。


 
© 2014-2018 ITdaan.com 粤ICP备14056181号