OSPF如何将数据包从源路由到目的地?
开放最短路径优先协议 (OSPF) 是一种路由协议,用于查找数据包在连接的网络集合中传递时的最佳路径。
该协议由互联网工程任务组 (IETF) 指定为内部网关协议 (IGP) 之一,旨在处理在更大的自治系统网络(如单个企业的网络)内移动的流量,而该网络又可能由通过路由器连接的许多单独的局域网组成。

解释
区域 1 边界路由器 区域 0 骨干区域 边界路由器 区域 2 OSPF。
OSPF 协议被称为链路状态路由协议,它维护链路状态数据库。网络中路由的状态就是成本。OSPF 协议允许每个路由器计算到任何给定可达目的地的路由成本。
具有 OSPF 的路由器接口将通过多播过程(称为 hello 过程)向相邻路由器通告其链路成本。此网络被划分为多个区域,可以简化管理并优化流量和资源利用率。
区域由 32 位点分十进制表示。按照惯例,区域 0 表示 OSPF 网络的骨干区域,如上图所示。
每个区域都必须与 OSPF 骨干区域连接。此类连接由互连路由器实现,称为区域边界路由器 (ABR),如上图所示。
边界路由器为其连接的每个区域实现单独的链路状态数据库,并维护网络中所有区域的汇总路由。OSPF 检测网络拓扑的变化,例如链路故障,并且它能够在非常短的时间内收敛到新的无环路由结构。
在 OSPF 中,信息被发送到每个节点,因此流量会非常高,因为我们必须进行泛洪。链路状态路由很复杂,因为它使用 Dijkstra 算法来查找节点之间的最短路径。
边界路由器将接收所有泛洪的数据包并汇总信息。关于某个区域的全部信息将保存在一个数据包中,并发送到其他区域。边界路由器将信息转发到骨干路由器,骨干路由器将信息转发到另一个区域的边界路由器。
OSPF 数据包格式
OSPF 数据包格式如下:
0 8 16 31
| 版本 | 类型 | 消息 |
|---|---|---|
| 源地址 | ||
| 区域 ID | ||
| 校验和 | 身份验证类型 | |
| 身份验证 | ||
这里:
版本 - 表示当前版本
类型 - 表示 OSPF 消息的类型 (1–5)。
- 类型 1 - “hello” 消息,
- 类型 2 - 请求,
- 类型 3 - 发送,
- 类型 4 - 确认收到链路状态消息,
- 类型 5 - 保留。
消息长度 - 表示要交换的消息的长度。
源地址 - 标识发送者。
区域 ID - 节点所在区域的 32 位标识符。
校验和 - 16 位互联网校验和。
身份验证类型 - 1(普通密码),2(加密身份验证)。
身份验证 - 包含密码或加密校验和。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP