本文分为六个部分,分别介绍 “网络层概要、路由算法、路由协议、IP组播、移动IP、网络层设备”。
关于网络层最重要的IP协议(IPv4+IPv6)的知识,本文没有介绍,在另一篇博客中阐述 https://blog.csdn.net/qq_36963950/article/details/104178549
要在全世界范围内把数以百万计的网络互联起来,并且能够互相通信,是一个非常复杂的任务,需要解决许多问题,比如不同的寻址方案、不同的网络接入机制、不同的差错处理方法、不同的路由选择机制等。用户的需求是多样的,没有一种单一的网络能适应所有用户的需求。网络层所要完成的任务之一就是使这些异构的网络实现互联。所谓网络的互联是指将两个以上的计算机网络,通过一定的方法,用一种或多种通信处理设备(即中间设备)相互联接起来,以构成更大的网络系统。
关于网络层使用路由器实现互联:在计算机网络的分层结构中,不同层有不同的中继设备:
计算机网络分层 | 中继设备/中继系统 |
---|---|
物理层 | 中继器、集线器Hub |
数据链路层 | 网桥或交换机(交换机是多端口网桥,两者本质上是一个东西) |
网络层 | 路由器 |
网络层以上 | 网关 |
所以,“网络层使用路由器实现互联”表示“网络层的中继设备是路由器”
路由器是什么?
说到路由器,只要是家里装过wifi的一定都很熟悉了,它就是:对,但是我们使用的只是家庭路由器,虽然它和计算机网络中的路由还是有区别的,但是执行相同的协议,相同的计算机理论。
路由器本质上也是一个计算机,用于在互联网中进行路由选择。
注意,路由器这个设备很重要,整个网络层都是以路由器为结点交换数据信息的。
使用物理层或数据链路层的中继系线时,仅仅是把一个网络扩大了,而从网络层的角度看,它仍然是同一个网络,一般并不称之为网络互联。因此网络互联通常是指用路由器进行网络互联和路由选择,路由器就是一台专用计算机,用于在互联网中进行路由选择。
TCP/IP体系在网络互联上采用的做法是在网络层(即IP层)采用了标准化协议,但相互联接的网络则可以是异构的。
众多计算机网络通过一些路由器进行互联,由于参加互联的计算机网络都使用相网的网际协议IP(Internet Protocol),因此可以把互联以后的计算机网络看成是一个虚拟互联网络,如下:
所谓虚拟互联网络也就是逻辑互联网络,它的意思就是互联起来的各种物理网络的异构性本 来是客观存在的,但是通过使用IP协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用IP协议的虚拟互联网络可简称为IP网络。
使用虚拟互联网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样 而看不见互联的具体的网络异构细节(如具体的编址方案,路由选择协议等)。
路由器主要完成两个功能:一个是路由选择(确定哪一条路径),另一个是分组转发(当一个分组到达时所采取的动作)。前者是根据特定的路由选择协议构造出路由表,同时经常或定期 地和相邻路由器交换路由信息而不断地更新和维护路由表。后者处理通过路由器的数据流,关键操作是转发表查询、转发以及相关的队列管理和任务调度等。
1)路由选择:按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑的变化情况,动态地改变所选择的路由;
2)分组转发:路由器根据转发表将用户的IP数据报从合适的端口转发出去。
路由表是根据路由选择算法得出的,而转发表是从路由表得出的。转发表的结构应当使查找过程最优化,路由表则需要对网络拓扑变化的计算最优化。在讨论路由选择的原理时,往往不去区分转发表和路由表,而是笼统地使用路由表这一名词。
在通信子网中,由于出现过量的分组而引起网络性能下降的现象称为拥塞,考虑一种情况 某个路由器所在链路的带宽为R B/s(注意:R是未知数字母,B/s是带宽单位,字节每秒),如果IP分组只从它的某一个端口进入,其速率为r B/s。当r=R时,可能看起来是件“好事”,因为链路带宽被充分利用。
但是,当分组到达路由器的速率接近R时,平均时廷急剧增加,并且会有大量的分组被丢弃(路由器端口的缓冲区是有限的),整个网络的吞吐量会骤降,源与目的地之间的平均时延也会变得近乎无穷大。
判断网络是否进入拥塞状态的方法是观察网络吞吐量与网络负载的关系:
1)如果随着网络负载的增加,网络吞吐量明显小于正常的吞吐量,那么网络就可能进入了“轻度拥塞”状态;
2)如果网络吞吐量随着网络负载的增大反而下降,网络就可能进入拥塞状态;
3)如果网络负载继续增大,而网络吞吐量下降到零,网络就可能进入了死锁状态。
为了避免拥塞现象的出现,要采用能防止拥塞的一系列方法对子网进行拥塞控制,拥塞控制 主要解决的问题是如何获取网络中发生拥塞的信息,从而利用这些信息进行控制,以避免由于拥塞而出现分组的丢失以及严重拥塞而产生网络死锁的现象。
拥塞控制是确保子网能够承载所达到的流量,这是一个全局性的过程,涉及各方面的行为: 主机、路由器及路由器内部的转发处理过程等。单一的增加资源并不能解决拥塞。
流量控制和拥塞控制的区别:
名称 | 含义 | 范围 | 解决 |
---|---|---|---|
流量控制 | 发送端和接收端之间的点对点通信量的控制 | 局部性问题(点与点之间) | 抑制发送端发送数据的速率,以便使接收端来得及接收 |
拥塞控制 | 整个网络中传送数据的流量控制 | 全局性问题(整个通信网络) | 抑制发送端发送数据的速率,降低整个网络负载 |
1)开环控制:在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。它是一种静态的预防方法。一旦整个系统启动并运行起来,中途就不再需要修改。开环控制手段可包括确定何时可接收新流量、何时可丢弃分组及丢弃哪些分组、确定何种调度决策等,所有这些手段的共性是:在做决定时不考虑当前网络的状态。
2)闭环控制:事先不考虑有关发生拥塞的各种因素,采用监测网络系统去监视,及时检测 到哪里发生拥塞,然后将拥塞信息传到合适的地方,以便调整网络系统的运行,并解决出现的问题。闭环控制是基于反馈环路的概念,它是一种动态的方法。
路由器转发分组是通过路由器转发的,而路由器是通过各种算法得到的。我们根据能否随网络的通信量或拓扑自适应地进行调整变化来划分,路由算法分为两类:静态路由算法、动态路由算法。
静态路由算法:又称为非自适应路由算法,由网络管理员手工配置路由信息。当网络的拓扑结构或链路的状态发生变化,网络管理员需要手动修改路由器中的静态路由信息,但是静态路由算法仅适用于小型、简单、安全性高的军事、商业网络系统(大型民用网络的结构复杂、变化大,网络管理员hold不住啊)。
动态路由算法:又称为自适应路由算法,路由器上的路由表项是通过相互联接的路由器之间比起交换信息,然后按照一定的算法优化出来,而且这些路由信息是在一定时间间隙里不断更新,以适应不断变化的网络,以随时获得最优的寻路效果。
两种路由算法,用表格看起来更方便:
静态路由算法(非自适应路由算法) | 动态路由算法(自适应路由算法) | |
---|---|---|
含义 | 由网络管理员来设置调配路由信息 | 事先定义好自适应路由算法,自动适应不断变化的网络 |
优点 | 简单、可靠,保证安全性 | 适应大型、复杂民用网络 |
缺点 | 无法适用大型、复杂民用网络 | 不保证安全性 |
适用 | 1、小型、简单网络系统(网络负荷稳定、变化不大的网络系统)2、高安全性的军事网络、商业网络 | 1、大型、复杂网络系统(网络负荷不稳定、变化大的网络系统)2、安全性一般的民用网络 |
实例 | 无,了解即可 | 距离-向量路由算法、链路状态路由算法 |
如上表可知,对于大型网络系统,结构复杂、情况多变,不可能由网络管理员来设置调配(即不能使用静态路由算法),只能设置好算法,自动适应网络算法,这里我们将常用的动态路由算法分为两类——“距离-向量路由算法”“链路状态路由算法”。
含义:所有的结点都定期地将它们的整个路由选择表传送给所有与之直接相邻的结点。
这种路由选择表包含:每条路由的目的地(另一结点)、路由的代价(又称距离)。
注意,粗体“距离”,在计算机网络的不同协议中,距离的定义稍有不同,如网络层的RIP协议将距离定义为“跳数”,指从源端口到达目的端口所经过的路由个数,经过一个路由器跳数加一。
在这种算法中,所有的结点都必须参与距离向量交换,以保证路由的有效性和一致性,也就是说,所有的结点都监听从其他结点传送来的路由选择更新信息,并在下列情况下更新它们的路由选择表:
1)被通告一条新的路由,该路由在本结点的路由表中不存在,此时本地系统加入这条新的路由;
2)发送来的路由信息中有一条到达某个目的地的路由,该路由比当前使用的路由有较短的 距离(较小的代价)。此种情况下,就用经过发送路由信息的结点的新路由替换路由表中达到那个目的地的现有路由。
距离-向量路由算法的实质是迭代计算一条路由中的站段数或延迟时间,从而得到到达一个目标的最短(最小代价)通路。它要求每个结点在每次更新中都将它的全部路由表发送给其所有相邻点。显然,更新报文的大小与通信子网的结点个数成正比,大的通信子网将导致很大的更新报文。由于更新报文发给直接邻接的结点,所以所有的结点都将参加路由选择信息交换。
基于这些原因,在通信子网上传送的路由选择信息的数量很容易变得非常大,最常见的距离向量路由算法是RIP算法(第四部分-路由协议会介绍这个RIP算法)。
链路状态路由算法要求每个参与该算法的结点都有完全的网络拓扑信息,它们执行下述两项 务,第一,主动测试所有邻接结点的状态。两个共享一条链接的结点是相邻结点,它们连接到 算同一条链路,或者连接到同一广播型物理网络。第二,定期地将链路状态传播给所有其他的结点 (即所有其他路由结点),典型的链路状态算法是OSPF算法(第四部分-路由协议会介绍这个OSPF算法)。
在一个链路状态路由选择中,一个结点检查所有直接链路的状态,并将所得的状态信息发送 给网上所有其他的结点,而不是仅仅送给那些直接相连的结点。每个结点都用这种方式,从网上所有其他的结点接收包含直接链路状态的路由选择信息。
每当链路状态报文到达时,路由结点便使用这些状态信息去更新自己的网络拓扑和状态“视 野图”,一旦链路状态发生了变化,结点对更新了的网络图利用Dijsktra最短路径算法重新计算路由,从单一的源出发计算到达所有目的结点的最短路径。
链路状态路由算法主要有三点特征:
1)向本自治系统(AS autonomous system)中所有路由器发送信息,这里使用的方式是泛洪法,即路由器通过所有端口向所有相邻的路由器发送信息,而每一个相邻路由器又将此信息发往其所有相邻路由器(但不再发送给刚刚发来信息的那个路由器)。
2)发送的信息就是与路由器相邻的所有路由器的链路状态(这里的“链路状态”就是说明本路由器都和哪些路由器相邻以及该链路的“度量”),但这只是路由器所知道的部分信息。具体地,对于OSPF算法,链路状态的“度量”主要用来表示费用、距离、时延、带宽等。
3)只有当链路状态发生变化时,路由器才向所有路由器发送此消息。
由于一个路由器的链路状态只涉及相邻路由器的连通状态,因而与整个互联网的规模并无直 接关系,因此链路状态路由算法可以用于大型的或路由信息变化聚敛的互联网环境。
链路状态路由算法的主要优点是,每个路由结点都使用同样的原始状态数据独立地计算路径 ,而不依赖中间结点的计算:链路状态报文不加改变地传播,故采用该算法易于查找故障。当一个结点从所有其他结点接收到了报文时,它可以在本地立即计算正确的通路,保证一步会聚,最后由于链路状态报文仅运载来自单个结点关于直接链路的信息,其大小与网络中的路由结点数目无关,因此,链路状态算法比距离向量算法有更好的规模可伸展性。
距离向量路由算法与路状态路由算法的比较:在距离向量路由算法中,每个结点仅与它 的直接邻居交谈,它为它的邻居提供了从自己到网络中所有其他结点的最低费用估计,在链路状态路由算法中,每个结点通过广播的方式与所有其他结点交谈,但它仅告诉它们与它直接相连的链路的费用,相较之下,距离向量路由算法有可能遇到路由环路等问题。
当网络规模扩大时,路由器的路由表成比例地增大,这不仅消耗越来越多的路由器缓冲区空 间,且需要用更多CPU时间来扫描路由表,用更多的带宽来交换路由状态信息,因此路由选择必须按照层次的方式进行。
因特网将整个互联网划分为许多较小的自治系统(注意一个自治系统里面包含很多局域网),每个自治系统有权自主地决定本系统内采用何种路由选择协议。如果两个自治系统需要通信, 就需要一种在两个自治系统之间的协议来屏蔽这些差异。据此,因特网把路由选择协议划分为两类:
1)一个自治系统内部所使用的路由选择协议称为内部网关协议(IGP),也称为域内路由选 择,具体的协议有RIP和OSPF等。
2)自治系统之间所使用的路由选择协议称为外部网关协议(EGP),也称为域间路由选择,用于不同自治系统的路由器之间交换路由信息,并负责为分组在不问自治系统之间选择最优的路 径。具体的协议有BGP。
当使用层次路由时,OSPF将一个自治系统再划分为若干个区域(Area),每个路由器都知道在本区域内如何把分组路由到目的地的细节,但不用知道其他区域的内部结构。
采用分层次划分区域的方法虽然使交换信息的种类增多了,同时也使OSPF协议更加复杂了。但这样做却能使每一个区域内部交换路由信息的通信量大大减小,因而使OSPF协议能够用于规模很大的自治系统中。
本部分介绍路由协议,关于路由协议,我们先介绍一个概念——自治系统AS automatic system
注意,自治系统这个概念很重要,后面的域内路由、域间路由、RIP协议、OSPF协议、BGP协议,都是要以自治系统这个概念为基础的。
自治系统含义:指在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议用以确定分组在AS之间的路由。
举例:一个自治系统内的所有网络都属于一个行政单位(如,一个公司、一所大学、一个政府部门 等)来管辖,一个自治系统的所有路由器在本自治系统内都必须是连通的。
自治系统内部的路由选择称域内路由选择,自治系统之间的路由选择称域间路由选择。
因特网有两大类路由选择协议
1、内部网关协议(Interior Gateway Protocol,IGP) :在一个自治系统内部使用的路由选择协议,它与互联网中其他自治系统选用什么路由选择协议无关。目前这类路由选择协议使用得最多,如RIP协议和OSPF协议。
2、外部网关协议(External Gateway Protocol,EGP) :若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时(这两个自治系统可能使用不同的GP),就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议EGP.目前使用最多的外部网关协议是BGP-4。
两个自治系统互联在一起的示意图:
上图中,每个自治系统自己决定在本自治系统内部运行哪一个内部路由选择协议(例如,可以是RIP,也可以是OSPF),但每个自治系统都有一个或多个路由器(图中的路由器R1和R2)除运行本系统的内部路由选择协议外,还要运行自治系统间的路由选择协议(例如,BGP-4)。
路由信息协议(Routing Information Protocol,RIP)是内部网关协议BGP中最先得到广泛应 用的协议,RIP是一种分布式的基于距离向量的路由选择协议,其最大优点就是简单。
1)网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录(因此,这是一组距离,称“距离向量”)。
2)距离也称为跳数(Hop Count),规定从一路由器到直接连接的网络距离(跳数)为1.而每经过一个路由器,则距离(跳数)加1。
3)RIP认为好的路由就是它通过的路由器的数目少,即优先选择跳数少的路径 。
4)RIP允许一条路径最多只能包含15个路由器(即最多允许15跳)。因此距离等于16时,它表示网络不可到达,可见RIP只适用于小型互联网。距离向量路由可能会出现环路的情况,规定路径上的最高跳数的目的是为了防止数据报不断循环在环路上,减少网络拥塞的可能性。 5)RIP默认在任意两个使用RIP协议的路由器之间每30秒广播一次RIP路由更新信息,以便自动建立并维护路由表(动态维护)。
6)在RIP中不支持子网掩码的RIP广播,所以RIP中每个网络的子网掩码必须相问,但在新的RIP2中,支持变长子网掩码和CIDR。
(1)仅和相邻路由器交换信息,不相邻的路由器不能交换信息;如果两个路由器之间的通信不需要经过另一个路由器,那么这两个路由器就是相邻的。
(2)路由器交换的信息是当前路由所知道的全部信息,即路由器自己的路由交换表中所保存的全部信息(到本自治系统中所有网络的最短距离和到每个网络的下一跳地址)。
(3)按固定的时间间隔交换路由信息。
RIP通过距离向量算法来完成路由表的更新。刚开始,每个路由器只知道与自己直接相连的 网络,通过每30秒的RIP广播,相邻两个路由器相互将自己的路由表发给对方,于是经过第一 次RIP广播,每个路由器就知道了与自己相邻的路由器的路由表(即知道了距离自己跳数为1的 网络的路由)。同理,经过第二次RP广播,每个路由器就知道了距离自己跳数为2的网络的路由…,因此经过若干次RIP广播后,所有路由器都最终知道了整个IP网络的路由表,称为RIP 协议最终是收敛(Convergence)的,通过RiP协议收敛之后,每个路由器到每个目标网络的路由都是距离最短的(即跳数最少,最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。
每一个路由表项目都有三个关键数据:<目的网络N,距离d,下一跳路由器X>。对于每一 个相邻路由器发送过来的RIP报文,进行以下步骤:
1)对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把“下一跳” 字段中的地址都改为X,并把所有的“距离”字段的值加1
2)对修改后的RIP报文中的每一个项目,进行以下步骤:
①当原来的路由表中没有目的网络N时,则把该项目添加到路由表中
②当原来的路由表中有目的网络N,且下一跳路由器地址是X时,则用收到的项目替换原路由表中的项目
③当原来的路由表中有目的网络N,且下一跳路由器地址不是X时,如果收到的项目中的距离d小于路由表中的距离,就用收到的项目替换原路由表中的项目:否则什么也不做
3)如果180秒(RIP默认超时时间为180秒)还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器,即把距离置为16(距离为16表示不可达)
4)返回
RIP协议优点:实现简单,开销小,收敛过程较快
RIP协议缺点:
1)RIP限制了网络的规模,它能使用的最大距离为15(16表示不可达);
2)路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大
3)当网络出现故障时,会出现慢收敛现象(即需要较长时间才能将此信息传送到所有路由器),俗称“坏消息传得慢”,使更新过程的收敛时间长
RIP是应用层协议,它使用UDP传送数据(端口520),RIP协议选择的路径不一定是时间最短的,但一定是具有最少路由器的路径,因为它是根据最少的跳数进行路径选择
为了更好的学习OSPF协议,将RIP协议和OSPF协议对比:
RIP协议 | OSPF协议 | ||
相同点 | 1、进行信息交换的中继单位都是路由器;2、都是域内路由协议IGP | ||
不同点 | 向谁发送信息 | 相邻路由器 | 本自治系统内所有路由器 |
发送的信息 | 到所有网络的距离+下一跳路由器=整个路由表 | 相邻的所有路由器的链路状态 | |
何时发送信息 | 按固定的时间间隔交换路由信息 | 链路状态发生改变时交换信息 | |
使用的算法 | 距离-向量路由算法,一种动态路由算法 | 链路状态路由算法,一种动态路由算法 | |
网络层次 | RIP是应用层协议,它在传输层使用UDP协议 | OSPF是网络层协议,它不使用UDP或TCP而是直接IP数据报传送(其IP数据报首部的协议字段为89)。 |
开放最短路径优先(OSPF)协议是使用分布式链路状态路由算法的典型代表,它也是内部网关协议IGP的一种。
OSPF协议最重要的三个特点:
(1)向本自治系统中所有路由器发送信息。这里使用洪泛法,即路由器通过所有输出端口向相邻的路由器发送信息,每一个相邻的路由器又再次将所有的信息发送给相邻的路由器(但是不发送给刚刚发来信息的那个路由器)。这样,最终所有的路由器都得到这个信息的一个副本。
(2)发送的信息是本路由器相邻的所有路由器的链路状态。
(3)只有当链路状态发生变化才交换信息。
除了以上三个重要特点以外,OSPF还有以下的特点:
1)OSPF对不同的链路可根据IP分组的不同服务类型(TOS)而设置成不同的代价,因此,OSPF对于不同类型的业务可计算出不同的路由,因此十分灵活
2)如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径,这叫做多路径间的负载平衡
3)所有在OSPF路由器之间交换的分组都具有鉴别的功能,因而保证了仅在可信赖的路由器之间交换链路状态信息
4)支持可变长度的子网划分和无分类编址CIDR
5)每一个链路状态都带上一个32位的序号,序号越大状态就越新
由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态 数据库。这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。然后,每个路由器就根据这个全网拓扑结构图,使用 Dijkstra最短路径算法计算从自己到各目的网络最优路径,以此构造自己的路由表,在此之后,当链路状态发生变化时,每个路由器重新计算到各目的网络的最优路径,构造新的路由表。
注意:然使用Dijkstra算法能计算出完整的最优路径,但是路由表中不会存储完整路径
两只存储“下一跳(只有到了下一跳路由器,才能知道再下一跳应当怎样走)。
为使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域。划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况,这些区域也有层次之分。处在上层的域叫主干区域,负责连通其他下层的区域,并且还连接其他自治域。
OSPE 其有以下五种分组类型:
1)问候分组,用来发现和淮持邻站的可达性
2)数据库描述分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息
3)链路状态请求分组,向对方请求发送某些链路状态项目的详细信息
4)链路状态更新分组,用洪泛法对全网更新链路状态
5)链路状态确认分组,对链路更新分组的确认
通常每隔10秒,每两个相邻路由器要交换一次问候分组,以便知道哪些站可达。在路由器刚开始工作时,OSPF让每一个路由器使用数据库描述分组和相邻路由器交换本数据库中已有的链路状态摘要信息。然后,路由器就使用链路状态请求分组,向对方请求发送自己所缺少的某些链路状态项目的详细信息。经过一系列的这种分组交换,全网同步的链路数据库就建立了。
下图给出了OSPF的基本操作图,演示OSPF五种分组类型:
在网络运行的过程中,只要一个路由器的链路状态发生变化,该路由器就要使用链路状态史 新分组,用洪泛法向全网更新链路状态,其他路由器在更新后,发送链路状态确认分组对更新分组进行确认。
为了确保链路状态数据库与全网的状态保持一致,OSPF还规定每隔一段时间,如30分钟要刷新一次数据库中的链路状态。由于一个路由器的链路状态只涉及与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系,因此,当互联网规模很大时,OSPF协议要比RIP好得多,而且OSPF协议没有“坏消息传播得慢”的问题
注意:教材上说OSPF协议不使用UDP数据报传遂,而是直接使用IP数据报传送,在此解释一下什么叫用UDP传运,什么叫用IP数播报传送。用UDP传是指将该信息作为UDP报文的数据部分,而直接使用IP数据报传送是指将该信息直接作为IP数据报的数据部分。RIP报文 算是作为UDP数据报的数据部分。
边界网关协议( Border Gateway Protocol,BGP)是不同自治系统的路由器之间交换路由信息的协议。它是一种外部网关协议。边界网关协议常常应用于互联网的网关之间。路由表包含已知路由器的列表、路由器能够达到的地址以及到达每个路由器的路径的跳数。
内部网关协议主要是设法使数据报在一个AS中尽可能有效地从源站传送到目的站。在一个 AS内部也不需要考虑其他方面的策略。然而BGP使用的环境却不同,主要因为
1)因特网的规模太大,使得自治系统之间路由选择非常困难
2)对于自治系统之间的路由选择,要寻找最佳路由是很不现实的
3)自治系统之间的路由选择必须考虑有关策略
边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子) 而并非要寻找一条最佳路由,BGP采用的是路径-向量路由选择协议,它与距离向量协议和链路状态协议有很大的区别。BGP协议是应用层协议,它是基于TCP的。
BGP协议的工作原理:每一个自治系统的管理员要选择至少一个路由器(可以有多个)作为该自治系统的“BGP发言人”,一个BGP发言人与其他自治系统中的BGP发言人要交换路由信 息,就要先建立TCP连接(可见BGP报文是通过TCP传送,也就是说BGP报文是TCP报文的 数据部分),然后在此连接上交换BGP报文以建立BGP会话,再利用BGP会话交换路由信息 当所有BGP发言人都相互交换网络可达性的信思后,各BGP发言人就可找出到达各个自治系统的比较好的路由。
每一个BGP发言人除了必须运行BGP协议外,还必须运行该AS所使用的内部网关协议,如OSPF或RIP。BGP所交换的网络可达性信息就是要到达某个网络(用网络前缀表示)所要经 过的一系列AS。
BGP协议的特点有:
1)BGP协议交换路由信息的结点数量级是自治系统的数量级,这要比这些自治系统中的网 络数少很多。
2)每一个自治系统中BGP发言人(或边界路由器)的数目是很少的,这样就使得自治系统之间的路由选择不致过分复杂。
3)BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
4)在BGP刚运行时,BGP的邻站是交换整个的BGP路由表,但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销方面都有好处。
BGP-4共使用四种报文:
1)打开(Open)报文,用来与相邻的另一个BGP发言人建立关系
2)更新(Upte)报文,用来发送某一路由的信息,以及列出要激销的多条路由
3)保活( Keepalive)报文,用来确认打开报文和周期性地证实邻站关系 第一章网络层
4)通知( Notification)报文,用来发送检测到的差错
RIP,OSPF与BGP协议的比较如下表所示
协议 | RIP | OSPF | BGP | |
类型 | 内部 | 内部 | 外部 | |
路由算法 | 距离-向量路由算法 | 链路状态路由算法 | 路径-向量路由算法 | |
传递协议 | UDP | IP | TCP | |
路径选择 | 跳数最少 | 代价最低 | 较好,非最佳 | |
交换结点 | 和本结点相邻的路由器 | 网络中的所有路由器 | 和本结点相邻的路由器 | |
交换内容 | 当前路由器知道的全部信息,即自己的路由表,到所有网络的距离+下一跳路由器 | 与本路由器相邻的所有路由器的链路状态 | 首次 | 整个路由表 |
非首次 | 有变化的部分 |
小结:给出路由协议与路由算法关系图
为了能够支持像视频点播和视频会议这样的多媒体应用,网络必须实施某种有效的组播机制。 使用多个单播传送来仿真组播总是可能的,但这会引起主机上大量的处理开销和网络上太多的交通量。人们所需要的组播机制是让源计算机一次发送的单个分组可以抵达用一个组地址标识的若干台目标主机,并被它们正确接收,这就是IP组播。
注意:组播一定是仅应用于UDP,它对于将报文同时送往多个接收者的应用来说非常重要。而TCP是一个面向连接的协议,它意味着分别运行于两台主机(由IP地址来确定)内的两个进程(由端口号来确定)之间存在一条连接,所以是一对一地发送。
使用组播的现实需求是,应用程序要把一个分组发送给多个目的地主机。
如果不使用IP组播(即使用单播方式完成),则源主机(下图中是音视频服务器)需要对每一个目的主机(这里是客户机)进行一次单播,发送一个单独的IP分组。
如果使用IP组播,则源主机把单个IP分组发送给一个组播地址(IPv4和IPv6都有预留的组播地址,组播地址用于标识一组地址),网络把这个IP分组给该组播组中的每一个主机都投递一个拷贝,从而完成一个分组发送给多个目的主机。
演示如图:
不使用IP组播
使用IP组播
注意:IP组播中,主机可以选择加入或离开一个组,从而一个主机可以同时属于多个组。
含义:指组播地址(IPv4和IPv6都有对应的组播地址)对应的计算机主机构成的一个集合。
组播组与组播地址:每个组(即每个组播组)都有一个特别分配的地址,要给该组发送的计算机将使用这个地址作为分组的目标地址,在IPv4中,这些地址在D类地址空间中分配, 而IPv6也有一部分地址空间保留给组播组。
IGMP协议:主机使用一个称作IGMP(Internet Group Manage ment Protocol 因特网组管理协议)的协议加入组播组,它们使用该协议通知在本地网络上的路由器关于要接收发送给某个组播组的分组的愿望。通过扩展路由器的路由选择和转发功能,可以在许多路由器互联的支持硬件组播的网络上面实现因特网组播。
注意:主机组播时仅发送一份数据,只有数据在传送路径出现分岔时才将分组复制
后继续转发。这样对发送者而言,数据只需发送一次就可以发送到所有接收者,大大减轻了网络的负载和发送者的负担。组播需要路由器的支持才能实现,能够运行组播协议的路由器称为组播路由器。
IP组播使用D类地址格式。D类地址的前四位是1110.因此D类地址范围是224.0.0.0 239.255.255.255。每一个D类P地址标志一个组播组。
组播数据报和一般的IP数据报的区别在于它使用D类IP地址仅作为目的地址,并且首部中的协议字段值是2,表明使用IGMP协议。需委注意的是:
1)组播数据报也是“尽最大努力交付”,不提供可靠交付;
2)组播地址只能用于目的地址,而不能用于源地址;
3)对组播数据报不产生ICMP差错报文,因此,若在PING命令后面键入组播地址,将水远 不会收到响应;
4)并非所有的D类地址都可作为组播地址。
IP组播可以分为两种:
一种是因特网范围内的网络组播,
一种是局域网范围内的硬件组播。
两种组播的关系是:在因特网上进行组播的最后阶段,还是要把组播数据报在局域网上用硬件组播交付给组播组的所有成员。
网络组播举例:
一个音视频服务器服务于90个主机,就是刚才上面那个图(刚才是为了对比不使用组播和使用组播,这里是为了对比网络组播和硬件组播)。
硬件组播举例:
IANA拥有的以太网组播地址的范围是从01-00-5E-00-00-00到01-00-5E-7F-FF-FF,不难看出,在每一个地址中,只有23位可用作组播。这只能和D类IP地址中的23位有一一对应关系,D类IP地址可供分配的有28位,可见在这28位中的前5位不能用来构成以太网的硬件地址。
例如,IP组播地址224.128.64.32(即E0-80-40-20)和另一个IP组播地址224.0.64.32(即 E0-00-40-20)转换成以太网的硬件组播地址都是01-00-5E-00-40-20.由于组播IP地址与以太网 硬件地址的映射关系不是唯一的,因此收到组播数据报的主机,还要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃。如图:
为了使路由器知道组播组成员的信息,需要利用到IGMP协议(Internet Group Manage ment Protocol 因特网组管理协议),连接在局域网上的组播路由器还必须和因特网上的其他组播路由器协同工作,以便把组播数据报用最小代价传送给所有的组成员,这就需要使用组播路由选择协议。
IGMP并非是在因特网范围内对所有组播组成员进行管理的协议,IGMP不知道IP组播组包 含的成员数,也不知道这些成员都分布在哪些网络上。IGMP协议是让连接在本地局域网上的组播路由器知道本局域网上是否有主机参加或退出了某个组播组。
IGMP应视作 TCP/IP协议的一部分,其工作可分为两个阶段:
第一阶段:当某个主机加入新的组播组时,该主机应向组播组的组播地址发送一个IGMP报 文,声明自己要成为该组的成员,本地的组播路由器收到IGMP报文后,将组成员关系转发给因特网上的其他组播路由器
第二阶段:因为组成员关系是动态的,本地组播路由器要周期性地探询本地局域网上的主机 以便知道这些主机是否还继续是组的成员。只要对某个组有一个主机响应,那么组播路由器就认为这个组是活跃的。但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的组播路由器。
组播路由选择实际上就是要找出以源主机为根结点的组播转发树,其中每一个分组在每条链路上只传送一次(即在组播转发树上的路由器不会收到重复的组播数据报)。对不同的多播组对应于不同的多播转发树:同一个多播组,对不同的源点也会有不同的多播转发树。
在许多由路由器互联的支持硬件多点传送的网络上实现因特网组播,主要有三种路由算法 第一种是基于链路状态的路由选择:第二种是基于距离-向量的路由选择:第三种则是可以建立在任何路由器协议之上,因此称作协议无关的组播(PIM)
含义:支持移动性的因特网体系结构与协议被共同称为移动IP。
它是为了满足移动结点(计算机 、服务器、网段等)在移动中保持其连接性而设计的。更确切地说,移动IP技术是移动结点以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变。
目标/作用/用途:移动IP的目标是把分组自动地授递给移动结点。一个移动结点是把其连接点从一个网络或子网改变到另一个网络或子网的主机。使用移动IP,一个移动结点可以在不改变其IP地址的情况下改变其驻留位置。
组成/构成:基于IPv4的移动IP定义三种功能实体:移动结点,归属代理(也叫本地代理)和外埠代理(也叫外部代理)。归属代理和外埠代理又统称为移动代理
1)移动结点:具有永久IP地址的移动结点
2)本地代理:在一个网络环境中,一个移动结点的水久“居所”被称为归属网络,在归属网络中代表移动结点执行移动管理功使的实体叫归属代理(本地代理),它根据移动用户的转交地址,采用隧道技术转交移动结点的数据包
3)外部代理:在外部网络中帮助移动结点完成移动管理功能的实体称为外部代理
移动IP和移动自组网络:移动IP和移动自组网络并不相同,移动IP技术使漫游的主机可以用多种方式连接到因特网,移动IP的核心网络功能仍然是基于在固定互联网中一直在使用的各种路由选择协议,移动自组网络是将移动性扩展到无线领域中的自治系统,它具有自己独特的路由选择协议,并且可以不和因特网相连。
移动IP与动态IP:移动IP与动态IP是两个完全不同的概念,动态IP指的是局域网中的计算机可以通过网络中的DHCP服务器动态地获得一个IP地址,而不需要用户在计算机的网络设置中指定IP地址,动态IP和DHCP经常会应用在我们的实际工作环境中。
在移动IP协议中,每一个移动结点都有一个唯一的本地地址,当移动结点移动时它的本地地
址是不变的,在本地网络链路上每一个本地结点还必须有一个本地代理来为它维护当前的位置信息,这就需要引入转交地址。当移动结点连接到外地网络链路上时,转交地址就用来标识移动结点现在所处的位置,以便进行路由选择。移动结点的本地地址与当前转交地址的联合称作移动绑定或简称绑定。当移动结点得到一个新的转交地址时,通过绑定向本地代理进行注册,以便让本地代理即时了解移动结点的当前位置。
移动IP技术的基本通信流程如下:
1)移动结点在本地网时,按传统的TCP/IP方式进行通信(在本地网固有的地址)。
2)移动结点漫游到一个外地网络时,仍然使用固定的IP地址进行通信,为了能够收到通信对端发给它的IP分组,移动结点需要向本地代理注册当前的位置地址,这个位置地址就是转交地址(它可以是外部代理的地址或动态配置的一个地址)
3)本地代理接收来自转交地址的注册后,会构建一条通向转交地址的隧道,将截获的发给移动结点的IP分组通过隧道送到转交地址处
4)在转交地址处解除隧道封装,恢复出原始的IP分组,最后送到移动结点,这样移动结点在外网就能够收到这些发送给它的IP分组
5)移动结点在外网通过外网的路由器或者外代理向通信对端发送IP数据包
6)当移动结点来到另一个外网时,只需要向本地代理更新注册的转交地址,就可以继续
7)当移动结点回到本地网时,移动结点向本地代理注销转交地址,这时移动结点又将使用
传统的TCP/IP方式进行通信
移动IP为移动主机设置了两个IP地址,即主地址和辅地址(转交地址),移动主机在本地网时,使用的是主地址。当移动到另一个网络时,需要获得一个临时的辅地址,但此时主地址仍然不变。当从外网移回本地网时,辅地址改变或撒销,而主地址仍然保持不变.
含义:路由器是一种只有多个输入输出口的专用计算机,其任务是连接不同的同络(连接异构网 络)并完成路由转发。在多个逻辑网络(即多个广播域)互联时必须使用路由器。路由器也可以 作为最基础的包过滤防火墙应用。
当源主机要向目标主机发送数据报时,路由器先检查源主机与目标主机是否连接在同一个网 络上。如果源主机和目标主机在同一个网络上,则直接交付而无需通过路由器。但如果源主机和 目标主机不在同一个网络上,则路由器按照转发表(路由表)指出的路由将数据报转发给下一个 路由器,称为间接交付。可见,在同一个网络中传递数据无需路由器的参与,而跨网络通信必须过路由器进行转发。例如路由器可以连接不同的LAN,连接不同的VLAN,连接不同的WAN,或者把LAN和WAN互联起来。路由器隔离了广播域。
从结构上看,路由器由路由选择和分组转发两部分构成。
从模型的角度看, 路由器是网络层设备,它实现了网络模型的下三层,即物理层、数据链路层和网络层。
关于路由器体系结构,如下图:
注意,如果一个存储转发设备实现了某个层次的功能,那么它就可以互联两个在该层次上使用不同协议的网段(网络).如网桥实现了物理层和数据链路层,所以网桥可以互联两个物理层和数据链路层不同的网段;但中继器实现了物理层,却不能互联两个物理层不同的网段,这是因为中继器不是存储转发设备,它属于直通式设备。
路由选择部分也叫做控制部分,其核心构件是路由选择处理机,路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和其他相邻路由器交换路由信息而不断更新和维护路由表。
分组转发部分由三部分组成:交换结构、一组输入端口和一组输出端口。输入端口把从物理层接收到的比特流中提取出链路层帧,进而从帧中提取出网络层数据报,输出端口则执行恰好相反的操作,交换结构是路由器的关键部件,它根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。有三种常用的交换方法:通过存储器进行交换,通过总线进行交换和通过互联网络进行交换。交换结构本身就是一个网络。
路由器主要完成两个功能:一个是分组转发,另一个是路由计算。前者处理通过路由器的数 据流,关键操作是转发表查询、转发以及相关的队列管理和任务调度等;后者通过和其他路由器着 进行基于路由协议的交互,完成路由表的计算。
路由器和网桥的重要区别:网桥与高层协议无关,而路由器是面向协议的,它依据网络地址进行操作,并需进行路径选择、分段、帧格式转换、对数据报的生存时间和流量进行控制等。现今的路由器一般都提供多种协议的支持,包括OSI, TCP/IP、IPX等。
路由表是根据路由选择算法得出的,主要用途是路由选择。标准的路由表具有四个项目:目的网络P地址、子网掩码、下一跳IP地址、接口。
一图学好路由表:
用两个表来解释网络拓扑结构图:
这是R1路由表:
目的网路IP地址 | 子网掩码 | 下一跳IP地址 | 接口 | 我的解释(该列不属于路由表内容) |
---|---|---|---|---|
202.114.1.0 | 255.255.255.0 | Direct | E1 | R1路由表通过E1接口直接交付到达 202.114.1.0 |
202.114.2.0 | 255.255.255.0 | Direct | L0 | R1路由表通过L0接口直接交付到达 202.114.2.0 |
202.114.3.0 | 255.255.255.0 | 202.114.2.2 | L0 | R1路由表通过L0接口间接交付到达 202.114.3.0,因为是间接交付,下一跳地址为202.114.2.2 |
0.0.0.0 | 0.0.0.0 | 202.114.2.2 | L0 | R1路由表通过L0接口间接交付到达互联网,因为是间接交付,下一跳地址为202.114.2.2 |
这是R2路由表:
目的网路IP地址 | 子网掩码 | 下一跳IP地址 | 接口 | 我的解释(该列不属于路由表内容) |
---|---|---|---|---|
202.114.1.0 | 255.255.255.0 | 202.114.2.1 | L0 | R1路由表通过L0接口间接交付到达 202.114.1.0,因为是间接交付,下一跳地址为202.114.2.1 |
202.114.2.0 | 255.255.255.0 | Direct | L0 | R1路由表通过L0接口直接交付到达 202.114.2.0 |
202.114.3.0 | 255.255.255.0 | Direct | E1 | R1路由表通过E1接口直接交付到达 202.114.3.0 |
0.0.0.0 | 0.0.0.0 | Direct | L1 | R1路由表通过L1接口直接交付到达互联网 |
转发表是从路由表得出的,其表项和路由表项有直接对应关系。但转发表的格式和路由表的格式不同,其结构应使查找过程最优化(而路由表则需对网络拓扑变化的计算最优化)。转发表中含有一个分组将要发往的目的地址,以及分组的下一跳(即下一步接收者的目的地址,实际为 MAC地址)为了减少转发表的重复项目,可以使用一个默认路由代替所有具有相同的“下一跳 的项目,并设置默认路由比其他项目的优先级低。路由表总是用软件来实现;转发表可以用软件实现,甚至也可以用特殊的硬件来实现。
两表学好转发表:
未配置默认路由:
目的地 | 下一跳 | 我的解释(该列不属于转发表内容) |
1 | 直接交付 | 到达目的网络1,直接交付 |
2 | 3 | 达到目的网络2,下一跳为3(这是一个序号,代表路由器或网络IP) |
3 | 2 | 达到目的网络3,下一跳为2(这是一个序号,代表路由器或网络IP) |
4 | 3 | 达到目的网络4,下一跳为3(这是一个序号,代表路由器或网络IP) |
目的地 | 下一跳 | 我的解释(该列不属于转发表内容) |
1 | 直接交付 | 到达目的网络1,直接交付 |
3 | 2 | 达到目的网络3,下一跳为2(这是一个序号,代表路由器或网络IP) |
默认 | 3 | 达到其他网络,下一跳为3(这是一个序号,代表路由器或网络IP) |
对于两个转发表的解释:
1、转发表记录该路由器到达某个网络的下一跳路由器;
2、路由器有一个默认路由,这是一个优先级最低的路由,当其他所有项目都匹配失败,则根据默认路由到下一跳路由器。
注意1:在讨论路由选择的原理时,往往不去区分转发表和路由表的区别,但要注意路由表不等于转发表。分组的实际转发是直接查找转发表,而不是直接查找路由表。
注意2:转发和路由选择的区别:“转发”是路由器根据转发表把收到的IP数据报从合适的端口转发出去,它仅涉及一个路由器,而“路由选择”则涉及很多路由器,路由表是许多路由器协同工作的结果。这些路由器按照复杂的路由算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由,并由此构造出整个路由表。
本文分为六个部分,分别介绍 “网络层概要、路由算法、路由协议、IP组播、移动IP、网络层设备”,希望对读者的网络层学习有帮助。
天天打码,天天进步!