网络层之RIP协议、OSPF协议及链路状态算法和BGP协议
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…
前言
一、RIP协议
1、RIP协议简介
RIP是一种分布式的基于==距离向量==的路由选择协议,是因特网的协议标准,最大优点是简单。
RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(即一组距离)。
距离:通常为“跳数”,即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数+1。特别的,从一路由器到直接连接的网络距离为1。RIP允许一条路由最多只能包含15个路由器,因此距离为==16表示网络不可达==。
RIP协议只适用于小互联网。
RIP协议和谁交换?
仅和相邻路由器交换信息。
多久交换一次?
每30秒交换一次路由信息,然后路由器根据新信息更新路由表。若超过180s没收到邻居路由器的通告,则判定邻居没了,并更新自己路由表。
交换什么?
路由器交换的信息是自己的路由表。
路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器的地址,即“收敛”。
2、距离向量算法
- 1.修改相邻路由器发来的RIP报文中所有表项
对地址为x的相邻路由器发来的RIP报文,修改此报文中的所有项目:把“下一跳”字段中的地址改为x,并把所有的“距离”字段+1。
- ⒉.对修改后的RIP报文中的每一个项目,进行以下步骤:
- (1)R1路由表中若没有Net3,则把该项目填入R1路由表
- (2)R1路由表中若有Net3,则查看下一跳路由器地址:
- 若下一跳是x,则用收到的项目替换源路由表中的项目;
- 若下一跳不是x,原来距离比从x走的距离远则更新,否则不作处理。
- 3.若180s还没收到相邻路由器X的更新路由表,则把X记为不可达的路由器,即把距离设置为16。
- 4.返回
例题1:
已知路由器R6的路由表,现收到相邻路由器R4发来的路由更新信息,试更新路由器R6的路由表:
解答:
根据距离向量算法,第一步我们应该将发来的报文信息全部进行更改,(距离全部加一,下一跳路由器全部是R4)
此时我们看到R6的路由表上没有到Net1的距离信息,所以在更新时就应该将R4修改的Net1的数据加到R6中。
然后对比Net2的数据信息,不管距离是多大多少,只要下一跳路由器是一样的那么R6的数据就要被替换掉
然后对比Net3的数据信息,不管距离是多大多少,只要下一跳路由器是一样的那么R6的数据就要被替换掉
所以结果是:
例题2:
考虑如图所示的子网,该子网使用了距离-向量算法,下面的向量刚刚到达路由器C∶来自B的向量为(5,0 ,8,12,6,2);来自D的向量为( 16,12,6,0,9,10);来自E的向量为(7,6,3,9,0,4 )。经过测量,C到B、D和E的延迟分别为6,3和5,那么C到达所有结点的最短路径是(==B==)。
A.( 5,6,0,9,6,2)
B.( 11,6,0,3 ,5,8)
c.( 5,11,0,12,8,9)
D.( 11,8,0,7,4,9)
解答:
每个数字表示C到A、B、C、D、E、F的距离。
C到B:(==11==,==6==,14,18,12,==8==) (每个向量加6)
C到D:(19,15,9,==3==,12,13) (每个向量加3)
C到E:(12,11,==8==,14,==5==,9) (每个向量加5)
所以根据以上三条数据,找每个对应距离最短的集合起来就行了。
(11,6,8,3,5,8)
3、RIP协议的报文格式
RIP的特点:
当网络出现故障时,要经过比较长的时间(例如数分钟)才能将此信息传送到所有的路由器,“慢收敛”。
二、OSPF协议及链路状态算法
1、OSPF协议简介
开放最短路径优先OSPF协议:“开放”标明oSPF协议不是受某一家厂商控制,而是公开发表的;“最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。
OSPF最主要的特征就是使用分布式的链路状态协议。
OSPF的特点:
- 1.使用洪泛法向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器。(==广播==)【和谁交换?】
最终整个区域内所有路由器都得到了这个信息的一个副本。 - 2.发送的信息就是与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量代价――费用、距离、时延、带宽等)。【交换什么?】
- 3.只有当链路状态发生变化时,路由器才向所有路由器洪泛发送此信息。【多久交换?】
- 最后,所有路由器都能建立一个链路状态数据库,即全网拓扑图。
2、链路状态路由算法
- 1.每个路由器发现它的邻居结点【HELLO问候分组】,并了解邻居节点的网络地址。
- 2.设置到它的每个邻居的成本度量metric。
- 3.构造【DD数据库描述分组】,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
- 4.如果DD分组中的摘要自己都有,则邻站不做处埋;如果有没有的或是更新的,则发送【LSR链路状态请求分组】请求自己没有的和比自己更新的信息。
- 5.收到邻站的LSR分组后,发送【LSu链路状态更新分组】进行更新。
- 6.更新完毕后,邻站返回一个【LSAck链路状态确认分组】进行确认。
只要一个路由器的链路状态发生变化:
- 5.泛洪发送【LSU链路状态更新分组】进行更新。
- 6.更新完毕后,其他站返回一个【LSAck链路状态确认分组】进行确认。
- 7.使用Dijkstra根据自己的链路状态数据库构造到其他节点间的最短路径。
3、OSPF的区域
为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域。每一个区域都有一个32位的区域标识符(用点分十进制表示)。
区域也不能太大,在一个区域内的路由器最好不超过200个。
- 自治系统边界路由器:自治系统中连接其他自治系统的路由器,R6
- 主干路由器:主干区域内的路由器,R3、R4、R5、R6、R7
- 区域边界路由器:连接区域与主干区域的路由器,R3、R4、R7
- 区域内部路由器:区域内的路由器:R1、R2、R8、R9
4、OSPF分组
OSPF直接用IP数据报传送。
5、OSPF其他特点
- 1.每隔30min,要刷新一次数据库中的链路状态。
- 2.由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当==互联网规模很大==时,OSPF协议要比距离向量协议RIP好得多。
- 3.OSPF不存在坏消息传的慢的问题,它的==收敛速度很快==。
三、BGP协议
1、BGP协议简介
- 与其他AS的邻站BGP发言人交换信息。(和谁交换?)
- 交换的网络可达性的信息,即要到达某个网络所要经过的一系列AS。(交换什么?)
- 发生变化时更新有变化的部分。(多久交换?)
2、BGP协议交换信息的过程
BGP所交换的网络可达性的信息就是要==到达某个网络所要经过的一系列AS==。当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各AS的较好路由。
BGP发言人交换路径向量:
自治系统ASz的 BGP发言人通知主干网AS,的BGP发言人:“要到达网络N1、N2、N3和N4可经过AS。”
BGP发言人交换路径向量:
主干网还可发出通知:“要到达网络N5、N6和N7可沿路径(AS,AS3)。”
3、BGP协议报文格式
一个 BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接,即通过TCP传送,然后在此连接上交换BGP报文以建立BGP会话(session),利用BGP会话交换路由信息。
4、BGP协议特点
- BGP支持==CIDR==,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
- 在BGP刚刚运行时,BGP的邻站是交换整个的BGP路由表。但以后只需要在==发生变化时更新有变化的部分==。这样做对节省网络带宽和减少路由器的处理开销都有好处。
5、BGP-4的四种报文
- 1.OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,并认证发送方。
- 2.UPDATE(更新)报文:通告新路径或撤销原路径。
- 3.KEEPALIVE(保活)报文:在无UPDATE时,周期性证实邻站的连通性;也作为OPEN的确认。
- 4.NOTIFICATION(通知)报文:报告先前报文的差错;也被用于关闭连接。
6、三种路由协议比较
- RIP:是一种分布式的基于距离向量的内部网关路由选择协议,通过广播UDP报文来交换路由信息。
- OSPF:是一个内部网关协议,要交换的信息量较大,应使报文的长度尽量短,所以不使用传输层协议(如UDP或TCP),而是直接采用IP。
- BGP:是一个外部网关协议,在不同的自治系统之间交换路由信息,由于网络环境复杂,需要保证可靠传输,所以采用TCP。
总结
以上就是网络层之RIP协议、OSPF协议及链路状态算法和BGP协议的相关知识点,希望对你有所帮助。
积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!
- 点赞
- 收藏
- 关注作者
评论(0)