ICMPv6和IPv6 NDP
1. ICMPv6
IPV4使用ICMP做很多事情,诸如目的地不可达等错误消息以及ping和traceroute等诊断功能。ICMPv6也提供了这些功能,但不同的是,它不是独立的第3层协议。ICMPV6是IPV6不可分割的部分,其信息包含在基本IPv6报头后面的扩展报头中,ICMPv6新增了一项功能:默认情况下,可通过ICMPv6过程“路径MTU发现”来避免IPv6对分组进行分段。
路径MTU发现过程工作原理:源节点发送一个分组,其长度为本地链路的MTU。在该分组前往目的地的过程中,如果链路的MTU小于该分组的长度,中间路由器就会向源节点发送消息“分组太大”。这条消息向源节点指出了当前链路支持的最大分组长度,并要求源节点发送可穿越该链路的小分组、这个讨程不断持续下去,直到到达目的地,此时源节点便知道了该传输路径的MTU。接下来,传输其他数据分组时,源节点将确保分组不会被分段。
ICMPv6接管了发现本地链路上其他设备的地址的任务;在IPV4中,这项任务由地址解析协议负责,但ICMPV6将这种协议重命名为邻居发现协议(NDP)。这个过程是使用被称为请求节点地址(solicited node address)的组播地址完成的,每台主机连接到网络时都会加入这个组播组。为生成请求节点地址,在FF02:0:0:0:0:1:FF/104末尾加上目标主机的IPV6地址的最后24位。查询请求节点地址时,相应的主机将返回其第2层地址。网络设备也以类似的方式发现和跟踪相邻设备。前面介绍RA和RS消息时说过,它们使用组播来请求和发送地址信息,这也是ICMPv6的邻居发现功能。
在IPV4中,主机使用IGMP协议来告诉本地路由器,它要加入特定的组播组并接收发送给该组播组的数据流。这种IGMP功能已被ICMPv6取代,并被重命名为组播侦听者发现(multicast listener discovery)。
2. 邻居发现协议(NDP)

IPv6 ND的应用方式和协议栈位置
NDP以不同方式应用到主机和路由器。

IPv6 ND和其相应的IPv4协议组(ARP、IPCP等)的不同位置。IPv4相同链路相关协议在ARP/RARP(链路层之上)和ICMP(运行于IP之上)之间分割。IPv6 ND完全在ICMP之内。

