IPv6概念整理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IPv6概念整理相关的知识,希望对你有一定的参考价值。
参考技术A 主要由基本的概述、地址的表示、子网划分、报头还有通信这几个方面IPv6的特性
首先是IPv6的基本情况。IPv6是为了弥补IPv4的不足而诞生的。
1.互联网的不断发展下,IPv4下的IP地址已经饱和。对于互联网物联网的发展来说可能需要更加充足的IP地址。对于IPv6协议来说,IPv6的地址有128位的地址,可以提供2^128个地址。可以满足不断增长的IP需求
2.IPv4本身不提供安全功能,需要其他的安全软件对传输的数据进行加密。IPv6上IPSec安全功能是默认开启的。(IPv4上是可选的)这在一定程度上增加了通信的安全性。
3.IPv4的包头长度是可变的,这样的包头加重了路由器转发的负担。而IPv6简化了包头,将不必要的信息放在头的末尾。路由器只需要查看第一部分的包头进行转发即可,不需要再去查看扩展包头。扩展包头可以到应用程序了再进行查看。
4.IPv4需要DHCP服务去配置IP。而IPv6支持主机有状态和无状态的自动配置。在一定程度上节省了资源
IPv6由8个16位块(128位二进制)组成。十六进制上由8组4位十六进制数字表示,使用冒号:进行分割。
2001:0000:3238:DFE1:0063:0000:0000:FEFB
就算在十六进制下IP地址仍然显示很长,由此有两种方式来缩短IP地址
1.丢弃前导零
如果一个组内有多个零时。可以省略这些零。
2001:0000:3238:DFE1:63:0000:0000:FEFB
2001:0:3238:DFE1:63:0:0:FEFB
2.两个或多个块中连续为零可用::表示。
2001:0000:3238:DFE1:63::FEFB
一个IP地址中只能使用一次::否则分析器没有办法确定有多少字段缺少0 .没有办法补齐IP地址
1.单播:
1 vs 1 主机只与目标地址进行通信。
2. 组播:
1 vs N。 主机将数据发送给组播组内的所有主机。
3. 任播:
多个接口分配了相同的任播IP地址
主机要与配备有任播IP地址的主机通信,会发送单播消息。路由器会找到最近的目标主机。
有三种单播地址:
全局单薄地址: Global unicast address
格式: 全局路由前缀+子网ID+接口ID
可理解为IPv4中的公网地址
全局地址是通过IPv6前缀下发所拿到的一个全局可达的IPv6地址,例如下图中的fd4d:e0f1:f1db::250:56ff:fe86:1b10。有了这个全局IPv6地址,就能跟世界上任何一个IPv6全局地址通讯了,类似于通俗说的公网地址
链路本地地址:link-local address
自动配置IPv6的地址。始终以FE80开头。
格式:FE80+0+接口ID
只可以在本地链路上使用。不能被路由
在同一个交换机下面的机器就能直接通过这个地址通讯啦,不需要再配置别的地址。
·
假设公司内网有两个不同的子网A和B(IPv6中的链路就是同一子网内的主机。)
所以链路A的IPv6主机只能在链路A内与其他IPv6主机进行通信。不能和链路B的IPv6主机进行通信。(如果链路A的IPv6主机要与链路B的IPv6主机进行通信就需要跨路由)
本地链路地址只能在本地链路上使用。且不能被路由
唯一本地地址: unique local address
这种IPv6地址是全局唯一的。但只应用于本地通信
格式:前缀+本地位+全局ID+子网ID+接口ID
唯一本地IPv6地址始终以 FD 开头
对应于链路本地地址上的例子。唯一本地地址是 可以通过路由 在链路A和链路B上进行通信的。但他的通信范围只局限在私有网络。可以理解为IPv4的私有网络。
IP:192.168.1.3 Mask:255.255.255.0
CIDR IP:192.168.1.3/24
IPv6使用网络前缀来进行子网划分。
2001:C3:0:2C6A::/64 ----》 subnet
2001:C3:0:2C6A:C9B4:FF12:48BC:1A22/64 ----> address of the subnet
相比IPv4包头来说IPv6的包头精简了很多。
删除掉了IPv4的包头长度/标志/标识/分片偏移/包头校验和/选项/可填充变量
Version:标识Version即版本信息,4代表IPv4,6代表IPv6;
IHL:标识了IP报文的首部长度,大小为20-60字节;
Type of Service:服务类型,在QoS中才会使用到此字段;
Total Length:IP报文段的总长度;
Identification:标识,主机每发一个报文,则+1;
Flags:3个bit,分别为保留位,DF位(0可以分片,1不能分片),MF位(0最后一片,1未完待续);
Fragment Offset:片偏移,分片重组的时候需要使用到的字段,此处不做详细解释;
Time to Live:简称TTL,数据包可在网络中经过的路由节点数;
Protocol:下层协议,如UDP或TCP等;
Header Checksum:首部校验和;
Source Address:源IP地址;
Destination Address:目的IP地址;
Options:选项字段;
Padding:填充字段。
增加了流标签和扩展包头信息
版本:表示internet协议的版本
流量类型: 最重要的6位用于服务类型,以便让路由器知道应该向该分组提供什么服务。 最低有效2位用于显式拥塞通知(ECN)。
流标签:维护同学的数据包的顺序流。尚未定义好如何使用
有效负载长度:扩展包头+上层数据
下一个包头:扩展包头
IPv6扩展报文头的引入简化了IPv6基本报文头的格式,一个IPv6报文中可以包含0个及以上扩展报文头。当需要有多个IPv6扩展报文头的时候,IPv6的基本报文头的Next Header字段将会指明下一个扩展报文头的类型,IPv6扩展报文头的Next Header字段将会指明下一个扩展报文头的类型,以此类推,如果后续没有IPv6扩展报文头,那么此字段将指明上层协议类型。
路由设备转发时根据基本报头中Next Header值来决定是否要处理扩展头,并不是所有的扩展报头都需要被转发路由设备查看和处理的。除了目的选项扩展报头可能出现一次或两次(一次在路由扩展报头之前,另一次在上层协议数据报文之前),其余扩展报头只能出现一次。
用来实现地址解析,重复地址检测,路由器发现以及路由重定向等功能。具体的ICMPv6的消息类型及具体作用如下
邻居请求报文NS(Neighbor Solicitation)报文:Type字段值为135,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP请求报文。用来获取邻居的链路层地址,验证邻居是否可达,进行重复地址检测等。
邻居通告报文NA(Neighbor Adivertisment)报文:Type字段值为136,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP应答报文。用来对NS消息进行响应。另外,当节点在链路层变化的时候主动发出NA消息,告知邻居本节点的变化。
ICMPv6路由器请求(Router Solicitation)消息:Type字段值为133,节点启动后,通过RS消息向路由器发出请求,请求前缀和其他配置信息,用于节点的自动配置。
ICMPv6路由器通告(Router Advertisement)消息:Type字段值为134,对RS消息进行回应。在没有抑制RA消息发布的条件下,路由器会周期性地发布RA消息,其中包括前缀信息选项和一些标志位的信息。
ICMPv6重定向(Redirect)消息:Type字段值为137,当满足一定的条件时,缺省网关通过向源主机发送重定向消息,使主机重新选择正确的下一跳地址进行后续报文的发送。
地址解析
整体报文交互总览(NS和NA):
①节点1会发送一个NS报文,Type值为135,源地址为节点1的IPv6地址。目的地址为节点2的被请求节点组播地址,要请求的为节点2的链路层地址。同时NS的报文的Options字段中携带了节点1的链路层地址。如下图:
获取同一链路上邻居节点的链路层地址(与IPv4的ARP功能相同),通过邻居请求消息NS和邻居通告消息NA实现。节点1要获取节点节点2的链路层地址。
DAD (重复地址检测):
邻居请求报文NS(Neighbor Solicitation)报文:Type字段值为135,Code字段值为0,在地址解析中的作用类似于IPv4中的ARP请求报文。用来获取邻居的链路层地址,验证邻居是否可达,进行重复地址检测等。
节点在发送路由器公告前要获得唯一的链路本地地址
为什么要唯一:未确定唯一性的地址不能使用。即不能接收目的地址或者发送源地址为此地址的分组
1.接口要加入全节点组播地址 FF02::1
2.要生成IPv6地址的请求节点组播地址(solicited-node multicast address).接受地址为IPv6的这些分组
3.发送NS请求。源地址为::。目的地址为临时单播地址请求节点的组播地址
4.所生成的local-link address会处于暂时状态(Tentative)。如果收到该节点的回应则证明该节点已被使用。需要重新生成新的local-link address.如果没有NS回应则证明该节点没有被其他主机使用。则确定local-link address
邻居通告:将地址分配给接口并启用后。主机再次发送邻居通告告诉该段上的其他主机。这个IP地址已经被使用了。
路由器请求:
在段上对路由器发送组播数据包。了解该段上的路由器
帮助主机设置默认网关
路由器通告:
路由器收到路由器请求时会回应主机,告诉它他在链路上的存在
如果路由器觉得自己不是最佳网关,会给主机回复重定向消息。告诉主机有更好的路由器可以使用
IPv4与IPv6是不兼容的,所以需要过度技术的支持
双栈路由器:
网络节点同时支持IPv4和IPv6两种协议。在IP网络上形成逻辑相互独立的两个IP网络。源地址根据要访问的目的地的类型自动选择相应的网络。
大多数软硬件都支持IPv4和IPv6.这个方法解决了IPv4和IPv6的共存问题,但是没有解决IPv4和IPv6的互通问题。
目的是为了解决IPv6的信息孤岛问题。
把一个协议数据包的报头(IPv4)直接封装在原包头(IPv6)上,伪装成该一个协议(IPV4)。通过该协议的的网络(IPv4)。到了原本协议相应的网络(IPv6)之后再把添加的包头(IPv4)拆掉
通过NAT-PT(网络地址转换 - 协议转换)将IPv6网络转移成IPv4网络传送给IPv4主机
iOS IPv6兼容支持和IPv6审核被拒收集整理
最近遇到一个大坑:IPv6审核被拒问题,于是广寻解决方案,先把一些可以用资料文档收集起来备用。也希望同行能用得着。
官方文档说明:Supporting IPv6 DNS64/NAT64 Networks
官方关于支持IPv6的网络的开发指引文档
iOS-用手机网络测试Ipv6
用一台Mac,2个iPhone手机,1个数据线搭建本地IPv6测试网络环境
iOS应用支持IPV6,就那点事儿
参考官方文档的一些原理中文说明
专业处理AppStore审核问题汇总
ipv6,ipv6被拒绝,后台定位等审核问题的终极解决方案汇总
Ipv6_Only 简单的理解(已验证,项目已经上线)
以上是关于IPv6概念整理的主要内容,如果未能解决你的问题,请参考以下文章