IPV6报头结构 您所在的位置:网站首页 ipv6设计 IPV6报头结构

IPV6报头结构

2023-07-27 10:41| 来源: 网络整理| 查看: 265

IPV6报头结构

在这里插入图片描述

** 字段作用

版本(Version) 版本字段用来表示IP版本,占4位,对应值为6(0110)。

通信分类(Traffic Class) 通信分类字段用来标识对应IPv6的通信流类别,或者说是优先级别,占8位,类似于IPv4中的ToS(服务类型)字段。

流标签(Flow Label) 流标签字段时IPv6数据报中新增的一个字段,占20位,可用来标记报文的数据流类型,以便在网络层区分不同的报文。流标签字段有源节点分配,通过流标签、源地址、目的地址三元组方式就可以唯一标识一条通信流,而不用像IPv4那样需要使用五元组方式(源地址、目的地址、源端口、目的端口和传输层协议号)。这样发动的最大好处有两点:一是流标签可以和任意的关联,需要标识不同类型的流(可以是非五元组)时,无需对流标签做改动;二是流标签在IPv6基本头中,使用IPSec时此域对转发路由器可见,因此转发路由器可以在使用IPv6报文IPSec的情况下仍然可以通过三元组(流标签、源地址、目的地址)针对特定的流进行QoS(质量服务)处理。

有效载荷长度(PayLoad Length) 有效载荷长度字段是以字节为单位的标识IPv6数据报中有效载荷部分(包括所有扩展报头部分)的总长度,也就是除了IPv6的基本报头以外的其他部分的总长度,占20位。

下一个头部(Next Header) 指明跟在IPV6报头后面的报头。(扩展头部或传输层协议头部),占8位。每种扩展报头都有其对应的值。 下一个头部字段内定义的扩展报头类型与IPv4中的协议字段值类似,但在IPv6数据报中,紧接着IPv6报头的可能不是上层协议头部(当没有扩展报头或者为最后一个扩展报头时才是上层协议头),而是IPv6扩展报头。 后面Next Header的值(常用到的): 1 逐跳头 0 针对路由器的一条来命令 2 目标选项头 60 针对目的主机的一条命令 3 路由头 43 类似于IPv4的松散路由 4 分段头 44 处理分段事宜,与IPv4很类似 5 认证头 51 让包接收方确定包发送方的身份 6 加密头 50 有关加密的信息自 7 UDP 17 8 TCP 6

跳数限制(Hop Limit) 跳数限制于IPv4报文中的TTL字段类似,指定了报文可以有效转发的次数,占8位。报文每经过一个路由器结点,跳数值就减1,当此字段值减到0时,则直接丢弃该报文。

源地址(Source IP Address) 源IP地址字段标识了发送该IPv6报文源节点的IPv6地址,占128位。

目的IP地址(Destination IP Address) 目的IP地址字段标识了IPv6报文的接受节点的IPv6地址,占128位。

结构体定义 typedef struct _ipv6_addr { union { uint8_t __u6_addr8[16]; uint16_t __u6_addr16[8]; uint32_t __u6_addr32[4]; } __in6_u; }ipv6_addr; typedef struct _IP6Hdr { uint32_t ip6_version:4; uint32_t ip6_priority:8; uint32_t ip6_flow_lbl:20; uint16_t ip6_payload_len; /* PayLoad Length / uint8_t ip6_nexthdr; / Next Header / uint8_t ip6_hop_limit; / Hop Limit */ ipv6_addr ipv6_Saddr; ipv6_addr ipv6_Daddr; } IP6Hdr;

typedef struct _IP6ExtenHdr { uint8_t Ex_Next_Hdr; uint8_t Ex_Hdr_len; uint16_t reserve16; uint32_t reserve32;

}IP6ExtenHdr;



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有