协议操作总结
列表:
- 在线IPV6地址和相应的链路层地址列表;
- 邻居状态表(可达的,不可达的);
- 特定主权:
- 在线前缀列表;
- 在线路由器列表;
- 缺省路由器列表(乐意成为缺省路由器的在线路由器)。
消息:
- 邻居请求(NS):
- 邻居公告(NA):
- 路由器请求(RS):
- 路由器公告(RA):
- 重定向:
- 反向邻居请求(INS);
- 反向邻居公告(INA)。
NDP直接位于IPV6/ICMP之上产生了一系列值得澄清的问题。
当进行匹配的一个给定目的地址的链路层地址不知道时,寻求该关联的节点必须将其请求发送到更广大的侦听节点。在IPV4中,使用MAC层广播做到这点。在IPV6中,节点在这个请求中使用组播。使用的组播组是被请求节点组播组(具有链路本地范围)
注意:当知道一个前级的链路层地址之后,邻居请求可能再次发送,以确认关联信息(IP地址,链路层地址)。在此情况下,请求直接单播到目的地。
源和目的地:
当一个节点使用NDP获得其自己的地址时(参见“自动配置”部分),出现了另一个问题。它需要用于其请求的一个源地址,但还没有这样的地址。在这样的情况下,它能够将IPV6非指定地址(::)用做分组的SA。
鉴于地址解析消息发送到被请求节点组播地址(具有链路本地范围),其他NDP消息则意图到达所有节点或所有路由器。同时,SA可能是发送者的一个全局的或链路本地地址:后者总是优先使用,以最小化节点对重新缩比的依赖。下面是所有特殊地址的列表,在NDP消息交换中节点能够将之用做源和
- 目的地址:
- 所有节点组播地址(FF02::1,目的地);
- 所有路由器组播地址(FF02::2,目的地);
- 被请求节点组播地址(目的地);
- 链路本地地址(源或目的地);
- 非指定地址(:: 源)。
最后,IPv6节点使用两个算法来处理通过NDP搜集的信息:
- 下一跳确定算法。
- 缺省路由器选择。
ICMPv6和IPv6 NDP的更多相关文章
- openwrt+ndp+ndppd+radvd+dhcpv6,ipv6穿透配置指南
要用ipv6首先你的openwrt路由内核必须已经支持ipv6,且能安装相关软件! 首先说说最简单的ndp手工ipv6穿透,很简单,看代码详解: 环境: wan口 eth1 lan口 br-lan w ...
- IPv6 neighbor discovery
IPv6 neighbor discovery By stretch | Thursday, August 28, 2008 at 5:03 a.m. UTC Neighbor Discovery P ...
- IPv6原理、应用与实践
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯微信技术架构部团队 2017年11月26日,中共中央办公厅和国务院办公厅印发了<推荐互联网协议第六版(IPv6)规模部署行动 ...
- IPv6技术详解:基本概念、应用现状、技术实践(下篇)
本文来自微信技术架构部的原创技术分享. 1.前言 在上篇<IPv6技术详解:基本概念.应用现状.技术实践(上篇)>,我们讲解了IPV6的基本概念. 本篇将继续从以下方面展开对IPV6的讲解 ...
- IPV6技术笔记(剖析IPv4toIPv6)
IPV6技术笔记 IPv6地址入门概念 什么是IPv6? IPv6,全称Internet Protocol version 6,即网际协议版本6,也叫互联网通信协议第六版.是互联网工程任务组(IETF ...
- [华三] IPv6技术白皮书(V1.00)
IPv6技术白皮书(V1.00) http://www.h3c.com/cn/d_200802/605649_30003_0.htm H3C S7500E IPv6技术白皮书 关键词:IPv6,隧道 ...
- 计算机网络体系结构整理-第二单元IP技术
IP技术 1.IPV4 Ipv4的报头格式 Ipv4地址分为ABCDE类, 类别 IP地址范围 私有IP地址范围 A 0.0.0.0-127.255.255.255 10.0.0.0-10.255.2 ...
- 使用RawSocket进行网络抓包
aw socket,即原始套接字,可以接收本机网卡上的数据帧或者数据包,对与监听网络的流量和分析是很有作用的,一共可以有3种方式创建这种socket. 中文名 原始套接字 外文名 RAW SOCKET ...
- DOS命令之----Netstat+Task以及相关使用
作为一个初步接触电脑的人,在学习Android的过程中,遇到各种问题,今天遇到了.这样一个错误提示: The connection to adb is down, and a severe error ...
随机推荐
- UWP 利用DataGrid控件创建表格
通过 Nuget 搜索 Microsoft.Toolkit.Uwp.UI.Controls.DataGrid 安装库,在XAML文件中添加引用库 xmlns:controls="using: ...
- WSDL实例解析
WSDL的主要文档元素 WSDL文档可以分为两部分.顶部分由抽象定义组成,而底部分则由具体描述组成.抽象部分以独立于平台和语言的方式定义SOAP消息,它们并不包含任何随 机器或语言而变的元素.这就定义 ...
- 使用 Laravel 5.5+ 更好的来实现 404 响应
译文首发于 使用 Laravel 5.5+ 更好的来实现 404 响应,转载请注明出处! Laravel 5.5.10 封装了两个有用的路由器方法,可以帮助我们为用户提供更好的 404 页面.现在,当 ...
- python第四周:装饰器、迭代器、内置方法、数据序列化
1.装饰器 定义:本质是一个函数,(装饰其他函数)就是为其他函数添加附加功能 原则:不能修改被装饰函数的源代码,不能修改被装饰函数的调用方式 实现装饰器的知识储备: 函数即“变量”.每当定义一个函数时 ...
- 【UOJ#50】【UR #3】链式反应(分治FFT,动态规划)
[UOJ#50][UR #3]链式反应(分治FFT,动态规划) 题面 UOJ 题解 首先把题目意思捋一捋,大概就是有\(n\)个节点的一棵树,父亲的编号大于儿子. 满足一个点的儿子有\(2+c\)个, ...
- SpringBoot-CommandLineRunner实现预操作
前提:在使用SpringBoot构建项目时,我们通常需要做一些预先操作(类似开机自启动).而SpringBoot正好提供了一个简单的方式来实现–CommandLineRunner. CommandLi ...
- Activiti 各个节点涉及的表
################################# 部署流程定义涉及到的表 # 流程部署表SELECT * FROM `act_re_deployment` # 流程定义表SELECT ...
- LightOJ1214 Large Division
/* LightOJ1214 Large Division http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1 ...
- ZOJ 3203
很简单的一题,注意墙上的影子是放大就行.用三分. #include <iostream> #include <cstdio> #include <cstring> ...
- ASP.Net MVC – What are the uses of Display, DisplayName, DisplayFormat and ScaffoldColumn attributes
http://www.codeproject.com/Articles/775220/ASP-Net-MVC-What-are-the-uses-of-Display-DisplayNa?utm_so ...