当前位置:网站首页 > Haskell函数式编程 > 正文

ipv6报文格式的特点(ipv6 tcp报文)



IPv6(Internet Protocol Version 6)是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation)。它是IETF(Internet工程任务组)设计的一套规范,是IPv4(Internet Protocol Version 4)的升级版本。IPv6和IPv4之间最显著的区别就是IP地址长度从原来的32位升级为128位。
以IPv4为核心技术的Internet获得巨大成功,促使IP技术得到广泛应用。然而,随着因特网的迅猛发展,IPv4设计的不足也日益明显,主要有以下几点:
  • IPv4地址空间不足
IPv4地址采用32比特标识,理论上能够提供的地址数量是43亿。但由于地址分配的原因,实际可使用的数量不到43亿。另外,IPv4地址的分配也很不均衡:美国占全球地址空间的一半左右,而欧洲则相对匮乏;亚太地区则更加匮乏。与此同时, 移动IP和宽带技术的发展需要更多的IP地址。IPv4地址资源紧张直接限制了IP技术应用的进一步发展。
针对IPv4的地址短缺问题,也曾先后出现过几种 解决方案。比较有代表性的是CIDR(Classless Inter-Domain Routing)和NAT(IP Network Address Translator)。但是CIDR和NAT都有各自的弊端和不能解决的问题,由此推动了IPv6的发展。
  • 骨干路由器维护的路由表表项数量过大
由于IPv4发展初期的分配规划问题,造成许多IPv4地址分配不连续,不能有效聚合路由。日益庞大的路由表耗用较多内存,对设备成本和转发效率产生影响,这一问题促使设备制造商不断升级其路由器产品,以提高路由寻址和转发性能。
  • 不易进行自动配置和重新编址
由于IPv4地址只有32比特,并且地址分配不均衡,导致在网络扩容或重新部署时,经常需要重新分配IP地址。因此需要能够进行自动配置和重新编址以减少维护工作量。
  • 不能解决日益突出的安全问题
随着因特网的发展,安全问题越来越突出。IPv4协议制定时并没有仔细针对安全性进行设计,因此固有的 框架结构并不能支持端到端的安全。IPv6将IPSec作为它的 标准扩展头实现,可以提供端到端的安全特性。
IPv6技术从根本上解决了IP地址短缺的问题;且易于部署,能够兼容当前的各种应用,方便用户的平滑过渡;同时可实现与IPv4网络的共存和互通。由于IPv4存在以上种种弊端和不足,IPv6技术的优越性显而易见,因此IPv6技术得以迅猛发展。
IPv6特性的相关规格如下:
  • 支持IPv6重定向报文。
  • 支持IPv6基本报文头和扩展报文头。
  • 支持发送差错和信息ICMPv6报文。
  • 支持ICMPv6校验和。
  • 支持自动/手动配置Link-Local地址。
  • 支持动态PMTU表项老化。
  • 支持基本和高级ACL6。
  • 支持基于IPv6地址的Ping、Tracert和Telnet。
  • 支持IPv6 over IPv4隧道。
  • 支持IPv4 over IPv6隧道。
  • 支持6RD隧道。
  • 支持DS-Lite特性。
  • 支持NAT64特性。
IPv6的128位IP地址有以下两种表示形式。
  • X:X:X:X:X:X:X:X
在这种形式中,128位的IPv6地址被分为8组,每组的16位用4个十六进制字符(0~9,A~F)来表示,组和组之间用冒号(:)隔开。其中每个“X”代表一组十六进制数值。比如下面这个IPv6地址:
2031:0000:130F:0000:0000:09C0:876A:130B
为了书写方便,每组中的前导“0”都可以省略,所以上述地址可写为:
2031:0:130F:0:0:9C0:876A:130B。
另外,地址中包含的连续两个或多个均为0的组,可以用双冒号“::”来代替,这样可以压缩IPv6地址书写时的长度,所以上述地址又可以进一步简写为:
2031:0:130F::9C0:876A:130B。
  • X:X:X:X:X:X:d.d.d.d
分为如下两种类型:
  • IPv4兼容IPv6地址。地址格式为:0:0:0:0:0:0:IPv4-address,其高阶96bits均为0,其低阶32bits是一个IPv4地址。该IPv4地址必须是IPv4网络中可达的IPv4地址,且不能是组播地址、广播地址、环回地址或未指定的地址(0.0.0.0)。
  • IPv4映射IPv6地址。地址格式为:0:0:0:0:0:FFFF:IPv4-address。该地址用来将IPv4节点的地址表示为IPv6地址。
