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概念整理的主要内容,如果未能解决你的问题,请参考以下文章

常用开源站点整理

整理笔记--Web基础

Attention机制概念整理

图像处理相关概念博客整理

交互触摸大屏概念整理

[电工学(下)]部分基础概念整理