OSPF协议也是一种内部关协议,OSPF协议采用了Djkstra算法来计算最短路径,相比RIP采用的距离向量算法,这种算法更加可靠,OSPF使用的时分布式的链路状态协议,而不是距离响亮协议,OSPF协议于RIP协议有很大的不同:
- 采用OSPF协议的路由器,会向本自治系统中的所有路由器发送信息,而RIP协议仅仅向相邻的路由器发送信息
- 采用OSPF协议的路由器,发送的信息是与本路由器相邻的所有路由器的链路状态,所谓的链路状态,就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”,度量用来表示费用、距离、时延、带宽等等可以对通信质量产生影响的因素,度量可以由网络管理员来设置,所以比价灵活,而对于RIP协议来说发送的信息的内容是:“到所有网络的距离,以及下一跳路由器”,这又是一个区别。
- 采用OSPF协议的路由器,只有在链路状态发生变化时才向所有路由器发送信息,而RIP协议每隔一段时间就要向相邻的路由器发送信息,超过一定的时间没有向相邻的路由器发送信息,其他相邻的路由器会将此路由器设置为“不可到达”;
可见OSPF协议与RIP协议之间有很多的不同的地方,RIP协议只适用于小型网络,而OSPF协议在大型网络中也可以发挥作用,采用OSPF协议的网络,各个路由器之间频繁交换数据,最终每一个路由器都会知道整个自治系统中的网络拓扑结构。每一个路由器都知道整个自治系统中有多少个路由器,哪些路由器是相邻的。RIP协议的每一个路由器虽然知道到所有网段的距离,以及下一跳路由器,但是不知道整个网络的结构。
OSPF将一个自治系统又进一步划分为若干个区域,如下图所示:
上图表示将一个自治系统划分为4个区域,每一个区域都有一个32位的标识符,一个区域不能太大,路由器的数量最好不要超过200个,
划分区域的好处就是将处于某一个区域的路由器只会跟本区域的路由器交换链路状态信息,这就大大减少了整个网络的通信量,在一个区域中的路由器只知道本区域的网络结构,同时OSPF还采用了分层次的区域划分,上层的区域为主干区域,标识符为0.0.0.0,主干区域用来连通其他下层的区域,与其他区域的信息交换都要都过边界路由器,如上图中的R3、R4、R7路由器,主干区域中的路由器叫做主干路由器,一个路由器可以同时是主干路由器和边界路由器。R6叫做自治系统边界路由器,用来与其他的自治系统交换信息。
OSPF协议与RIP协议的另一个区别是,OSPF协议直接采用IP数据报进行传送(IP数据报首部协议字段为89),而RIP协议还要经过UDP协议的包装,OSPF构成的数据报很短,这样就减小了路由器的通信量,同时数据报短的另一个好处是,在IP层,不用分片,分片传送的数据报,只要丢失一个,就无法组装成一个完整的报文,就必须重传整个数据报。
OSPF分组结构如下:
版本:当前的版本号为2
类型:五种类型分组中的一种
分组长度:包括OSPF首部在内的分组长度
路由器标识符:标志发送该分组的路由器的接口的IP地址,
区域标识符:分组属于哪一个区域
检验和:检测差错
鉴别类型:0(不使用),1(口令鉴别)
鉴别:当类型为0时,填入0,否则填入8字节的口令
OSPF协议的一些其他特点:
- 链路的度量可以由网络管理员来指派,链路的代价可以是1到655636中的任何一个无量纲的数,十分 灵活,商用实现OSPF通常是根据链路的带宽来计算链路的度量。
- 如果到一个目的网络由多条相同代价的路径,那么可以将通信量 分配给这几条路径,实现多路径之间的负载均衡。RIP协议只能有一条路径
- 所有适用OSPF协议的路由器之间交换的分组都具有鉴别功能
- OSPF支持可变长度的子网划分和无分类的编址CIDR
OSPF的五种分组类型:
- 问候(Hello)分组,用来发现和维持邻站的可达性
- 数据库描述分组,向邻站给出自己的链路状态数据库中的所有链路状态的项目的摘要信息
- 链路请求分组,向对方请求发送某些链路状态项目的详细信息
- 链路状态更新分组,采用洪泛法对全网更新链路状态,路由器适用这种分组将其链路状态通知给邻站。
- 链路状态确认分组,对链路更新分组进行确认
来源:https://www.cnblogs.com/yusiming/p/9771719.html