其中IPv4兼容IPv6地址用于配置IPv6 over IPv4隧道。
其中“X”代表高阶的六组数字,用十六进制数来表示每组的16比特。“d”代表低阶的四组数字,用十进制数表示每组的8比特。后边的部分(d.d.d.d)其实就是一个标准的IPv4地址。
一个IPv6地址可以分为如下两部分:
  • 网络前缀:n比特,相当于IPv4地址中的网络ID
  • 接口标识:128-n比特,相当于IPv4地址中的主机ID
地址2001:A304:6101:1::E0:F726:4E58 /64的构成如下图所示:
IPv6主要有三种类型的地址:单播地址、组播地址和任播地址。
  • 单播地址:用来唯一标识一个接口,类似于IPv4的单播地址。发送到单播地址的数据报文将被传送给此地址所标识的接口。
  • 组播地址:用来标识一组接口(通常这组接口属于不同的节点),类似于IPv4的组播地址。发送到组播地址的数据报文被传送给此地址所标识的所有接口。
  • 任播地址:用来标识一组接口(通常这组接口属于不同的节点)。发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近(根据使用的路由协议进行度量)的一个接口。
*说明:IPv6中没有广播地址,广播地址的功能通过组播地址来实现。
IPv6地址类型是由地址前面几位(称为格式前缀)来指定的,主要地址类型与格式前缀的对应关系如表1所示。
表1 IPv6单播地址类型

表中各类地址的意义如下:

IPv6单播地址的类型可有多种,包括全球单播地址、链路本地地址和站点本地地址等。

  • 链路本地单播地址:(FE80::/64)

用于邻居发现协议和无状态自动配置进程中链路本地上节点之间的通信。使用链路本地地址作为源或目的地址的数据包不会被转发到其他链路上。使用链路本地前缀FE80::/10(1111 1110 10)和IEEE EUI-64格式的接口标识符(EUI-64可来源于EUI-48)可在任意接口对其进行自动配置。

拥有Link-local地址的节点可以与同一链路(link)上的相邻节点通信

Link-local地址以FE80开头,前缀为FE80::/64

Link-local地址只能在本地链路使用,不能在子网间路由

IPv6协议下,每个网络接口都需要分配一个Link-local地址,即使该接口已经分配了可路由的IPv6地址

  • 环回地址:(::1)

环回地址0:0:0:0:0:0:0:1或::1,不会被分配给任何接口。它的作用与在IPv4中的127.0.0.1相同,即节点将IPv6报文发送给自己。

  • 未指定地址

地址“::”称为未指定地址,不能被分配给任何节点,也不能作为目的地址。在主机初始化且没有取得自己的地址时,未指定地址可以用在IPv6报文的源地址字段,例如重复地址探测时,NS报文的源地址就是未指定地址。

  • 全球单播地址:(2000::/3)

全球单播地址等同于IPv4公网地址。用于可以聚合的链路,最后提供给网络服务提供商。这种地址类型的结构允许路由前缀的聚合,从而满足全球路由表项的数量限制。地址包括48位路由前缀和本地站点管理的16位子网ID,以及64位接口ID。如无特殊说明,全球单播地址包括站点本地单播地址。

全球单播地址地址具有4个字段:

001:Global unicast地址的前缀(2000::/3)

Global Routing ID:站点(Site)路由前缀(相当于IPv4的Network ID),站点可以是一个网络公司

Subnet ID:表示站点内的子网,最多可以有2^16=65536个子网

Interface ID:表示子网内的网络接口(相当于IPv4的Host ID)

  • 组播地址

组播地址用来标识属于不同节点的一组接口,类似IPv4的组播地址。发送到组播地址的数据包被传输给此地址所标识的所有接口。

表2所示的组播地址,是预留的特殊用途的组播地址。

表2 预留的IPv6组播地址列表

。然后将U/L位(从高位开始的第7位)设置为“1”,这样就得到了EUI-64格式的接口ID。具体转换过程如图2。

img src="https://note.youdao.com/src/WEBRESOURCE19f9dfe14db3d08b5d368c5ade5a8c92" alt="" data-media-type="image">

