IPv6报文构成
IPv6基本报头
IPv6基本报头也称之为固定报头。固定报头包含8个字段,总长度为40Byte。
- 版本(Version):值为6,表示该报为IPv6。
- 流类别(Traffic Class):表示IPv6数据报文的类或优先级,主要用于QOS。
- 流标签(Flow Label):是新增字段,主要用于IPv6区分不同的流,如:源IP+目IP+流标签。
- 有效载荷长度(Payload Length):表示IPv6数据报有效载荷的长度。
- 下一个报头(Next Header):用于表明上层协议的类型,如:OSPF、TCP、UDP的类型。
- 跳数限制(Hop Limit):代表TTL值,用于防环。
- 源地址(Source Address):表示发送方的地址。
- 目的地址(Destination Address):表示接收方的地址。
IPv6扩展报头
- Next Header:下一报头,与基本报头的Next Header的作用相同。指明下一个扩展报头(如果存在)或上层协议的类型。
- Extension Header Length:报头扩展长度,表示扩展报头的长度(不包含Next Header字段)。
- Extension Header Data:扩展报头数据,长度可变。扩展报头的内容,为一系列选项字段和填充字段的组合。
- 扩展报头构建:
- 在基本报头的后面添加扩展报头,在基本报头的Next Header字段描述扩展报头的类型;
- 然后在扩展报头的后面继续添加下一个扩展报头,在扩展报头的Next Header字段描述下一个扩展报头的类型;
- 以此类推,如果数据报中报括多个扩展报头,则每一个扩展报头的下一个报头指明紧跟着自己的扩展报头的类型,最后一个扩展报头的下一个报头字段指明上层协议。
- 为什么在IPv6中要设计扩展报头呢?
- 因为在IPv4的报头中包含了所有的选项,每个中间路由器都必须检查这些选项是否存在,如果存在,就必须处理它们;
- 这种设计方法会降低路由器转发IPv4数据包的效率,为了解决转发效率问题,在IPv6中,相关选项被移到了扩展报头中;
- 中间路由器就不需要处理每一个可能出现的选项,这种处理方式提高了路由器处理数据包的速度,也提高了其转发性能;
- 为了提高处理选项头和传输层协议的性能,扩展头总是8Byte长度的整数倍。