计算机网络——网络层(路由选择协议、路由器工作原理、IP多播、虚拟专用网和网络地址转换)

目录

路由选择协议

因特网的路由选择协议特点

路由信息协议RIP

RIP衡量目的网络距离 

RIP选择路由器的方式 

RIP具有以下三个重要特点

RIP的基本工作流程 

RIP的距离向量算法

​编辑

​编辑

 RIP存在的问题——“坏消息传播得慢”

 RIP的封装

开放最短路径优先协议OSPF

链路状态 

OSPF路由器邻居关系的建立和维护

链路状态通告 

链路状态分组 

链路状态数据库 

基于链路状态数据库进行最短路径优先计算

OSPF的五种分组类型

​编辑

OSPF的基本工作过程

多点接入网络中的OSPF路由器

OSPF协议划分区域 

练习 

外部网关协议BGP

BGP的产生原因 

BGP的工作流程概括

BGP路由的一般格式

​编辑

BGP工作流程详解 

三种不同的AS自治系统 

BGP的路由选择 

BGP适用于多级结构的因特网

BGP-4的四种报文

练习 

路由器基本工作原理

路由器的工作流程

交换结构的速率 

IP多播 

IP多播与多播组 

在局域网上进行硬件多播 

剖析mac地址和ip地址的关系

收到IP多播数据报的主机还要在网际层利用软件进行过滤 

 在因特网上进行IP多播的两种协议

简述两种协议的作用 

 网际组管理协议IGMP

洪泛法建立广播树

网际组管理协议IGMP的基本工作原理——加入多播组

 网际组管理协议IGMP的基本工作原理——监视多播组的成员变化

网际组管理协议IGMP的基本工作原理——退出多播组

 多播路由选择协议

反向路径广播RPB算法

组共享树多播路由选择

其他多播路由选择 

虚拟专用网VPN和网络地址转换NAT

 虚拟专用网的工作流程

网络地址转换 

 最基本的NAT方法

网络地址与端口号转换方法  

NAT与NAPT两种网络地址转换的总结 


路由选择协议

        应当指出,路由选择是个非常复杂的问题,因为它是网络中的所有节点共同协调工作的结果。其次,路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。

        例如,网络中出了某些故障。此外,当网络发生拥塞时,就特别需要有能缓解这种拥塞的路由选择

         倘若从路由算法能否随网络的通信量或拓扑自适应地进行调整变化来划分,则只有两大类,即静态路由选择策略动态路由选择策略。静态路由选择也叫作非自适应路由选择,

静态路由选择:

  • 采用人工配置的方式给路由器添加网络路由.默认路由和特定主机路由等路由条目。
  • 静态路由选择简单、开销小,但不能及时适应网络状态(流量、拓扑等)的变化。
  • 静态路由选择一般只在小规模网络中采用。

动态路由选择:

  • 路由器通过路由选择协议自动获取路由信息
  • 动态路由选择比较复杂、开销比较大,但能较好地适应网络状态的变化。
  • 动态路由选择适用于大规模网络。 

因特网的路由选择协议特点

解释因特网的路由选择协议——分层次特点

路由信息协议RIP

        路由信息协议(Routing Information Protocol,RIP)是内部网关协议中最先得到广泛使用的协议之一。

        RIP要求自治系统AS内的每一个路由器,都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为距离向量(Distance-Vector,D-V) 。

RIP衡量目的网络距离 

        RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。

  • RIP将路由器到直连网络的距离定义为1。
  • RIP将路由器到非直连网络的距离定义为所经过的路由器数加1。
  • RIP允许一条路径最多只能包含15个路由器,距离等于16时相当于不可达。因此RIP只适用于小型互联网。

举例说明如下:

RIP选择路由器的方式 

        RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。


        当到达同一目的网络有多条RIP距离相等的路由时,可以进行等价负载均衡,也就是将通信量均衡地分布到多条等价的路径上。


 

RIP具有以下三个重要特点
 

和谁交换信息:

        仅和相邻路由器交换信息。



交换什么信息:

        路由器自己的路由表
        即本路由器到所在自治系统AS中各网络的最短RIP距离,以及到各网络应经过的下一跳路由器。


何时交换信息:
        周期性交换(例如,每隔约30秒)。
        为了加快RIP的收敛速度,当网络拓扑发生变化时,路由器要及时向相邻路由器通告拓扑变化后的路由信息,这称为触发更新。

RIP的基本工作流程 


