网工面试99%都会遇到的问题——OSPF 数据包类型
OSPF的包有多层封装,可以象剥洋葱皮一样看每一层。
如图1所示,最外层是IP头(思科的OSPF包允许的最大尺寸是1500字节),IP头里面封装的是5种OSPF包类新中的一种。
每一种包以自己的包头开始,包头后面根据不同的包类型,内容也有所不同,比如Hello包的内容是邻居列表;链路状态请求包包含了一系列LSAs描述;LSAs更新包则包含了一系列的LSAs。
OSPF包的多层封装
这里需要注意的是,OSPF的包只能在邻居间互相传递,它们绝对不能被路由到始发网段之外。
利用任何一个抓包软件抓到的OSPF包都可以看到,OSPF包的TTL值为1,这也就保证了这个包只能被传一跳。
下面来详细分析一下每一种包头:
OSPF包头,5种OSPF包类型的包头,结构完全一样,只是包的类型和数据不同
OSPF包头
每一个OSPF包都是以一个24字节的IP包头开始的。
Version 字段是OSPF的版本号,现在最新的版本号为2。
Type 字段是本OSPF包的类型,OSPF共有5种类型的包
类型代码 1 为 Hello
类型代码 2 为 Database Description
类型代码 3 为 Link State Request
类型代码 4 为 Link State Update
类型代码 5 为 Link State Acknowledgment
Packet Length 字段是本OSPF包的长度(包括包头),单位是字节。最长为1500字节
Router ID 字段是OSPF包的始发路由器Router ID
Area ID 字段是OSPF包始发的区域ID,也就是始发的发送接口属于的区域ID,若这个是在virtual-link上发送,则Area ID是0,因为virtual-link就是属于Area 0的。
Checksum 字段是对整个包的标准的IP校验和。
AuType 字段是OSPF启动的认证模式
0 未启动认证
1 明文验证
2 MD5验证
Authentication 字段是包被认证所必须的信息。
若认证类型为0,则本字段的内容被忽略;若认证类型为1,则本字段包含最长为64比特的密码;若认证类型为2,则本字段包含Key ID、认证数据的长度、非递减序号。
而真正的加密消息是附着在包的最后,而不作为本包的内容。
OSPF包的多层封装
这里需要注意的是,OSPF的包只能在邻居间互相传递,它们绝对不能被路由到始发网段之外。
利用任何一个抓包软件抓到的OSPF包都可以看到,OSPF包的TTL值为1,这也就保证了这个包只能被传一跳。