在OSPF路由协议的数据包中,其数据包头长为24个字节,包含如下8个字段:
Version number-定义所采用的OSPF路由协议的版本。
Type-定义OSPF数据包类型。OSPF数据包共有五种:
Hello-用于建立和维护相邻的两个OSPF路由器的关系,该数据包是周期性地发送的。
Database Description-用于描述整个数据库,该数据包仅在OSPF初始化时发送。
Link state request-用于向相邻的OSPF路由器请求部分或全部的数据,这种数据包是在当路由
器发现其数据已经过期时才发送的。
Link state update-这是对link state请求数据包的响应,即通常所说的LSA数据包。
Link state acknowledgment-是对LSA数据包的响应。
Packet length-定义整个数据包的长度。
Router ID-用于描述数据包的源地址,以IP地址来表示。
Area ID-用于区分OSPF数据包属于的区域号,所有的OSPF数据包都属于一个特定的OSPF区域。
Checksum-校验位,用于标记数据包在传递时有无误码。
Authentication type-定义OSPF验证类型。
Authentication-包含OSPF验证信息,长为8个字节。
OSPF的数据包格式
基本概念:
OSPF数据包是由多重封装构成的,解析一个OSPF数据包就象给洋葱拨皮一样,首先OSPF数据
包是封装在IP包头里面的,他的协议号是89,TTL值设置为1,所以OSPF的数据包永远不可能穿越邻
居路由器。
一个完整的OSPF数据包是由OSPF包头+OSPF数据构成的,那么OSPF的数据又分为5种类型。
一、OSPF数据包的头部格式:
版本:OSPFv2
类型:(hello DBD LSR LSU LSack)
小人物,
数据包长度:包头+数据
路由器ID
区域ID
校验和
认证类型:0=空 1=明文 2=MD5
认证:数据报认证的必要信息
密钥ID:安全密钥
认证数据长度:
加密序列号:一个不会减小的数字,用来防止重现攻击
二、5种数据包的格式:
1、hello数据包==OSPF包头+本身
网络掩码:接口的掩码
hello时间间隔:10秒
hello无效间隔:40秒可选项
优先级:用于选举DR/BDR
DR/BDR
邻居:邻居的RID
2、链路数据描述DBD:==包头+本身
接口MTU:始发路由器能发送的最大MTU值
可选项:
初始位:第一个数据包
后继位:不是最后一个数据包
MS位:用于协商主/从路由器
数据库序列号:不断增大
LSA头部:包含一个LSA的所有头部信息,
3、链路状态请求LSR:
链路状态类型:用于请求LSA的类型,比如是类型1或者是类型2等
链路状态ID:
通告路由器:始发路由器的RID
4、链路状态更新LSU:用来LSA的泛洪和发送响应给请求LSA的邻居
LSA数量:用来描述数据包包含的LSA数量
5、链路状态确认LSACK:用来对一个LSA泛洪进行确认,确保可靠性
二、OSPF的LSA格式:
LSA头部格式:LSA头部在所有7种类型LSA的开始处
老化时间:发送LSA后经历的时间,靠LSA重传刷新自己
可选项:
类型:描述是那种类型的LSA
链路状态ID
通告路由器:
序列号:
校验和:
长度:LSA头部+LSA数据