RIP的基本工作过程小结如下

  • 路由器刚开始工作时,只知道自己到直连网络的RIP距离为1。
  • 每个路由器仅和相邻路由器周期性地交换并更新路由信息。
  • 若干次交换和更新后,每个路由器都知道到达本自治系统AS内各网络的最短距离和下一跳路由器,称为收敛。

RIP的距离向量算法

 D中路由表修改规则如下:





除了上述RIP路由条目更新规则,在RIP的距离向量算法中还包含以下一些时间参数:

  • 路由器每隔大约30秒向其所有相邻路由器发送路由更新报文。
  • 若180秒(默认)没有收到某条路由条目的更新报文,则把该路由条目标记为无效(即把RIP距离设置为16,表示不可达),若再过一段时间(如120秒),还没有收到该路由条目的更新报文,则将该路由条目从路由表中删除。

 RIP存在的问题——“坏消息传播得慢”

 

“        坏消息传播得慢”的问题又被称为路由环路或RIP距离无穷计数问题。这是距离向量算法的一个固有问题。可以采取以下多种措施减少出现该问题的概率或减小该问题带来的危害:

  • 限制最大RIP距离为15(16表示不可达)。
  • 当路由表发生变化时就立即发送路由更新报文(即“触发更新”),而不仅是周期性发送。
  • 让路由器记录收到某个特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送(即“水平分割”)。


        使用上述措施仍无法彻底解决问题。因为在距离向量算法中,每个路由器都缺少到目的网络整个路径的完整信息,无法判断所选的路由是否出现了环路。


 RIP的封装

        现在较新的RIP版本是1998年11月公布的RIP2,已经成为因特网标准协议。与RIP1相比,RIP2可以支持变长子网掩码和CIDR。另外,RIP2还提供简单的鉴别过程并支持多播

        RIP相关报文使用运输层的用户数据报协议UDP进行封装,使用的UDP端口号为520。

  • RIP报文封装的角度看,RIP属于TCP/IP体系结构的应用层。
  • RIP的核心功能是路由选择,这属于TCP/IP体系结构的网际层。

 

开放最短路径优先协议OSPF

        开放最短路径优先(Open Shortest Path First,OSPF)协议是为了克服路由信息协议RIP的缺点在1989年开发出来的。

  • “开放”表明OSPF协议不是受某一厂商控制,而是公开发表的。
  • “最短路径优先”是因为使用了Dijkstra提出的最短路径算法(Shortest Path First,SPF)。

        ‘开放最短路径优先”只是一个路由选择协议的名称,但这并不表示其他的路由选择协议不是“最短路径优先”实际上,用于自治系统AS内部的各种路由选择协议(例如RIP),都要寻找一条“最短”的路径。

  • OSPF是基于链路状态的,而不像RIP是基于距离向量的。
  • OSPF基于链路状态并采用最短路径算法计算路由,从算法上保证了不会产生路由环路
  • OSPF不限制网络规模,更新效率高,收敛速度快。

链路状态 

        链路状态是指本路由器都和哪些路由器相邻,以及相应链路的“代价(cost)" 。“代价”用来表示费用、距离、时延和带宽等,这些都由网络管理人员来决定。


 

OSPF路由器邻居关系的建立和维护
 

        OSPF相邻路由器之间通过交互问候(Hello)分组来建立和维护邻居关系。

        问候(Hello)分组封装在IP数据报中,发往组播地址224.0.0.5。IP数据报首部中的协议号字段的取值为89,表明lP数据报的数据载荷为OSPF分组。

  • 问候(Hello)分组的发送周期为10秒。
  • 若40秒未收到来自邻居路由器的问候(Hello)分组,则认为邻居路由器不可达。
  • 每个路由器都会建立一张邻居表。

R1邻居表另一边状态如下:

链路状态通告 

        使用OSPF的每个路由器都会产生链路状态通告(Link State Advertisement,LSA)LSA中包含以下两类链路状态信息:

  • 直连网络的链路状态信息
  • 邻居路由器的链路状态信息

链路状态分组 

        链路状态通告LSA被封装在链路状态更新(Link State Update,LSU)分组中,采用可靠的洪泛法(Flooding)进行发送

  • 洪泛法的要点是路由器向自己所有的邻居路由器发送链路状态更新分组收到该分组的各路由器又将该分组转发给自己所有的邻居路由器(但其上游路由器除外),以此类推。
  • 可靠是指收到链路状态更新分组后要发送确认,收到重复的更新分组无需再次转发,但要发送一次确认。

