1. IPv6特性

支持即插即用:

    • 路由器发现(Router Discovery):当一个节点连接到一个IPv6的链路上时,它能够发现本地的路由器,而不必借助动态主机配置协议(DHCP)。
    • 前缀发现(Prefix):当一个节点连接到一个IPv6的链路上时,它能够发现分配给该链路的前缀。
    • 参数发现(Parameter Discovery):节点能够发现它所相连的链路的参数,例如链路跳数限制等。

IPv6的无状态自动配置,即SLAAC

主机可以通过RA(Router-Advertisement)消息ICMP type134中携带的前缀得到地址的前缀部分,同时通过该接口自动生成接口ID部分,从而得到一个完整的128位的IPV6地址,该消息默认情况下每200S发送一次。当然主机(或路由器)也可以主动发送RS(Router Solicit)消息ICMP Type=133来主动请求该前缀。

2. IPv6的无状态自动配置,即SLAAC过程

首先,为配置接口,主机需要前缀信息(类似于IPV4地址的网络部分),因此它会发送一条路由器请求(RouterSolicitation,RS)消息。该消息以组播方式发送给所有路由器。这实际上是一种ICMP消息,并用编号进行标识。RS消息的ICMP类型为133。

路由器使用一条路由器通告(Router-Advertisement,RA)消息进行应答,其中包含请求的前级信息。RA消息也是组播分组,被发送到表示所有节点的组播地址,其ICMP类型为134。RA消息是定期发送的,但主机发送RS消息后,可立即得到响应,因此无需等待下一条定期发送的RA消息,就能获得所需的信息。

发现链路上使用的前缀:发送周期RA

产生一个接口ID:二层寻址(基于MAC的EUI-64ID)

验证所产生IPv6地址的唯一性:重复地址检测(DAD)

图15-2说明了这两个步骤。

  

要在路由器上启用IPV6,必须使用全局配置命令ipv6unicast-routing:

Corp ( config ) #ipv6 unicast-routing

默认情况下,转发IPv6数据流的功能被禁用,因此需要使用上述命令启用它。默认不会在任何接口上启用IPv6,因此必须进入每个接口并启用这项功能。

为此,可使用多种方式,但最简单的方式是,使用命令ipv6 address<ipv6prefix>/<prefix-length> [eui-64]给接口配置一个地址。

下面是一个例子:

Corp(config-if)#ipv6 address 2001:dbB:3c4d:1:0260:d6FF.FE73:1987/64

可指定一个完整的128位IPV6全局地址,也可使用eui-64选项。eui-64格式允许设备对其MAC地址进行转换,以生成接口ID,如下所示:

Corp(config-if)#ipv6 address 2001:db8:3c4d:1: :/64 eui-64

为在路由器接口上启用IPV6,也可不输入IPV6地址,而让其自动使用链路本地地址。

如果只有链路本地地址,则只能在本地子网中通信。

要配置路由器接口,使其只使用链路本地址,可使用按口配置命令ipv6enable:

Corp(config-if)#ipv6 enable

过程说明:
R3

R3#debug
ipv6  nd

R3(config)#ipv6 unicast-routing

R3(config)#int e0/1

R3(config-if)#ipv6  add 2034::3/64

R3(config-if)#no sh

地址解析使用邻居发现协议(NDP)。这个过程是使用被称为请求节点地址(solicited node
address)的组播地址完成的
,每台主机连接到网络时都会加入这个组播组。为生成请求节点地址,在FF02:0:0:0:0:1:FF/104末尾加上目标主机的IPV6地址的最后24位。查询请求节点地址时,相应的主机将返回其第2层地址。网络设备也以类似的方式发现和跟踪相邻设备。前面介绍RA和RS消息时说过,它们使用组播来请求和发送地址信息,这也是ICMPv6的邻居发现功能。

在IPV4中,主机使用IGMP协议来告诉本地路由器,它要加入特定的组播组并接收发送给该组播组的数据流。这种IGMP功能已被ICMPv6取代,并被重命名为组播侦听者发现

路由器使用NDP获得其自己的地址时,以组播(::)方式发送领居请求NS(将IPV6非指定地址(::)用做分组的SA请求的一个源地址),发送到被请求节点组播地址ff02::1:ff00:2010【具有链路本地范围如:下面报文所体现的目的地址ff02::16(所有支持MLDv2的路由器),ff02::1:ffXX:XXXX(被请求节点地址,FF02:0:0:0:0:1:FF/104末尾加上目标主机的IPV6地址的最后24位)】;

通过与二层寻址,产生的链路本地地址,再以组播(ff02::1)方式向节点发送一条领居公告NA;

以非指定地址(::)作源向被请求节点的组播地址fff02::1:ff00:3发送领居请求NS查找领居主机;

链路本地地址发送组播 (ff02::1),消息类型路由器公告RA;

全局单播地址2034::3发送组播 (ff02::1),消息类型领居公告NA;

  

 

