RFC 2460 ——IPv6协议 黄双 w1035501 王为娟 w1035504
Outline Introduction Terminology IPv6 Header Format 1 8 4 6 5 3 7 2 Introduction Terminology IPv6 Header Format IPv6 Extension Headers Outline Packet Size Issues Flow Labels Traffic Classes Upper-Layer Protocol Issues
Introduction IP 第 6 版 (IPv6) 是继 IP 第 4 版 (IPv4) [RFC-791] 以后, Internet 协议一个新版本。 由 IPv4 到 IPv6 的改变主要集中在以下几个方面: *Expanded Addressing Capabilities *Header Format Simplification *Improved Support for Extensions and Options *Flow Labeling Capability *Authentication and Privacy Capabilities
Terminology >node - 应用 IPv6 的一个设备。 >router - 传送不是发给自己的 IPv6 包的节点。 >host - 任何非路由器节点。 >upper layer- 直接在 IPv6 上层的协议层。 >link - 一个通讯设备或者媒体。 >neighbors - 连在同一个链路上的节点。 >interface - 节点与链路的连接。 >address - IPv6 层中一个接口或者一组接口的标识符。 >packet - IPv6 首部加上有效载荷。 >link MTU - 最大传输单元。以八位组为单位的能在链路中传输的包的最大尺寸。 >path MTU - 源节点到目的节点之间的路径中所有链路的最小链路 MTU。
IPv6 Header Format
IPv6 Header Format Version 4bit Internet 协议版本号 = 6。 Traffic Class 8 bit 传输类别字段。 Flow Label 20 bit 数据流标签。 Payload Length 16 bit 无符号整数。 IPv6 有效载荷长度。也就是以八位组为单位,在这个包中 IPv6 首部后面的其余部分的长度。 Next Header 8 bit 选择器。 标识紧接在 IPv6 首部后面的下一个首部的类型。 使用与 IPv4 协议字段 【RFC-1700】 及后续协议相同的数值。 Hop Limit 8 bit 无符号整数。 在每个传输此包的节点处递减1。 如果跳数限制减为零, 就抛弃此包。 Source Address 128bit Destination Address 128bit
PK 1.地址空间为128位 2.标头长度是固定的(是以8字节为整数倍)40字节 1.地址空间32位 3.选项改为延伸标头来定义 4.由traffic class和flow label实现优先更好的服务 5.payload length包含延伸标头及IPv6标头之后的资料的长度 6.在分片延伸标头里处理分割后的封包 7.Hop limit表示转运点的数量,每一转送点会将此数值减1 8.下一个首部字段 1.地址空间32位 2.标头长度为20字节加上选项可扩充到60字节(是以4字节的整数倍) 3.选项是固定不变的放在首部的可变的部分 4.由type of service实现优先更好的服务 5.total length包含其标头及资料长度 6.标识。标志。区段位移处理分割后的封包 7.TTL 以秒数表示封包被销毁前可留在网路上的时间 8.协议字段
IPv6 Extension Headers
IPv6 Extension Headers 一个完整的 IPv6 实现应包含以下扩展首部的处理程序: >Hop-by-Hop Options >Routing (Type 0) >Fragment >Destination Options >Authentication >Encapsulating Security Payload
1、Hop-by-Hop Options IPv6 Extension Headers Hop-by-hop标头的栏位及每个栏位的作用: (1)Next Header(1位元组):用来判别Hop-by-hop选项标头后的标头的类型。 (2)Herder Extension Length(1个位元组):用来识别Hop-by-Hop Options标头的长度。 (3)Options(不固定长度): 其中第一个栏位包含了选项的处理咨询用于告知节点在无法辨识该选项的情况下应如何处理。本栏位头两个位元的值用来标明应采取的行动: 00:略过并继续处理 01:舍弃该封包 10:舍弃该封包并送出ICMP参数问题代号2的讯息到封包来源地址,表该选项类型无法识别。 11:舍弃该封包并且仅在目的地不是多点传播位址时才送出ICMP参数问题代号2的讯息至封包来源地址。 第三个栏位用来标明该选项咨询是否会改变en route(01)或是不会改变(00)
2、Routing Header IPv6 Extension Headers 每个栏位的用途及内容: (1)Next Header(1个位元组) (2)Hdr Ext Len(1个位元组) (3)Routing Type(1个位元组):用于识别路由标头的类型 (4)Segments Left(1个位元组):标明封包在抵达最终目的地之前还有多少 个节点需要访问。 (5)type-specific data(不固定长度):其格式由路由类型决定。长度为8位组的整数倍。
IPv6 Extension Headers The Type 0 Routing header has the following format:
源节点 S 给目的节点 D 发送一个包, 用路由首部来使这个包经过中间节点 I1, I2 和 I3。 IPv6 Extension Headers 源节点 S 给目的节点 D 发送一个包, 用路由首部来使这个包经过中间节点 I1, I2 和 I3。 S -->I1 Source Address=S Hdr Ext Len = 6 Destination Address = I1 Segments Left = 3 Address[1] = I2 Address[2] = I3 Address[3] = D I2-->I3 Source Address = S Hdr Ext Len = 6 Destination Address = I3 Segments Left = 1 Address[1] = I1 Address[2] = I2 Address[3] = D I1-->I2 Source Address = S Hdr Ext Len = 6 Destination Address = I2 Segments Left = 2 Address[1] = I1 Address[2] = I3 Address[3] = D I3-->D Source Address = S Hdr Ext Len = 6 Destination Address = D Segments Left = 0 Address[1] = I1 Address[2] = I2 Address[3] = I3
3、Fragment Header IPv6 Extension Headers IPv6 源节点使用分片首部来发送大于去往目的节点的path MTU 的包。前面的首部中"next header"字段中的值为 44 表示下一个首部为分片首部。 分片首部具有如下格式: 最初的, 未分片的大数据包称为"original packet"。 原包可以看作是由两部分组成的, 如下所示: original packet中可分片部分被划分成若干分片, 除去最后一个分片, 每个分片都为8 个八位组的整数倍长。 分片由相互独立的"fragment packets"来传送, 如图:
3、Fragment Header IPv6 Extension Headers reassembled original packet 计算重组包的有效载荷长度的公式为: PL.orig = PL.first - FL.first - 8 + (8 * FO.last) + FL.last PL.orig = 重组包的有效载荷长度字段。 PL.first = 第一个分片包的有效载荷长度字段。 FL.first = 第一个分片包中分片首部后面的分片长度。 FO.last = 最后一个分片包中分片首部的分片偏移量字段。 FL.last = 最后一个分片包中分片首部后面的分片长度。
5、No Next Header IPv6 Extension Headers 4、Destination Options Header Destination Options Header用于携带只需由包的目的节点检测的可选信息。 前面的首部中"next header"字段中的值为 60 表示下一个首部为目的地址选项首部。 Destination Options Header具有如下格式: 5、No Next Header IPv6 首部或者扩展首部中"nex theader"的值为 59 表示这个首部后面没有其他的首部了。 如果 IPv6 首部中的有效载荷字段表明最后一个首部 ("next header"字段为 59 的那个首部) 后面还有其他的八位组, 那么这些八位组将被忽略, 并且在传输过程中保持不变。
Packet Size Issues IPv6 要求互联网上的每条链路具有 1280 或更多个八位组的 MTU。 无法在一片 重组机制。 具有可配置 MTU 的链路必须配置为具有至少 1280个八位组的 MTU; 建议配置成 具有 1500 或更多个八位组的 MTU, 这样可以容纳可能的封装 而不至于在 IPv6 协议 层分片。与链路直接连接的节点必须能够接收链路 MTU 大小的包。 一个最小的 IPv6 实现可以简单的限制自己只发送小于 1280 个八位组的包, 当 要发送大于路径 MTU 的包, 节点可以使用 IPv6 分片首部, 在源节点将包分片, 并 在目的节点将包重组。 但是, 如果应用程序能够调整包的大小来适合标准的路径 MTU, 那么最好不要使用分片。
Flow Labels IPv6 首部中 20 比特的数据流标签字段用于源节点标识那些需要 IPv6 路由器特 殊处理的包的序列, 比如非缺省质量的服务或者"实时"服务。 撰写这篇文章的时候, IPv6 在这方面尚处于实验阶段, 并且随着因特网上支持 数据流的要求变得越来越清楚, 它还可能有所改变。 不支持数据流标签字段功能的 主机和路由器应在初始化数据包的时候将此字段设为零, 传输包的时候保持不变, 接收包的时候忽略。
Traffic Classes IPv6 首部中 8 比特的传输类别字段可用于初始节点和/或转寄路由器标识和区分 下面是传输类别字段所应满足的总的要求: 1、 节点中 IPv6 服务的服务接口必须为上层协议规定一种给初始包提供传输类别数 据位的值的方法。 2、 支持部分或全部传输类别数据位的某一特定 (实验性的或最终标准) 用法的节点可以根据其用法修改它们所生成的, 传输的或者收到的包中的这些位的值。 如果节点不支持这一用法, 应忽略这些位, 并保持其值不变。 3、上层协议不应假定所收到的包中传输类别数据位的值与源节点发送此包时的值相同
Upper-Layer Protocol Issues 1、Upper-Layer Checksums 在计算校验和时包含 IP 首部中地址的传输层或其他上层协议必须为通过 IPv6 进行传输加以相应的改进, 将 32 位的 IPv4 地址改为 128 位的 IPv6 地址。 IPv6 版本的 ICMP [ICMPv6] 在计算校验和时包含上述的伪首部; 这是 一个与 IPv4的版本不同的地方 -- IPv4 的版本在校验和中不包含伪首部。 改变的原因是防止ICMP 发生不正确的传送, 以及 IPv6 首部中的这些字 段发生讹误 -- 它们没有受到网络层校验和的保护。 ICMP 的伪首部中"下 一个首部"字段的值为 58, 标识IPv6 版本的 ICMP。 下面的例子展示了 TCP 和 UDP 的 IPv6 "伪首部":
Upper-Layer Protocol Issues 2、Maximum Packet Lifetime 与 IPv4 不同的是, IPv6 节点不必强制规定一个包的最大生存期。 这就是 IPv4 中的"生存期"字段在 IPv6 中改名为"跳数限制"的原因。 3、Maximum Upper-Layer Payload Size 当计算可提供给上层协议数据的最大有效载荷尺寸的时候, 上层协议必须考虑到IPv6 首部比 IPv4 首部大。 IPv6 首部的最小长度 (也就是没有任何扩展首部的 IPv6 首部) 比 IPv4 首部的最小长度长 20 个八位组。 4 、Responding to Packets Carrying Routing Headers 当上层协议发送一个或多个包, 作为包含路由首部的包的响应时, 响应包中不能包含由所收到的路由首部"反向"而自动得到的路由首部。 除非收到的源地址和路由首部的完整性和可靠性已得到验证 。
The end!