链路状态数据库 

  • 使用OSPF的每一个路由器都有一个链路状态数据库(Link State Database,LSDB),用于存储链路状态通告LSA。
  • 通过各路由器洪泛发送封装有各自链路状态通告LSA的链路状态更新分组LSU,各路由器的链路状态数据库LSDB最终将达到一致。

 这是在路由器R2的链路状态数据库,其中记录有系统中各路由器的链路状态通告

基于链路状态数据库进行最短路径优先计算
 

        使用OSPF的各路由器,基于链路状态数据库LSDB进行最短路径优先计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表。

        
         

OSPF的五种分组类型

        OSPF构成的数据报很短。这样做可减少路由信息的通信量。

        数据报很短的另一好处是可以不必将长的数据报分片传送。分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。 

OSPF的基本工作过程


 

多点接入网络中的OSPF路由器
 

在多点接入网络中OSPF路由器邻居关系的建立
 


        
        为了确保链路状态数据库与全网的状态保持一致,OSPF 还规定每隔一段时间,如30分钟,要刷新一次数据库中的链路状态。
        由于一个路由器的链路状态只涉及与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议RIP 好得多。

        为了减少所发送问候分组和链路状态更新分组的数量,OSPF采用以下措施:

  • 选举指定路由器(Designated Router,DR)和备用的指定路由器(Backup DesignatedRouter,BDR)
  • 所有的非DR/BDR只与DR/BDR建立邻居关系
  • 非DR/BDR之间通过DR/BDR交换信息

OSPF协议划分区域 

        为了使OSPF协议能够用于规模很大的网络,OSPF把一个自治系统AS再划分为若干个更小的范围,称为区域(area) 。

        每个区域的规模不应太大,一般所包含的路由器不应超过200个

        划分区域的好处就是把利用洪泛法消化链路状态信息的范围局限于每一个区域,而不是整个自治系统的AS,这样就减少了整个网络上的信息量。 

区域中路由器的种类 

  • 自治系统边界路由器在主干区域内还要有一个路由器,专门和本自治系统外的其他自治系统交换路由信息。如本例中的R6
  • 主干路由器主区区域内的路由器。例如本例中的路由器R3、R4、R5、R6和R7
  • 区域内路由器路由器的所有接口都在同一个区域内。区域1内的R1和R2,区域2内的R8,区域3内的R9
  • 区域边界路由器:一个接口用于连接自身所在区域,另一个接口用于连接主干区域。本例中的R3、R4和R7

区域边界路由器的工作         

        以R3为例,R3向区域1发送区域区域0、2和3的链路状态通告;而向主干区域发送区域1的链路状态通告

        采用划分区域的方法,虽然使交换信息的种类增多了,同时也使OSPF协议更加复杂了,但这样做能使每一个区域内部交换路由信息的通信量大大减小,因而使OSPF协议能够用于规模更大的自治系统AS.
 

练习 

外部网关协议BGP

         外部网关协议BGP对互联网非常重要。我们知道,前面两节所介绍的路由选择协议 RIP和 OSPF,都只能在一个自治系统AS内部工作。

        因此,若没有协议BGP,那么分布在全世界数以万计的AS都将是一个个没有联系的孤岛。正是由于有了BGP这种黏合剂,才使得这么多的AS 孤岛能够连接成一个完整的互联网。

