第4章 网络层(上篇):https://blog.csdn.net/pcwl1206/article/details/83999363
本文目录:
第4章 网络层(下篇)
4.4 互联网的路由选择协议
本节将讨论几种常用的路由选择协议,也就是要讨论路由表中的路由是怎样得出来得。
4.4.1 有关路由选择协议的几个基本概念
4.4.1.1 理想的路由算法
路由选择协议的核心就是路由算法,即需要何种算法来获得路由表中的各项目,一个理想的路由算法应具备如下特点:
1、算法必须是正确的和完整的。这里的“正确”的含义是:沿着各路由表所指引的路由,分组一定能够最终到达目的网络和目的主机;
2、算法在计算上应简单。路由选择协议不应该使网络通信增加太多的额外开销;
3、算法应该能适应通信量和网络拓扑的变化,即自适应性。当网络中的通信量发送变化时,算法能自适应地改变路由以均衡各链路的负载。当某个或某些结点、链路发生故障不能工作时,或者修理好了再投入允许时,算法也能及时地改变路由;
4、算法应具有稳定性。在网络通信量和网络拓扑相对稳定的情况下,路由算法应收敛于一个可以接受的解,而不应使得出的路由不停地变化;
5、算法应是公平的。路由选择算法对所有用户(除对少数优先级高的用户)都是平等的;
6、算法应是最佳的。路由选择算法应当能够找出最好的路由。使得分组平均时延最小而网络的吞吐量最大。
4.4.1.2 静态路由和动态路由
倘若从路由算法能否随网络的通信量或拓扑自适应地进行调整变化来划分,则只有两大类:静态路由选择策略和动态路由选择策略。
1、静态路由选择也叫做非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。对于较小的网络,完全可以采用静态路由选择,用人工配置每一条路由;
2、动态路由选择也叫做自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也较大。动态路由选择适用于较复杂的大网络。
4.4.1.3 分层次的路由选择协议
互联网采用的路由选择协议主要是自适应的(即动态的)、分布式路由选择协议。
由于互联网规模非常大以及有些单位不愿意外界了解本单位的网络布局细节但是又要接入互联网,所以可以把整个互联网划分为多个较小的自治系统AS(autonomous system),一个AS对其他AS表现出的是一个单一的和一致的路由选择策略。
一个大的ISP就是一个AS,这样,互联网把路由选择协议分为两大类:内部网关协议IGP和外部网关协议EGP。
1、内部网关协议IGP(Interior Gateway Protocol):即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用的最多,如:RIP和OSPF协议。
2、外部网关协议EGP(External Gateway Protocol):源主机和目标主机不在一个AS中使用的路由选择协议。目前使用最多的外部网关协议的是BGP的版本4(BGP-4)。
4.4.2 内部网关协议RIP
4.4.2.1 工作原理
RIP(Routing Information Protocol),路由信息协议。是一种分布式的基于距离向量(即跳数)的路由选择协议。
RIP认为好的路由器就是它通过的路由器的数目少,即“距离短”。RIP允许一条路径最多只能包含15个路由器,第16个就不可达了。本节讨论的RIP和OSPF都是分布式的路由选择协议,它们共同的特点就是每一个路由器都要不断地和其他一些路由器交换路由信息。我们需要明确三个要点:和哪些路由器交换信息?交换什么信息?在什么时候交换信息?
用RIP协议的特点来回答这三个问题:
1、仅和相邻路由器交换信息;
2、路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表;
3、按固定的时间间隔交换路由信息。如,每隔30S。
RIP协议让一个自治系统AS中的所有路由器都和自己相邻路由器定期交换信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由器都是最短的(即跳数最少)。
RIP协议存在的问题:当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器,即”好消息传的快,而坏消息传的慢“。
总之,RIP协议最大的优点是实现简单、开销较小。但是RIP的缺点也较多。首先,RIP限制了网络的规模,它能使用的最大距离为15.其次,路由器之间的路由信息是路由器中完整的路由表,因而随着网络规模的扩大,开销也随之增大。最后,”坏消息传播的慢“,使更新过程的收敛时间过长。然而目前在规模较小的网络中,使用RIP协议仍占多数。
4.4.3 内部网关协议OSPF
4.4.3.1 OSPF协议的基本特点
这个协议的名字是开放最短路径优先OSPF(Open Shortest Path First),它是为了克服RIP的缺点而开发出来的,使用的是最短路径算法。
OSPF最主要的特征就是使用分布式的链路状态协议(link state protocol),而不是像RIP那样的距离向量协议。和RIP相比,OSPF的三个要点和RIP的都不一样:
1、向本自治系统中的所有路由器发送消息。这里使用的是洪泛法,这就是路由器通过所有输出端口向所有相邻的路由器发送消息。而每一个相邻的路由器又再将此信息发往其所有相邻路由器。这样,最终整个区域中所有的路由器都得到了这个信息的一个副本。而RIP协议仅仅向自己向自己相邻的几个路由器发送消息;
2、发送的消息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器知道的部分信息;
3、只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此消息。
其他特点:
4、OSPF允许管理员给每条路由指派不同的代价,即对于不同类型的业务可计算出不同的路由。一般通过带宽来计算;
5、如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径,这叫做多路径间的负载均衡。
由于各路由器之间频繁地交换链路状态信息,因此,所有的路由器最终都能建立一个链路状态数据库(link-state database),这个数据库实际上就是全网的拓扑结构图。而RIP协议的每一个路由器虽然知道所有的网络的距离以及下一跳路由器,但却不知道全网的拓扑结构。
为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域(area)。
划分区域的好处就是把利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个自治系统,这就减少了整个网络上的通信量。
4.4.3.2 OSPF的五种分组类型
(1)问候(Hello)分组,用来发现和维持邻站的可达性;
(2)数据库描述分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息;
(3)链路状态请求分组,向对方请求发送某些链路状态项目的详细信息;
(4)链路状态更新分组,用洪泛法对全网更新链路状态;
(5)链路状态确认分组,对链路更新分组确认。
4.4.4 外部网关协议BGP
BGP是不同自治系统的路由器之间交换路由信息的协议,BGP最新版本为BGP-4。
边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),并非要寻找一条最佳路由。BGP采用了路径向量(path vector)路由选择协议。
每个自治系统需要有一个BGP发言人。一般来说,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器。每一个BGP发言人除了必须运行BGP协议外,还必须运行该自治系统所使用的内部网关协议,如:RIP或OSPF。
一个BGP发言人与其他AS的BGP发言人要交换路由信息,就需要先建立TCP连接,然后在此连接上交换BGP报文以建立BGP会话,利用BGP会话交换路由信息,如增加了新的路由或者撤销了过时的路由,以及报告出差错情况等。
下面给出一个BGP发言人交换路径向量的例子:自治系统AS2的BGP发言人通知主干网的BGP发言人:”要到达网络N1,N2,N3和N4可以经过AS2。“主干网在收到这个通知后,就发送通知:”要达到网络N1,N2,N3和N4可沿路径(AS1,AS2)“。同理,主干网还可发出通知:”要到达网络N5,N6和N7可沿路径(AS1,AS2)“
如果一个BGP发言人收到了其他BGP发言人发来的路径通知,它就要检查一下本自治系统是否在此通知路径中。如果在此通知路径中,就不能采用这条路径了,因为会兜圈子。
BGP-4的四种报文:
1、OPEN:打开报文,用来与相邻的另一个BGP发言人建立关系,使通信初始化;
2、UPDATE:更新报文,用来通告某一路由信息,以及列出要撤销的多条路由;
3、KEEPALIVE:保活报文,用来周期性地证实邻站的连通性,一般间隔是30s;
4、NOTIFICATION:通知报文,用来发送检测到的差错。
4.4.5 路由器的构成
4.4.5.1 路由器的结构
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。从路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。下一跳路由器也按照这样的方法处理分组,直到该分组到达终点为止。路由器的转发分组正是网络层的主要工作。
整个路由器结构可以划分为两大部分:路由选择部分和分组转发部分。
路由选择部分也叫控制部分,其核心构建是路由选择处理机。路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或者定期地和相邻路由器交换路由信息而不断地更新和维护路由表。
分组转发部分由三部分组成:交换结构、一组输入端口和一组输出端口。
分组在路由器的输入端口和输出端口都可能会在队列中排队等候处理。若分组处理的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。
交换结构三种常用的交换方法:通过存储器、通过总线、通过互联网络。
4.5 IPV6
IP是互联网的核心协议。解决IP地址耗尽的根本措施就是采用具有更大地址空间的新版本IP,即IPv6。
4.5.1 IPv6的基本首部
IPv6所引进的主要变化如下:
1、更大的地址空间。IPv6把地址从IPv4的32位增大到4倍,即增大到128位;
2、扩展的地址层次结构。IPv6的地址空间很大,因此可以划分为更多的层次;
3、灵活的首部格式。
4、改进的选项。IPv6允许数据报包含有选项的控制信息,因而可以包含一些新的选项;
5、允许协议继续扩充。
6、IPv6首部改为8字节对齐,原来的IPv4首部是4字节对齐
....................
IPv6数据报由两大部分组成,即基本首部和后面的有效载荷。有效载荷允许有零个或多个扩展首部,再后面是数据部分。但是,所有的扩展首部都不属于IPv6数据报的首部。
如下图所示:对IPv6首部中的各字段的作用进行了说明:
IPv6把原来IPv4首部中选项的功能都放在扩展首部中,并把扩展首部留给路径两端的源点和终点的主机来处理,而数据报途中经过的路由器都不处理这些扩展首部,这样就大大提高了路由器的处理效率。
4.5.2 IPv6的地址
一般来讲,一个IPv6数据报的目的地址可以是以下三种基本类型地址之一:
(1)单播(unicast):就是传统的点对点通信;
(2)多播(multicast):就是一点对多点的通信,数据报发送到一组计算机中的每一个;
(3)任播(anycast):这是IPv6增加的一种类型。任播的终点是一组计算机,但数据报只交付给其中一个,通常是距离最近的一个。
IPv6采用冒号十六进制记法,各值之间用冒号分隔,0可以省略,例如:
68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
在十六进制记法中允许零压缩,即一连串连续的零可以为一对冒号所取代,例如:
FF05:0:0:0:0:0:0:B3 可以压缩为: FF05:B3
IPv6的地址分类见下表:
4.5.3 IPv4向IPv6过渡
IPv4向IPv6过渡只能采用逐步演进的办法,同时,还必须使新安装的IPv6系统能够向后兼容。这就是说,IPv6系统必须能够接收和转发IPv4分组,并且能够为IPv4分组选择路由。
两种IPv4向IPv6过渡的策略:双协议栈和隧道技术。
4.5.3.1 双协议栈
双协议栈:指一部分主机或者路由装有双协议栈,一个IPv4和一个IPv6。因此双协议栈主机或者路由既能够和IPv6的系统通信,又能够和IPv4的系统通信。双协议栈的主机记为:IPv6/IPv4,表明它同时具有两种IP地址:一个IPv6地址和一个IPv4地址。但是有可能会出现IPv6中某些字段(例如:流标号)无法恢复。
4.5.3.2 隧道技术
这种方法的要点就是在IPv6数据报要进入IPv4网络时,把IPv6数据报封装成为IPv4数据报。如下图所示:
4.6 IP多播
4.6.1 IP多播的基本概念
在互联网上进行多播就叫做IP多播。IP多播所传送的分组需要使用多播IP地址。
与单播相比,在一对多的通信中,多播可大大节约网络资源。视频服务器只需要将视频分组当作多播数据报来发送,并且只用发送一次。路由器R1在转发分组的时候,需要把收到的分组复制成3个副本,分别向R2、R3、R4各转发1个副本。当分组到达目的局域网时,由于局域网具有硬件多播功能,因此不需要复制分组,在局域网上的多播组成员都能收到这个视频分组。
在互联网范围的多要靠路由器来实现,能够运行多播协议的路由器称为多播路由器。
在多播数据报的目的地址中写入的是多播组的标识符,然后设法让加入到这个多播组的主机IP地址与多播组的标识符关联起来。这里的标识符就是IP地址中的D类地址。多播数据报和一般的IP数据报的区别就是它使用D类IP地址作为目的地址,并且首部协议字段值是2,表明使用网际管理协议IGMP。
4.6.2 在局域网上进行硬件多播
以太网硬件地址字段中的第一个字节的最低位为1时就代表是多播硬件。
由于多播IP地址和以太网硬件地址的映射关系不是唯一的,因此收到的多播数据报的主机,还要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃。
4.6.3 网际组管理协议IGMP和多播路由选择协议
如下图所示,图中四台有IP的主机都参加了一个多播组,其组的地址为226.15.37.123。显然,多播数据报应当传送到路由器R1、R2和R3,而不应该传到R4,因为R4连接的局域网上现在没有这个多播组的成员。那么这个路由器又怎样知道多播组的成员信息呢?这就需要网际管理协议IGMP(Internet Group Management Protocol)。
IGMP协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或者退出了某个多播组。
显然,仅有IGMP协议是不能完成多播任务的。连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议。
4.6.3.1 网际组管理协议IGMP
IGMP的工作可分为两个阶段:
第一个阶段:当某台主机加入新的多播组时,该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员。本地的多播路由器收到IGMP报文后,还要利用多播路由选择协议把这种组成员关系转发给互联网上其他多播路由器;
第二个阶段:组成员关系是动态的。本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。只要有一台主机对某个组响应,那么多播路由器就认为这个组是活跃的。但一个组经过几次的探询后仍然没有一台主机响应,多播路由器就认为本网络上的主机都离开了这个组,因此也就不再把这个组的成员关系转发给其他的多播路由器。
多播路由器并不需要保留组成员关系的准确记录,因为向局域网上的组成员转发数据报是使用硬件多播。多播路由器只需要知道网络上是否至少还有一台主机是本地组成员即可。实际上,对询问报文每一个组只需要有一台主机发送响应。
4.6.3.2 多播路由选择协议
在多播过程中一个多播组中的成员是动态变化的。例如在收听网上某个广播节目的时候,随时会有主机加入或者离开这个多播组。多播路由选择实际上就是要找出以源主机为根节点的多播转发树。
在多播转发树上,每一个多播路由器向树的叶节点方向转发收到的多播数据报,但在多播转发树上的路由器不会收到重复的多播转发报。不难看出,对不同的多播组对应于不同的多播转发树。同一个多播组,对不同的源点也会有不同的多博转发树。
已经有了多种实用的多播路由选择协议,它们在转发多播数据报时使用了以下三种方法:
1、洪泛与剪除
这种方法适合较小的多播组,而所有的组成员接入局域网也是相邻的。为了避免兜圈子,采用了反向路径广播RPB,即每一个路由器在收到一个多播数据报时,先检查数据报是否是从源点经最短路径传送过来的。
路由器R1收到源点发来的多播数据报后,向R2和R3转发。R2发现R1就在自己到源点的最短路径上,因此向R3和R4转发收到的数据报。R3发现R2不在自己到源点最短路径上,因此将R2发来的多播数据报丢弃掉。其他路由器也这样进行转发。R7到源点有两条最短路径,我们假设R4的IP地址比R5的IP地址小(多条最短路径时,选择相邻路由器IP地址较小的),因此R7只接收R4传过来的数据报。最后就得出了上图中加粗表示的多播转发树。
如果在多播转发树上的某个路由器发现它的下游树枝已没有该多播组的成员,就应把它和下游的树枝一起剪除。
2、隧道技术
隧道技术多用于多播组的位置在地理位置上很分散的情况。
如图所示,网1和网2都支持多播,但是路由器R1和R2之间的网络不支持多播,因此路由器R1就对多播数据报进行再次封装,即加上普通数据报的首部,使之成为向单一目的站发送的单播数据报,然后通过”隧道“从R1发送到R2。可以想象汽车过海峡的场景,汽车自己无法过海峡,需要先开上轮渡,到了岸,再开走。
3、基于核心的发现技术
这种方法对于多播组的大小在较大范围内变化时都合适。有一个多播组G的核心路由器,构建出多播组G的转发树。当有路由器要加入时,就从核心向外增多,扩大了多播转发树的覆盖范围。
4.7 虚拟专用网VPN和网络地址转换NAT
4.7.1 虚拟专用网VPN
有时一个很大的机构(如连锁超市或者连锁酒店),它的很多部分遍布范围很广,但是这些部门又经常需要交换信息,那么有两种方法:
(1)租用电信公司的通信线路为本机构专用,这种方法虽然简单,但是租金太高,一般难以承受;
(2)利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN(Virtual Private Network)。
下面给出三个专用的IP地址块,这些地址只能用于一个机构的内部通信,而不能用于和互联网上的主机通信。在互联网中的所有路由器,对目的地址为专用地址的数据报一律不进行转发。
1、10.0.0.0 到 10.255.255.255
2、172.16.0.0 到 172.31.255.255
3、192.168.0.0 到 192.168.255.255
【案例1】本案例说明如何使用IP隧道技术实现虚拟专用网。
每一个场所至少要有一个路由器具有合法的全球IP地址,下图中的路由器R1和R2和互联网相连的接口就必须是全球合法的IP地址,但是在专用网内部的接口地址则是专用网的本地地址。
在每一个场所A和B内部的通信量都不经过互联网。但如果场所A的主机X要和B中的主机Y通信,那么就必须经过路由器R1和R2.主机X向主机Y发送的IP数据报的源地址我10.0.0.1,目的地址是10.2.0.3。这个数据报先作为本机构的内部数据报发送到与互联网连接的路由器R1,路由器R1收到内部数据后,发现其目的网络必须通过互联网才能到达,就把整个的内部数据进行加密,然后重新加上数据报的首部,封装成为在互联网上发送的外部数据报,其源地址是路由器R1的全球地址125.1.2.3,而目的地址是路由器R2的全球地址194.4.5.6。路由器R2收到数据报后将其数据部分取出来进行解密,恢复其原来的内部数据报(目的地址是10.2.0.3),交付主机Y,完成通信。
【案例2:远程访问】下图为一个远程从外网访问内网的案例:可以看出广域网数据报有4个IP地址,前两个为广域网中使用的源IP地址和目标IP地址,后两个为局域网中使用的源IP地址和目标IP地址。因为私有网络的IP是无法在互联网上进行通信的,所有必须在局域网数据包前面加上广域网的IP。这样相当于远程PC有两个IP地址,一个是广域网中的,另一个是局域网中的。所以可以实现远程访问企业内部网络。
远程访问可以认为把计算机搬进了内网。远程访问在实际工作中非常有用,这里不再讲解。
4.7.2 网络地址转换NAT
在专用网络内部的一些主机本来已经分配到了仅在内网使用的本地IP地址,但是又想和互联网上的主机通信(并不需要加密),这时可以使用网络地址转换NAT(Network Address Translation)。
这种方法需要在专用网连接到互联网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换为全球IP地址,才能和互联网连接。如下图所示:
如果专用网中的主机A向互联网中的主机B发送IP数据报,NAT会把主机A的源IP地址从192.168.0.3改为172.38.1.5,然后发出去。所以对于B来说,以为A的IP就是172.38.1.5。当NAT路由器收到B发来的IP数据报时,还要进行一次IP地址转换。通过NAT地址转换表,就可以把IP数据报上的目的IP地址172.38.1.5改为新的IP地址192.168.0.3了。
由此可见,当NAT路由器具有n个全球IP地址时,专用网内最多可以同时有n台主机接入到互联网。为了更加有效的利用全球IP地址,现在常用的NAT转换表把运输层的端口号也利用上了。这样,就可以使用多个拥有本地地址的主机,共用一个NAT路由器上的全球IP地址。使用端口号的NAT也叫做网络地址与端口号转换NAPT(Network Address and Port Translation)。如下表所示:
可以看出来,当NAPT路由器收到从互联网发来的应答时,就可以从IP数据报的数据部分找出运输层端口号,然后根据不同的目的端口号,从NAPT转换表中找到目的主机。
这里需要说明一点:通过NAT路由器的通信必须是由专用网内的主机发起的。设想互联网上的主机要发起通信,当IP数据报到达NAT路由器时,NAT路由器就不知道应当把目的IP地址转换为专用网内的哪一个IP地址。这就表名,这种专用网内部不能充当服务器,因为互联网上的用户无法请求专用网内的服务器提供服务。
4.8 多协议标记交换MPLS ---- 了解
多协议标记交换MPLS(MultiProtocol Label Switching):利用面向连接技术,使每个分组携带一个叫做标记的小整数。当分组到达交换机(即标记交换路由器)时,交换机读取分组的标记,并用标记值来检索分组转发表。这样就比查找路由表来转发分组要快的多。
MPLS的三个特点:
1、支持面向连接的服务质量;
2、支持流量工程,平衡网络负载;
3、有效地支持虚拟专用网VPN。
MPLS有个很重要的概念就是转发等价类FEC(Forward Equivalence Class)。所谓“转发等价类”就是路由器按照同样方式对待的IP数据报集合。