IPv6简介IPv4报文头格式0123456789abcdef0123456789abcdefVersionIHLTOSTotalLengthIdentificationFlagFragmentOffsetTTLProtocolHeaderChecksumSourceAddressDestinationAddressOptions/Padding最小报文=4*5=20ByteVersion:4位字段,指出当前使用的IP版本。IPHeaderLength(IHL):指数据报协议头长度,具有32位字长。Type-of-Service(TOS):指出上层协议对处理当前数据报所期望的服务质量,并对数据报按照重要性级别进行分配。这些8位字段用于分配优先级、延迟、吞吐量以及可靠性。TotalLength:指定整个IP数据包的字节长度,包括数据和协议头。其最大值为65,535字节。典型的主机可以接收576字节的数据报。Identification:包含一个整数,用于识别当前数据报。该字段由发送端分配帮助接收端集中数据报分片。Flags:由3位字段构成,其中低两位(最不重要)控制分片。低位指出数据包是否可进行分片。中间位指出在一系列分片数据包中数据包是否是最后的分片。第三位即最高位不使用。IPv4报文头格式0123456789abcdef0123456789abcdefVersionIHLTOSTotalLengthIdentificationFlagFragmentOffsetTTLProtocolHeaderChecksumSourceAddressDestinationAddressOptions/Padding最小报文=4*5=20ByteFlags:由3位字段构成,其中低两位(最不重要)控制分片。FragmentOffset:13位字段,指出与源数据报的起始端相关的分片数据位置,支持目标IP适当重建源数据报。Time-to-Live:是一种计数器,在丢弃数据报的每个点值依次减1直至减少为0。这样确保数据包无止境的环路过程。Protocol:指出在IP处理过程完成之后,有哪种上层协议接收导入数据包。HeaderChecksum:帮助确保IP协议头的完整性。Source/DestinationAddress:源/目的地址码Options:允许IP支持各种选项,如安全性。Data:包括上层信息IPv6报文头格式Ⅰ0123456789abcdef0123456789abcdefVersionTrafficClassFlowLabelPayloadLengthNextHeaderHoplimitSourceAddress(128bits)DestinationAddress(128bits)IPv6报文头长度固定为40字节,分为8个字段Version:4比特,值为6表示IPv6报文TrafficClass:8比特,类似于IPv4中的TOS域FlowLabel:20比特。IPv6中新增。流标签可用来标记特定流的报文,以便在网络层区分不同的报文。转发路径上的路由器可以根据流标签来区分流并进行处理。由于流标签在IPv6报文头中携带,转发路由器可以不必根据报文内容来识别不同的流,目的节点也同样可以根据流标签识别流,同时由于流标签在报文头中,因此使用IPSec后仍然可以根据流标签进行QoS处理。IPv6报文头格式ⅡPayloadLength:16比特。以字节为单位的IPv6载荷长度,也就是IPv6报文基本头以后部分的长度(包括所有扩展头部分)。NextHeader:8比特。用来标识当前头(基本头或扩展头)后下一个头的类型。此域内定义的类型与IPv4中的协议域值相同。Pv6定义的扩展头由基本头或扩展头中的扩展头域链接成一条链。这一机制下处理扩展头更高效,转发路由器只处理必须处理的选项头,提高了转发效率。HopLimit:8比特。和IPv4中的TTL字段类似。每个转发此报文的节点把此域减1,如果此域值减到0则丢弃。SourceAddress:128比特。报文的源地址。DestinationAddress:128比特。报文的目的地址0123456789abcdef0123456789abcdefVersionTrafficClassFlowLabelPayloadLengthNextHeaderHoplimitSourceAddress(128bits)DestinationAddress(128bits)IPv4、IPv6报文头对比0123456789abcdef0123456789abcdefVersionIHLTOSTotalLengthIdentificationFlagFragmentOffsetTTLProtocolHeaderChecksumSourceAddress(32bits)DestinationAddress(32bits)Options/Padding0123456789abcdef0123456789abcdefVersionTrafficClassFlowLabelPayloadLengthNextHeaderHoplimitSourceAddress(128bits)DestinationAddress(128bits)v4和v6都相同的字段v4有,v6移除的字段v6改变名字和位置的字段v6新增的字段IPv6报文格式IPv6报文头扩展报文头载荷有效载荷IPv6报文IPv6报文跟v4一样,都是由报文头+载荷组成但v6报文将v4报文头中的可选字段(Option)移出,而在v6报文头的后面紧跟扩展报文头域,包含1个或多个可变长扩展报文头载荷数据为上层数据协议报文,例如TCP,UDP或者ICMPv6IPv6扩展报文NextHeadervalueType0逐跳选项扩展报头6TCP17UDP43路由扩展报头44分片扩展报头50封装安全有效载荷扩展报头51认证扩展报头58ICMPv6信息报文扩展报头59无下一报头60目的选项扩展报头IPv6扩展报文应用IPv6报文头NextHeader=6TCP载荷IPv6报文头NextHeader=43路由报文头NextHeader=6TCP载荷IPv6报文头NextHeader=43路由报文头NextHeader=51AH报头NextHeader=6TCP载荷如果一个IPv6报文包含多个扩展头,应严格按照如下顺序排列:逐跳选项扩展目的选项扩展路由扩展分片扩展认证封装安全净荷IPv6地址ⅠIPv6地址IPv6地址表示法IPv6地址有128位IPv6地址由16进制表示,分为8段,每段4位,中间用”:”隔开例如2001:0db8:85a3:0000:0000:8a2e:0370:7344若以0开头的段,0可以省略,全0的段可以用”::”表示(只能出现一次)上面的地址可以简写为:2001:db8:85a3:0:0:8a2e:370:73442001:db8:85a3::0:8a2e:370:73442001:db8:85a3::8a2e:370:7344IPv6地址ⅡIPv6地址IPv6地址=前缀+接口标识前缀:类似于IPv4中的网络ID接口标识:类似于IPv4中的主机ID前缀长度用/xx来表示,例如:2001:db8:85a3::8a2e:370:7344/64IPv6地址分类单播地址(UnicastAddress)组播地址(MulticastAddress)任播地址(AnycastAddress)标识多个接口,目的地址为任播地址的报文会被送到最近的一个被标识接口,最近的节点由路由协议来定义IPv6地址Ⅲ单播地址(UnicastAddress)全球单播地址(GlobalAddress)相当于v4中的公网地址,可以在互联网路由,由2或3开头链路本地地址(Link-LocalAddress)相当于v4中的169.254.0.0/16,不能被路由,以FE08开头站点本地地址(Site-LocalAddress)相当于v4中的私有地址,仅局域网使用,以FEC0~FEFF开头本地环回地址(LocalLoopbackAddress)相当于v4中的127.0.0.1,固定为::1表示3bit45bit16bit64bit001全球路由前缀子网接口IDIPv6地址Ⅳ组播地址(MulticastAddress)固定由11111111(FF)开头Flags:地址生存期,0表示永久,1表示临时Scope:组播地址范围1为节点、2为链路、5为站点、8为组织、E为全局几个特殊组播地址:FF01::1节点本地范围所有的节点多播地址一个节点上的所有接口FF02::1链路本地范围所有的节点多播地址IPv4中的广播Link上的所有节点FF01::2节点本地范围所有路由器多播地址FF02::2链路本地范围所有路由器多播地址FF05::2站点本地范围所有路由器多播地址8bit4bit4bit80bit32bit11111111FlagsScopeReservedmustbe0GroupIDIPv6地址Ⅴ任播地址(AnycastAddress)一组接口的标识符(通常属于不同的节点)发送到此地址的数据包被传递给该地址标识的唯一一个接口。这是按路由标准标识的最近的接口。任播地址取自单播地址空间,而且在语法上不能与其他地址区别开来。寻址的接口依据其配置确定单播和任一广播地址之间的差别。例如NTP业务,客户端只需要向最近的NTP服务器获取时间IPv6地址配置方法Ⅰ手工配置自动配置无状态地址自动配置有状态地址自动配置(DHCPv6)IPv6地址配置方法Ⅱ自动配置获取如下信息主机自己地址参数地址前缀接口ID其他相关参数路由器地址跳数MTUIPv6地址配置方法Ⅲ无状态自动配置-前缀主机发送RouterSolicitation报文路由器回应RouterAdvertisement报文主机获得前缀及其他参数路由器周期发送RA报文IPv6地址配置方法Ⅳ接口ID生成可以根据IEEEEUI-64规范自动生成MAC地址:18:03:73:62:91:27开始8位的倒数第2位取反:00011010在MAC地址的中间加入FFFE生成64位接口ID:1a03:73ff:fe62:9127随机生成或者手工配置DHCPv6ⅠDHCPv6交互流程DHCPv6ⅡDHCPv6交互流程DHCPv6ⅢSolicit消息DHCPv6ⅣAdvertise消息DHCPv6ⅤRequest消息DHCPv6ⅥReply消息DHCPv6ⅦDHCPv4v6消息对比DHCPv6消息描述对应的v4消息Solicit由客户端发送以定位服务器DHCPDiscoverAdvertise由服务器对“要求”消息进行响应时发送以指明可用性DHCPOfferRequest由客户端发送以请求来自特定服务器的地址或配置设置DHCPRequestConfirm由客户端发送给所有服务器,以确定对于已连接的链接客户端的配置是否有效DHCPRequestRenew由客户端发送给特定服务器以延长分配地址的生存期并获取更新的配置设置DHCPRequestRebind未接收到对“更新”消息的响应时由客户端发送给任何服务器DHCPRequestReply对要求、请求、更新、重新绑定、信息请求、确认、发布或拒绝消息进行响应时由服务器发送给特定客户端DHCPAckRelease由客户端发送以指明客户端不再使用分配的地址DHCPReleaseDecline由客户端发送给特定服务器以指明分配的地址已在使用中DHCPDeclineReconfigure由服务器发送给客户端以指明该服务器具有新的或更新的配置设置。客户端随后发送“更新”或“信息请求”消息N/AInformation-Request由客户端发送以请求配置设置(但不包括地址)DHCPInformRelay-Forward由中继代理发送以转发消息给服务器。中继转发包含封装为DHCPv6中继