BGP的产生原因 

 Q:在不同自治系统AS之间的路由选择为什么不能使用内部网关协议,如RIP或OSPF?


        A:内部网关协议(如RIP或OSPF)主要是设法使数据报在AS中尽可能有效地从源站传送到目的站。在一个AS内部也不需要考虑其他方面的策略
        然而BGP的适应环境大不相同:

  1. 互联网的规模太大,使得自治系统AS之间路由选择非常困难:
    •  链路状态相关协议所遇到的问题:目前在互联网的主干网路由器中,一个转发表的项目数甚至可达到50万个网络前缀。如果使用链路状态协议,则每一个路由器必须维持一个很大的链路状态数据库。
              对于这样大的主干网用Dijkstra 算法计算最短路径时花费的时间也太长。
       
    • 路径度量相关协议所遇到的问题:另外,由于自治系统AS各自运行自己选定的内部路由选择协议,并使用本AS指明的路径度量,因此,当一条路径通过几个不同AS时,要想对这样的路径计算出有意义的代价是不太可能的。
             例如,对某 AS来说,代价为1000可能表示一条比较长的路由。但对另一AS,代价为1000却可能表示不可接受的坏路由。
    • 合理的做法在自治系统之间交换“可达性”信息(“可到达”或“不可到达”)。例如,告诉相邻路由器:“到达网络前缀N可经过自治系统AS1”
  2. 自治系统AS之间的路由选择必须考虑有关策略:
    • 由于相互连接的网络的性能相差很大,会有如下情况出现
      • 根据最短距离(即最少跳数)找出来的路径,可能并不合适。
      • 也有的路径的使用代价很高或很不安全。
      • 还有一种情况,如自治系统AS3,要发送数据报给自治系统AS3,本来最好是经过自治系统AS3;。但AS3不愿意让这些数据报通过本自治系统的网络即使AS1愿意支付一定的费用。
                但另一方面,自治系统AS3愿意让某些相邻自治系统的数据报通过自己的网络,特别是对那些付了服务费的某些自治系统更是如此。
    • 因此,自治系统之间的路由选择协议应当允许使用多种路由选择策略,这些策略并不是基于路由协议本身,而是包括政治、安全或经济方面的考虑:
      • 例如,我国国内的站点在互相传送数据报时不应经过国外兜圈子,特别是不要经过某些对我国的安全有威胁的国家。
      • 还可举出一些策略的例子,如:“仅在到达下列这些地址时才经过AS1,",“AS1和AS2相比时应优先通过AS1”
      • 显然使用这些策略只是为了找出更好路由而不是最佳路由

        由于上述情况,边界网关协议 BGP只能是力求选择出一条能够到达目的网络前缀且比较好的路由(不能兜圈子),而并非要计算出一条最佳路由。

        这里所说的BGP路由,是指经过哪些自治系统AS可以到达目的网络前缀。当然,这选择出的比较好的路由,也有时不严格地称为最佳路由。

        BGP采用了路径向量(path vector)路由选择协议,它与距离向量协议(如RIP)和链路状态协议(如OSPF)都有很大的区别。 

BGP的工作流程概括


        BGP发言人除了运行BGP协议外,还必须运行自己所在AS所使用的内部网关协议IGP,例如RIP或OSPF。
 


BGP路由的一般格式

  • 前缀:就是通告的BGP路由终点(子网前缀)。
  • AS-PATH(自治系统路径)是通告的BGP路由所经过的自治系统。BGP路由每经过一个AS,就将其自治系统号ASN加入到AS-PATH中,“BGP路由”必须指出通过哪些自治系统AS,但不指出路由中途要通过哪些路由器。
  • NEXT-HOP(下一跳)是通告的BGP路由起点。

        
        BGP属性有好几种类型,但最重要两个就是这里列出的 AS-PATH和 NEXT-HOP。

BGP工作流程详解 


R4收到R1的BGP路由

        这样,路由器R4只要收到要到达前缀X的分组,都按照R4→R3→R2→R1→X的路径,最后到达前缀X。

三种不同的AS自治系统 

        在互联网中自治系统AS的数量非常之多,其连接图也是相当复杂的。但归纳起来,可以把AS划分为三大类,即末梢AS (stub AS)、穿越AS(transit AS) 和对等AS (peering AS)。
 

 末梢AS (stub AS)

        末梢AS不是穿越AS,它不允许分组穿越自己的自治系统。

        末梢AS5也不能把(AS5→AS2一AS4)这样的BGP路由信息通告给AS3;如果AS3有分组要转发给AS4,可以通过对等AS2转发,但不能通过末梢AS5。

对等AS

        是经过事先协商的两个AS,彼此之间的发送或接收分组都不收费,这样大家转发分组都比较方便。

 穿越AS

        往往是拥有很好的高速通信干线的主干AS,其任务就是为其他的AS有偿转发分组。通常都会有很多的AS连接到穿越AS上。

BGP路由必须避免兜圈子的出现
 

         因此AS3应立即删除此BGP路由,因而避免了兜圈子路由的出现。

BGP的路由选择 

        假如从一个AS到另外一个AS中的前缀X只有一条BGP路由,那么就不存在选择BGP路由的问题,因为这时BGP路由是唯一的。
        但如果到前缀X有两条或更多的BGP路由可供选择,那么就应当根据以下的原则,按照这里给出的先后顺序,选择一条较好的BGP路由。

