博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ipv6种种
阅读量:5254 次
发布时间:2019-06-14

本文共 1726 字,大约阅读时间需要 5 分钟。

  

IPv6地址解析原理:

IPv6的地址解析包括两个过程:一、解析目的IP对应的链路层地址,二、邻居可达性状态的维护过程。

在IPv4中使用的是ARP协议,在IPv6中使用的是ND(Neighbor discover)协议中的NS和NA报文来实现的。

采用ND协议的优势在于增加了地址解析协议与底层链路的独立性。对每一种链路层系诶都是用相同的地址解析协议,无须再为每一种链路层协议定义一个新的地址解析协议。

减小报文的传播范围。在IPv4中,ARP使用的是广播地址,必须泛滥到二层网络的每台主机。IPv6的地址解析利用三层的组播寻址限制了地址的传播范围,通过将地址解析请求发送到特定解析地址所属的被请求节点组播组(FF02::1:FF00:0/104+IPv6地址后24位组成),减小了报文的传播范围,节省了网络的带宽。

在IPv6中,ND协议通过在节点之间交互NS和NA报文完成IPv6地址到链路层地址的解析,解析后用得到的链路层地址和IPv6地址等信息来建立相应的邻居缓存表项。

NS报文的主要功能字段包括Target Address和Option字段。

TargetAddress包含待解析的IPv6地址。

NA报文的Option字段只使用链路层地址选项(Link layer Address Option)。链路层地址选项包括类型、长度和地址三个部分。

当类型为1时,表示源链路层地址,在NS、RS、Redirect报文中使用;当类型为2时,表明链路层地址为目标链路层地址,在NA报文中使用。

IPv6地址解析过程:假如网络中有主机A和主机B。A的链路层地址为MAC1,IPv6地址为IP1;B的链路层地址为MAC2,IPv6地址为IP2(假设为2001::1)。则A查询B的链路层地址的过程如下:

1)节点A发送一个NS报文到链路上,目的IPv6地址为B对应的被请去节点组播地址(FF02::1:FF00:1),目标地址为IP2,选项字段中携带MAC1;

2)节点B接收到该DS报文后,根据NS报文中的源IPv6地址和源链路层地址选项更新自己的邻居缓存表项,并发送一个NA报文来应答NS报文,报文Option字段中的链路层地址为自己的链路层地址MAC2;

3)节点A收到NA报文后,根据报文中携带的节点B的链路层创建一个到目标节点B的邻居缓存表项。

查看邻居缓存

ip -6 neighbor show

查看路由

ip -6 route show

route -A 'inet6'
route -6

添加IPV6地址

ip -6 addr add <ipv6address>/<prefixlength> dev <interface>
ip -6 addr add 2001:0db8:0:f101::1/64 dev eth0

ifconfig <interface> inet6 add <ipv6address>/<prefixlength>

ifconfig eth0 inet6 add 2001:0db8:0:f101::1/64

添加默认路由

ip -6 route add <ipv6network>/<prefixlength> via <ipv6address>
ip -6 route add default via 2001:0db8:0:f101::1

route -A inet6 add <ipv6network>/<prefixlength> gw

route -A inet6 add default gw 2001:0db8:0:f101::1

 

NS报文:

 地址ff02::1::ff00:1是1::1被请求节点组播地址。Link-layer包含了自己的链路层地址。

NA报文:

 Flags标志位字段中三个标志位都置位了,router字段表示发送者是router、solicited字段表示此报文是对NS的回应、override字段表示本次地址解析结果覆盖以前的结果。NA报文以单播形式发送。

转载于:https://www.cnblogs.com/liuhongru/p/11525824.html

你可能感兴趣的文章
Android开发学习笔记:浅谈显示Intent和隐式Intent
查看>>
繁忙的企业家
查看>>
10月30笔试题总结
查看>>
PHP Ajax 跨域问题最佳解决方案
查看>>
SQL函数
查看>>
【BZOJ5252】林克卡特树(动态规划,凸优化)
查看>>
NOIP2010题解
查看>>
JavaScript基础插曲—获取标签,插入元素,操作样式
查看>>
如何让code变得更易读
查看>>
oracle for sql
查看>>
php......文件上传
查看>>
[转]初探Struts2.0
查看>>
施密特触发器
查看>>
[转载]解决在win10中webstrom无法使用命令行(Terminal)
查看>>
ios Label TextFile 文本来回滚动 包括好用的三方
查看>>
信息熵与TF-IDF 学习笔记
查看>>
smplayer中使用srt字幕乱码问题
查看>>
python--输入一组无序的数,排序
查看>>
第八天 线性表【下】
查看>>
现代软件工程_第一周练习_第4题02_万世想
查看>>