img src="https://img2018.cnblogs.com/common/1937516/202002/1937516-20200217174625078-316770849.png" alt="">

img src="https://img2018.cnblogs.com/common/1937516/202002/1937516-20200217174708746-501150023.png" alt="">

img src="https://note.youdao.com/src/WEBRESOURCE369e2c0a83b6e9bd595970c8a3e21511" alt="" data-media-type="image">

  • Version(版本):该字段表示IP版本,值为6。
  • Traffic class(流量类别):该字段及其功能类似于IPv4的业务类型字段。该字段以区分业务编码点(DSCP)标记一个IPv6数据包,以此指明数据包应当如何处理。
  • Flow label(流标签):该字段用来标记IP数据包的一个流,当前的标准中没有定义如何管理和处理流标签的细节。
  • Payload length(有效载荷长度):该字段表示有效载荷的长度,有效载荷是指紧跟IPv6基本报头的数据包,包含IPv6扩展报头。
  • Next header(下一报头):该字段指明了跟随在IPv6基本报头后的扩展报头的信息类型。如图4所示。
  • Hop limit(跳数限制):该字段定义了IPv6数据包所能经过的最大跳数,这个字段和IPv4中的TTL字段非常相似。
    • Source address(报文源地址):该字段表示该报文的源地址。
    • Destination address(报文目的地址):该字段表示该报文的目的地址。
    • img src="https://note.youdao.com/src/WEBRESOURCE0167dc3ba7c83f2b93c527974f0dce12" alt="" data-media-type="image">

      img src="https://img2018.cnblogs.com/common/1937516/202002/1937516-20200217174725972-67410778.png" alt="">

      img src="https://img2018.cnblogs.com/common/1937516/202002/1937516-20200217174744983-1587393825.png" alt="">

      img src="https://note.youdao.com/src/WEBRESOURCE3f84adff2451d30be6edad3a4f3058ce" alt="" data-media-type="image">

      • 对于有状态地址配置,主机通过服务器获取地址信息和配置信息。
      • 对于无状态地址配置,主机自动配置地址信息,地址中带有本地路由设备通告的前缀和主机的接口标识。如果链路上没有路由设备,主机只能自动配置链路本地地址,实现与本地节点的互通。
      • img src="https://img2018.cnblogs.com/common/1937516/202002/1937516-20200217174921396-1015848888.png" alt="">

        img src="https://note.youdao.com/src/WEBRESOURCEb1087b8c46029159110e21434be36f74" alt="" data-media-type="image">

        • IPv6基本报头
        • 逐跳选项扩展报头
        • 目的选项扩展报头
        • 路由扩展报头
        • 分片扩展报头
        • 授权扩展报头
        • 封装安全有效载荷扩展报头
        • 目的选项扩展报头(指那些将被分组报文的最终目的地处理的选项)
        • 上层扩展报头
        • img src="https://img2018.cnblogs.com/common/1937516/202002/1937516-20200217175016836-2039260794.png" alt="">

          img src="https://note.youdao.com/src/WEBRESOURCE049c6b32c026a286a2dbe99a628e0cea" alt="" data-media-type="image">

          • Type字段表明消息的类型,0至127位表示差错报文类型,128至255位表示消息报文类型。
          • Code字段表示此消息类型细分的类型。
          • Checksum表示ICMPv6报文的校验和。
            • 目的不可达错误报文
              1. 没有到目的地的路由
              2. 地址不可达
              3. 端口不可达
                • 数据包过大错误报文
                  • 时间超时错误报文
                    • 参数错误报文
                      1. IPv6基本头或扩展头的某个域有错误
                      2. IPv6基本头或扩展头的NextHeader值不可识别
                      3. 扩展头中出现未知的选项
                        • 基本ACL6,基本ACL6只能使用源地址信息做为定义ACL6规则的元素。
                        • 高级ACL6,高级ACL6可以使用数据包的源地址信息、目的地址信息、IP承载的协议类型、针对协议的特性定义规则,例如TCP的源端口、目的端口,ICMPv6协议的类型、ICMPv6 Code等。可以利用高级ACL6定义比基本ACL6更准确、更丰富、更灵活的规则。
                          • 配置顺序:按照用户配置规则的先后顺序进行规则匹配。
                          • 自动排序:按照“深度优先”的顺序进行规则匹配。
                          • -基本ACL6的“深度优先”顺序判断原则如下

                              1. 先比较源IPv6地址范围,源IPv6地址范围小(前缀长)的规则优先。
                              2. 如果源IPv6地址范围相同,则先配置的规则优先。

                              -高级ACL6的“深度优先”顺序判断原则如下

                                1. 先比较协议范围,指定了IPv6协议承载的协议类型的规则优先。
                                2. 如果协议范围相同,则比较源IPv6地址范围,源IPv6地址范围小(前缀长)的规则优先。
                                3. 如果协议范围、源IPv6地址范围相同,则比较目的IPv6地址范围,目的IPv6地址范围小(前缀长)的规则优先。
                                4. 如果协议范围、源IPv6地址范围、目的IPv6地址范围相同,则比较四层端口号(TCP/UDP端口号)范围,四层端口号范围小的规则优先。
                                5. 如果上述范围都相同,则先配置的规则优先。

                                • 路由器请求报文RS(Router Solicitation):主机启动后,通过RS报文向路由设备发出请求,路由设备则会以RA报文响应。
                                • 路由器通告报文RA(Router Advertisement):路由设备周期性的发布RA报文,其中包括前缀和一些标志位的信息。
                                • 邻居请求报文NS(Neighbor Solicitation):IPv6节点通过NS报文可以得到邻居的链路层地址,检查邻居是否可达,也可以进行重复地址检测。
                                • 邻居通告报文NA(Neighbor Advertisement):NA报文是IPv6节点对NS报文的响应,同时IPv6节点在链路层变化时也可以主动发送NA报文。
                                • 重定向报文(Redirect):路由设备发现报文的入接口和出接口相同时,可以通过重定向报文通知主机选择另外一个更好的下一跳地址。
                                  1. 当一个节点配置了IPv6地址,为了查看该地址是否被其他邻居节点所使用,会即时发送邻居请求报文来确定其可用性。
                                  2. 当其他邻居节点收到该报文后会查找本地的IPv6地址中是否存在相同的IPv6地址,若存在会回应一个邻居通告报文给源节点,并携带此IPv6地址信息。
                                  3. 源节点收到邻居的回应报文则认为该IPv6地址已被邻居使用。反之,如果源节点发出的邻居请求报文没有收到相应的回应报文,则表示配置的IPv6地址是可用的。
                                  4. img src="https://img2018.cnblogs.com/common/1937516/202002/1937516-20200217175331086-1693346714.png" alt="">

                                    img src="https://note.youdao.com/src/WEBRESOURCEaaa47f22f61c167d3eb0d148c4c0844a" alt="" data-media-type="image">

                                    • 路由器请求
                                      • 路由器通告
                                        1. 是否使用地址自动配置
                                        2. 标记支持的自动配置类型(无状态或有状态自动配置)
                                        3. 一个或多个本地链路前缀(本地链路上的节点可以使用这些前缀完成地址自动配置)
                                        4. 通告的本地链路前缀的生存期
                                        5. 发送路由器通告的路由设备是否可作为缺省路由设备,如果可以,还包括此路由设备可作为缺省路由设备的时间(用秒表示)
                                        6. 和主机相关的其它信息,如跳数限制、主机发起的报文可以使用的最大MTU
                                        7. img src="https://note.youdao.com/src/WEBRESOURCEa3cc998e9d60cd960043be3e5f5626bb" alt="" data-media-type="image">

                                          img src="https://img2018.cnblogs.com/common/1937516/202002/1937516-20200217175445886-2142427990.png" alt="">

                                          img src="https://note.youdao.com/src/WEBRESOURCE010252fceba004e173dd308e2afef452" alt="" data-media-type="image">

                                          img src="https://img2018.cnblogs.com/common/1937516/202002/1937516-20200217175535154-1242000479.png" alt="">

                                          • 多种链路协议支持双协议栈
                                            • 多种应用支持双协议栈
                                            • img src="https://img2018.cnblogs.com/common/1937516/202002/1937516-20200217175609726-1631277844.png" alt="">

                                              img src="https://note.youdao.com/src/WEBRESOURCEe614263b01c382bc3ce3d6f2470e5f83" alt="" data-media-type="image">

                                              • IPv6 over IPv4手动隧道
                                              • IPv6 over IPv4 GRE隧道(简称GRE隧道)
                                              • IPv6 over IPv4自动隧道(简称自动隧道)
                                              • 6to4隧道
                                              • ISATAP隧道
                                              • 0:0:0:0:0:0:IPv4-address

                                                2002:IPv4地址:子网ID:接口ID

                                                img src="https://img2018.cnblogs.com/common/1937516/202002/1937516-20200217175745942-755134853.png" alt="">

                                                img src="https://note.youdao.com/src/WEBRESOURCE9aa1da02ba741d01c8d0ff4b33ca7c7c" alt="" data-media-type="image">

                                                img src="https://img2018.cnblogs.com/common/1937516/202002/1937516-20200217175829639-219669741.png" alt="">

                                                img src="https://note.youdao.com/src/WEBRESOURCEa0255b6b903264e682ce752103efe954" alt="" data-media-type="image">

                                                img src="https://img2018.cnblogs.com/common/1937516/202002/1937516-20200217175848278-542343621.png" alt="">

                                                img src="https://note.youdao.com/src/WEBRESOURCE7405c26f20180f75bd2d2615b83eee79" alt="" data-media-type="image">

                                                1. 当CE接收到来自IPv6终端发送的报文时,将IPv6报文封装到IPv4隧道中,发送至6RD Border Relay,隧道外层源地址为CE的IPv4地址,目的地址为6RD Border Relay的IPv4地址;
                                                2. 6RD Borer Relay将收到的IPv4隧道报文解封装,然后将IPv6报文进行转发。
                                                3. Prefix(64bit)::5EFE:IPv4-Address

                                                  1. IPv4/IPv6主机发送路由设备请求消息
                                                  2. ol start="2">

                                                  3. ISATAP路由设备响应请求
                                                  4. ol start="3">

                                                  5. IPv4/IPv6主机得到自己的IPv6地址
                                                  6. 5EFE:IPv4-Address

                                                    组合得到自己的IPv6地址,并用此地址访问IPv6主机。

                                                    img src="https://img2018.cnblogs.com/common/1937516/202002/1937516-20200217175936359-1248014742.png" alt="">

                                                    img src="https://note.youdao.com/src/WEBRESOURCE0c759eca79edc579e0691d50af075e4f" alt="" data-media-type="image">

                                                    img src="https://img2018.cnblogs.com/common/1937516/202002/1937516-20200217180015785-1489723250.png" alt="">

                                                    img src="https://note.youdao.com/src/WEBRESOURCE1a460eab10a2cea1e18b339fee30bd8d" alt="" data-media-type="image">

                                                    Pv4 over IPv6隧道技术的原理如图16所示。
                                                    1.启动IPv4/IPv6双协议栈
                                                    边界路由设备启动IPv4/IPv6双协议栈。
                                                    2.封装IPv6报文
                                                    边界路由设备在收到从IPv4网络侧来的报文后,如果报文的目的地不是自身,就把收到的IPv4报文作为净荷,加上IPv6报文首部,封装到IPv6报文里。
                                                    3.传递封装后的报文
                                                    在IPv6网络中,封装后的报文被传递到对端的边界路由设备。
                                                    4.对报文解封装
                                                    对端边界路由设备对报文解封装,去掉IPv6报文首部,然后将解封装后的IPv4报文转发到IPv4网络中。

                                                    到此这篇ipv6报文格式的特点(ipv6 tcp报文)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

                                                    版权声明


                                                    相关文章:

                                                  7. sigmod(sigmoid函数求导)2025-09-27 21:45:06
                                                  8. 3dl是什么文件格式(常见3d文件格式)2025-09-27 21:45:06
                                                  9. 支付方式英文翻译(支付方式 英文)2025-09-27 21:45:06
                                                  10. sigmoid函数的表达式及其特点(sigmoid函数意义)2025-09-27 21:45:06
                                                  11. canfd报文格式(can报文格式有哪几种)2025-09-27 21:45:06
                                                  12. 窗口函数(max函数是窗口函数)2025-09-27 21:45:06
                                                  13. sigmoid输出值(sigmoid函数输出)2025-09-27 21:45:06
                                                  14. 编程入门基础知识 那些符号是什么(编程入门基础知识 那些符号是什么)2025-09-27 21:45:06
                                                  15. 编程初学者教程(编程入门基础教程)2025-09-27 21:45:06
                                                  16. canfd报文格式(can报文blf打开)2025-09-27 21:45:06
                                                  17. 全屏图片