本地偏好LOCAL-PREF (LOCAL PREFerence)值最高的路由要首先选择。

        在 BGP路由中的属性里面有一个选项叫作本地偏好,在属性中记为LOCAL-PREF。

        本地偏好也就是本地优先,是指,从本AS开始的、到同一个前缀的不同 BGP路由中,挑选一个较好的(即偏好值最高的)路由。这可由路由器管理员或网络管理员根据政治上或经济上的策略来设置。

        但是,即使所有的通信量都通过这条高速链路,使得链路负荷过重,协议 BGP也无法把一些负载调整到负载较轻的那条低速链路上。
 

         如果从几条BGP路由中找不出本地偏好值最高的路由,则执行下一条。

 选择具有AS跳数最少的路由

        这个例子再次说明了协议BGP无法选择出最佳路由。

        如果按前两种方法都无法选择最好的路由,那么就在要进入BGP路由的AS,执行热土豆路由选择算法

热土豆路由选择算法

选择BGP标识符最小的路由 

        在BGP进行交互的报文中,其首部有一4字节的字段,叫作 BGP标识符,记为 BGP ID。这个字段被赋予一个无符号整数作为运行 BGP 的路由器的唯一标识符。

        具有多个接口的路由器有多个IP地址。BGP ID 就使用该路由器的IP地址中数值最大的一个。

         

BGP适用于多级结构的因特网

BGP-4的四种报文
 

BGP报文是作为TCP报文的数据部分来传送的,四种类型的BGP报文具有同样的首部。


 

练习 


 

路由器基本工作原理

        路由器是一种具有多个输入端口和输出端口的专用计算机,其任务是转发分组。 

 这是典型的路由器基本结构,它由路由选择部分分组转发部分这两部分构成

  • 路由选择部分的核心构建是路由选择处理机
  • 分组转发部分由交换结构,一组输入端口以及一组输出端口构成。

路由选择处理机的作用:其任务是根据所使用的路由选择协议的周期性的与其他路由器进行路由信息的交换,以便构建和更新路由表。

路由器的工作流程


数据分组进入交换结构后


数据分组转发


假如输入端网络层传输的是路由报文
 

        路由器的各端口还应具有输入缓冲区和输出缓冲区

  • 输入缓冲区用来暂存新进入路由器,但还来不及处理的分组。
  • 输出缓冲区用来暂存已经处理完毕,但还来不及发送的分组。 

交换结构的速率 

         交换结构的速率对于路由器的性能是至关重要的。

        为了提高路由器的转发速率,实现转换结构的三种基本方式是通过存储器,通过总线以及通过互联网络这三种交换结构可实现的。

IP多播 

        多播(Multicast,也称为组播)是一种实现“一对多”通信的技术,与传统单播“一对一”通信相比,多播可以极大地节省网络资源。

        在因特网上进行的多播,称为IP多播。

        IP多播可以分为以下两种: 

  • 只在本局域网上进行的硬件多播。
  • 在因特网上进行的多播。

        现在IP多播(multicast,以前曾译为组播)已成为互联网的一个热门课题。这是由于有许多的应用需要由一个源点发送到许多个终点,即一对多的通信。

        例如,实时信息的交付(如新闻、股市行情等)、软件更新、交互式会议等。随着互联网的用户数目的急剧增加,以及多媒体通信的开展,有更多的业务需要多播来支持

用视频接收来举例说明

        当多播组的成员数量很大时,采用多播方式可以显著地减少网络中各种资源的消耗。

IP多播与多播组 

        目前大部分主机都是通过局域网接入因特网的。因此,在因特网上进行多播的最后阶段,还是要把IP多播数据报在局域网上用硬件多播交付给多播组的所有成员。
 

  • 每个多播组的成员是可以随时变动的一台主机可以随时加入或离开多播组
  • 多播组成员的数量和所在的地理位置也不受限制一台主机可以属于几个多播组
  • 非多播组成员也可以向多播组发送IP多播数据报。

        与IP数据报相同,IP多播数据报也是“尽最大努力交付”,不保证一定能够交付给多播组内的所有成员。

        IPv4多播地址又可分为预留的多播地址(永久多播地址)、全球范围可用的多播地址以及本地管理的多播地址。


 

在局域网上进行硬件多播 

            由于MAC地址(也称为硬件地址)有多播MAC地址这种类型,因此只要把IPv4多播地址映射成多播MAC地址,即可将IP多播数据报封装在局域网的MAC帧中。

        当给某个多播组的成员主机配置其所属多播组的IP多播地址时,系统就会根据映射规则从该IP多播地址生成相应的局域网多播MAC地址。