IPv6特性,以及SLAAC过程的更多相关文章

  1. 《Python高性能编程》——列表、元组、集合、字典特性及创建过程

    这里的内容仅仅是本人阅读<Python高性能编程>后总结的一些知识,用于自己更好的了解Python机制.本人现在并不从事计算密集型工作:人工智能.数据分析等.仅仅只是出于好奇而去阅读这本书 ...

  2. 使用 Java 开发兼容 IPv6 的网络应用程序

    根据现有 IPv4 地址的部署速度,剩余的地址将在 10 到 20 年被使用殆尽.因此网络逐渐从 IPv4 向 IPv6 转换是不可避免的,相应的各种网络应用程序都将支持 IPv6.对于 Java,从 ...

  3. IPV6基础

    Pv6与IPv4的区别 Pv6报文与IPv4报文差别就两个地方: 一个是数据链路层(以太网协议)中协议类型,IPv4是0x0800,IPv6是0x86DD 另一个是IPv6 Header是40字节,I ...

  4. C#7.0中有哪些新特性?

    以下将是 C# 7.0 中所有计划的语言特性的描述.随着 Visual Studio “15” Preview 4 版本的发布,这些特性中的大部分将活跃起来.现在是时候来展示这些特性,你也告诉借此告诉 ...

  5. Web APi之过滤器执行过程原理解析【二】(十一)

    前言 上一节我们详细讲解了过滤器的创建过程以及粗略的介绍了五种过滤器,用此五种过滤器对实现对执行Action方法各个时期的拦截非常重要.这一节我们简单将讲述在Action方法上.控制器上.全局上以及授 ...

  6. C#7.0中有新特性

    以下将是 C# 7.0 中所有计划的语言特性的描述.随着 Visual Studio “15” Preview 4 版本的发布,这些特性中的大部分将活跃起来.现在是时候来展示这些特性,你也告诉借此告诉 ...

  7. OC语言-01-面向过程与面向对象思想

    一.面向过程 1> 思想 面向过程是一种以过程为中心的最基础编程思想,不支持面向对象的特性. 面向过程是一种模块化程序设计方法 2> 开发方法 面向过程的开发方法是以过程(也可以说是模块) ...

  8. OC - 1.面向过程和面向对象的思想对比

    一.面向过程 1> 思想 面向过程是一种以过程为中心的最基础编程思想,不支持面向对象的特性. 面向过程是一种模块化程序设计方法 2> 开发方法 面向过程的开发方法是以过程(也可以说是模块) ...

  9. 使用SSH代理上IPV6(使用SSH端口转发)

    这几个月在国外待着,一直担心我的六维账户怎么办,那可是个宝贝啊.我看网上说可以用六飞啊神马的在IPV6下上IPV6的网站,但是冒失现在六维封禁了非学校的IPV6地址,所以这些软件就不顶用了. 想到以前 ...

随机推荐

  1. Linux下mysql 忘记密码的解决办法

    >mysql -u root -p Enter password: ******** Welcome to the MySQL monitor. Commands end with ; or \ ...

  2. The socket is closed!

    关闭mongodb    /usr/local/app/mongidb//bin/mongod   --shutdown  --dbpath /usr/local/data/mongo/data/ 然 ...

  3. git入坑随笔

    一直以来,都喜欢用git做版本管理,主要涉及平台是coding, github以及公司自己搭建的gitlab. 因为一直以来都是自己一个人维护前端的项目,所以基本上很少有冲突的情况.(手动微笑 :) ...

  4. 计蒜客 阿里天池的新任务—简单( KMP水 )

    链接:传送门 思路:KMP模板题,直接生成 S 串,然后匹配一下 P 串在 S 串出现的次数,注意处理嵌套的情况即可,嵌套的情况即 S = "aaaaaa" ,P = " ...

  5. 洛谷P1427 小鱼的数字游戏

    题目描述 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了).这对小鱼的 ...

  6. C#强化系列:HttpModule,HttpHandler,HttpHandlerFactory简单使用

    这三个对象我们在开发Asp.net程序时经常会用到,似乎很熟悉,但有时候又不太确定.本文通过一个简单的例子来直观的比较一下这三个对象的使用.HttpModule:Http模块,可以在页面处理前后.应用 ...

  7. struts配置问题

  8. hdu 1703

    #include<stdio.h> #define  N  11000 int a[N]; int main() {     int i,n;     a[1]=0;a[2]=5;a[3] ...

  9. Blade - 腾讯开源的构建系统 c/c++编译环境

    ,Blade是软件project的利器.有助于模块化,模块化的力度控制自如.对于提高系统的可维护性.复杂性的隔离.代码复用的最大化.都有非常大的优点. 2,Blade提供了单元測试的最佳使用方式. 假 ...

  10. centos7.0 安装日志--图文具体解释-python开发环境配置

    centos7.0公布之后,就下载了everthing的DVD镜像.今天有时间,所以决定在vbox底下体验一番--- 上图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nk ...