剖析mac地址和ip地址的关系

        因特网号码指派管理局IANA,将自己从IEEE注册管理机构申请到的以太网MAC地址块中从01-00-5E-00-00-00到01-00-5E-7F-FF-FF的多播MAC地址,用于映射IPv4多播地址。


最大多播mac地址和最小多播mac地址


32位ipv4地址映射成48位多播mac地址的方法


IP多播地址与多播MAC地址的映射关系

        如果不同的IP多播地址之间的不同之处仅出现在不能映射的那5个比特,则这些IP多播地址会映射出同一个多播MAC地址。

收到IP多播数据报的主机还要在网际层利用软件进行过滤 

在mac层无法匹配的主机


在mac层匹配的,但网际层不匹配


mac层和网际层都匹配的

 在因特网上进行IP多播的两种协议

        要在因特网上进行IP多播,就必须要考虑IP多播数据报经过多个多播路由器进行转发的问题

        多播路由器必须根据IP多播数据报首部中的IP多播地址,将其转发到有该多播组成员的局域网。

简述两种协议的作用 

IGMP的作用 


 网际组管理协议IGMP

        和网际控制报文协议ICMP相似,IGMP使用IP数据报传递其报文(即 IGMP报文加上IP首部构成IP数据报),但它也向IP提供服务。因此,我们不把 IGMP看成是一个单独的协议,而是属于整个网际协议IP的一个组成部分。
 

洪泛法建立广播树

        洪泛法在网络环路中会兜圈产生广播风暴。

网际组管理协议IGMP的基本工作原理——加入多播组
 

 



 网际组管理协议IGMP的基本工作原理——监视多播组的成员变化

 


大约两秒钟后,主机B发送IGMP成员报告报文



假设主机C不再是多播组228.1.1 1.1的成员

   


        需要说明的是,收到IGMP成员查询报文的被查询多播组的任何成员将会发送IGMP成员报告报文作为应答。为了减少不必要的重复应答,每个多播组只需要有一个成员应答就可以了。

        因此采用了一种延迟响应的策略,那就是收到IGMP成员查询报文的主机,并不是要立即响应,而是在1到10秒的范围内等待一段随机的时间后再进行响应。如果在这段随机的时间内收到了同组其他成员发送的IGMP呈报报告报文就取消响应。

网际组管理协议IGMP的基本工作原理——退出多播组
 

        IGMPv2在IGMPv1的基础上增加了一个可选项:当主机要退出某个多播组时,可主动发送一个离开组报文而不必等待多播路由器的查询。这样可使多播路由器能够更快地发现某个组有成员离开。
 


IGMP成员查询过程请看——监视多播组成员变化

 多播路由选择协议

        基于源树的多播路由选择的最典型算法是反向路径多播(Reverse Path Multicasting,RPM)算法。

        RPM算法包含以下两个步骤:

  • 利用反向路径广播(Reverse Path Broadcasting,RPB)算法建立一个广播转发树。
  • 利用剪枝(Pruning)算法,剪除广播转发树中的下游非成员路由器,获得一个多播转发树。

        要建立广播转发树,可以使用洪泛(Flooding)法。

反向路径广播RPB算法

特点如下: 

 



        经过上述过程,最终可以得出转发广播分组的广播转发树以后就按该广播转发树转发广播分组,这样就避免了广播分组兜圈子,同时每一个路由器也不会收到重复的广播分组。
 

        RPB虽然很好的解决了转发环路的问题,但只是实现了广播,要实现真正的多播,还要将像R8这样的没有多播组成员的非成员从广播转发数上减除 

剪除报文 


嫁接报文

组共享树多播路由选择
 

特点如下:

 

假如源主机向多播组发送了一个多播分组

  

其他多播路由选择 

虚拟专用网VPN和网络地址转换NAT

虚拟专用网特点如下: 

 虚拟专用网的工作流程

 

        
        虽然两个专用网内的主机间发送的数据报是通过公用的因特网传送的,但从效果上就好像是本机构的专用网上传送一样,这也是虚拟专用网中“虚拟”的含义。
 

  • 本例所示的是同一机构内不同部门的内部网络所构成的VPN,又称为内联网VPN。
  • 有时,一个机构的虚拟专用网VPN需要某些外部机构(通常是合作伙伴)参加进来,这样的VPN就称为外联网VPN。

网络地址转换 

        下面讨论另一种情况,就是在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和互联网上的主机通信(并不需要加密),那么应当采取什么措施呢?

        最简单的办法就是设法再申请一些全球IP地址。但这在很多情况下是不容易做到的目前使用得最多的方法是采用网络地址转换。
 

 最基本的NAT方法

主机A位于专用网中,其IP地址为专用地址IPA

主机B位于因特网中,其IP地址为全球地址IPB,

该路由器为net路由器,它至少拥有一个有效的外部全球IP地址IPG

 

网络地址与端口号转换方法
  

假设A发送C发送封装有运输层UDP的IP数据报 



假设此时主机B碰巧发送了源端口号与A相同的数据报


主机c收到专用网中的主机A发来的IP数据报后,给主机A发回一个IP数据报

NAT与NAPT两种网络地址转换的总结 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/801902.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

重学PyTorch,粗略笔记(二)dataset,dataloader

dataset 对于单个样本 dataloader 批量样本 Dataset 存储样本和它们相应的标签,DataLoader 在 Dataset 基础上添加了一个迭代器,迭代器可以迭代数据集,以便能够轻松地访问 Dataset 中的样本(变为mini-batch形式,多个样本组合成…

自动驾驶车道线检测系列—3D-LaneNet: End-to-End 3D Multiple Lane Detection

文章目录 1. 摘要概述2. 背景介绍3. 方法3.1 俯视图投影3.2 网络结构3.2.1 投影变换层3.2.2 投影变换层3.2.3 道路投影预测分支 3.3 车道预测头3.4 训练和真实值关联 4. 实验4.1 合成 3D 车道数据集4.2 真实世界 3D 车道数据集4.3 评估结果4.4 评估图像仅车道检测 5. 总结和讨论…

怎样在 PostgreSQL 中优化对多表关联的连接条件选择?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 怎样在 PostgreSQL 中优化对多表关联的连接条件选择一、理解多表关联的基本概念二、选择合适的连接条件…

深入解析HTTPS与HTTP

在当今数字化时代,网络安全已成为社会各界关注的焦点。随着互联网技术的飞速发展,个人和企业的数据安全问题日益凸显。在此背景下,HTTPS作为一种更加安全的通信协议,逐渐取代了传统的HTTP协议,成为保护网络安全的重要屏…

vue 实现下拉框的数据是树状结构

页面显示效果 vue实现代码 <el-form-item label"公司名称" prop"comName"><el-select ref"select" v-model"queryParams.comName" placeholder"请选择公司名称" clearable size"small"change"handl…

智慧医院智能导诊系统源码,智慧导诊小程序源码,采用前端框架:Uniapp+后端框架:springboot+移动端:微信小程序、H5自主研发

智慧导诊系统是一种基于人工智能和大数据技术的医疗辅助系统&#xff0c;旨在提高患者的就医效率和医院的管理效率。以下是对智慧导诊系统的详细解析&#xff1a; 定义与功能 智慧导诊系统通过自然语言处理、机器学习等技术&#xff0c;自动分析患者的病情及伴随症状&#xf…

Spring Boot集成Activity7实现简单的审批流

由于客户对于系统里的一些新增数据&#xff0c;例如照片墙、照片等&#xff0c;想实现上级逐级审批通过才可见的效果&#xff0c;于是引入了Acitivity7工作流技术来实现&#xff0c;本文是对实现过程的介绍讲解&#xff0c;由于我是中途交接前同事的这块需求&#xff0c;所以具…

模拟器小程序/APP抓包(Reqable+MUMU模拟器)

一、使用adb连接上MUMU模拟器 打开多开器点击ADB图标 连接模拟器端口&#xff1a; adb connect 127.0.0.1:16384列出已连接的设备&#xff1a; adb devices正常会显示MuMu的设备已连接 二、下载Reqable 1.下载链接&#xff1a;客户端下载 | Reqable 2.文档链接&#xff1a;…

昇思25天学习打卡营第12天|LLM-基于MindSpore实现的BERT对话情绪识别

打卡 目录 打卡 预装环境 BERT 任务说明 数据集 数据加载和数据预处理&#xff1a;process_dataset 函数 模型构建与训练 运行示例 模型验证 模型推理 自定义推理数据集 运行结果示例 代码 预装环境 pip install -i https://pypi.mirrors.ustc.edu.cn/simple min…

使用ant+jmeter如何生成html报告

一、安装ant 下载apache-ant&#xff0c;放到对应路径下&#xff0c;然后进行环境变量配置。系统变量的CLASSPATH添加E:\Installation Pack\eclipse\apache-ant-1.9.6\lib;用户变量的PATH添加&#xff1a;E:\Installation Pack\eclipse\apache-ant-1.9.6\bin。打开cmd&#xf…

持续集成02--Linux环境更新/安装Java新版本

前言 在持续集成/持续部署&#xff08;CI/CD&#xff09;的旅程中&#xff0c;确保开发环境的一致性至关重要。本篇“持续集成02--Linux环境更新/安装Java新版本”将聚焦于如何在Linux环境下高效地更新或安装Java新版本。Java作为广泛应用的编程语言&#xff0c;其版本的更新对…

前端框架入门之Vue的模版语法与数据单向绑定 数据双向绑定

目录 vue的模版语法 数据绑定 vue的模版语法 关于模版这个概念 root容器里面被称为模版 我们的语法分为插值语法和插值语法 这样就是实现了插值语法 接下来我们实现指令语法 首先我们写一个a标签 链一个超链接上去 <h1>指令语法</h1><a href"https:/…

【46 Pandas+Pyecharts | 当当网畅销图书榜单数据分析可视化】

文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. Pandas数据处理2.1 读取数据2.2 查看数据信息2.3 去除重复数据2.4 书名处理2.5 提取年份 &#x1f3f3;️‍&#x1f308; 3. Pyecharts数据可视化3.1 作者图书数量分布3.2 图书出版年份…

openeuler 终端中文显示乱码、linux vim中文乱码

1、解决终端乱码 网上很多教程试了都不生效&#xff0c;以下方法有效&#xff1a; 确认终端支持中文显示&#xff1a; echo $LANG 输出应该包含 UTF-8&#xff0c;例如 en_US.UTF-8。如果不是&#xff0c;您可以通过以下命令设置为 UTF-8&#xff1a; export LANGzh_CN.UTF-8…

昇思25天学习打卡营第12天|Vision Transformer图像分类、SSD目标检测

Vision Transformer&#xff08;ViT&#xff09;简介 近些年&#xff0c;随着基于自注意&#xff08;Self-Attention&#xff09;结构的模型的发展&#xff0c;特别是Transformer模型的提出&#xff0c;极大地促进了自然语言处理模型的发展。由于Transformers的计算效率和可扩…

【数据结构(邓俊辉)学习笔记】高级搜索树02——B树

文章目录 1. 大数据1.1 640 KB1.2 越来越大的数据1.3 越来越小的内存1.4 一秒与一天1.5 分级I/O1.6 1B 1KB 2. 结构2.1 观察体验2.2 多路平衡2.3 还是I/O2.4 深度统一2.5 阶次含义2.6 紧凑表示2.7 BTNode2.8 BTree 3. 查找3.1 算法过程3.2 操作实例3.3 算法实现3.4 主次成本3.…

django踩坑(四):终端输入脚本可正常执行,而加入crontab中无任何输出

使用crontab执行python脚本时&#xff0c;有时会遇到脚本无法执行的问题。这是因为crontab在执行任务时使用的环境变量与我们在终端中使用的环境变量不同。具体来说&#xff0c;crontab使用的环境变量是非交互式(non-interactive)环境变量&#xff0c;而终端则使用交互式(inter…

【Map和Set】

目录 1&#xff0c;搜索树 1.1 概念 1.2 查找 1.3 插入 1.4 删除&#xff08;难点&#xff09; 1.5 性能分析 1.6 和 java 类集的关系 2&#xff0c;搜索 2.1 概念及场景 2.2 模型 3&#xff0c;Map 的使用 3.1 关于Map的说明 3.2 关于Map.Entry的说明 3.3 Map的…

JAVA-----异常处理

一、定义 在 Java 中&#xff0c;异常&#xff08;Exception&#xff09;是指程序在执行过程中遇到的不正常情况&#xff0c;这些情况可能导致程序无法继续执行或产生错误的结果。异常可以是 Java 标准库中提供的内置异常类&#xff0c;也可以是开发人员自定义的异常类。 二、…

小程序-2(WXML数据模板+WXSS模板样式+网络数据请求)

目录 1.WXML数据模板 数据绑定 事件绑定 小程序中常用的事件 事件对象的属性列表 target和currentTarget的区别 bindtap的语法格式 在事件处理事件中为data中的数据赋值 事件传参与数据同步 事件传参 bindinput的语法绑定事件 文本框和data的数据同步 条件渲染 w…