TCP/IP详解实验(三)-IPv6实验

TCP/IP详解实验(三)-IPv6实验

《TCP/IP详解》学习笔记,这次来做IPv6实验,使用GNS3模拟实验,加深了对IPv6的理解,将这个过程记录下来。

一。GNS3安装及配置

GNS3是一款具有图形化界面可以运行在多平台(包括Windows, Linux, and MacOS等)的网络虚拟软件,关于GNS3的安装和配置参照这里

二。IPv6实验

IPv6新增了邻居发现协议,《TCP/IP详解》中对其的介绍

IPv6中的邻居发现协议(有时简称为NDP或者ND) [RFC4861]将路由器发现和由ARP提供的带有地址映射功能的ICMPv4重定向机制结合在一起。它也被指定用于支持移动IPv60与ARP和IPv4普遍使用广播地址(除了路由器发现)不同, ICMPv6广泛使用组播地址,在网络层和链路层中都使用。 (回忆第2章和第5章, IPv6甚至没有广播地址。)

这里说明了ND存在的意义,它对比ARP及路由器发现的优点在于使用了组播替代广播,更加安全高效。
这次实验很简单,拓扑图如下所示
在这里插入图片描述
其中R1配置了一个IPv6的地址,PC1自动发现并获得Ipv6地址。

R1配置

 ena
 conf t
 int e2/0
 ipv6 address 2001:db08:acad:2::2/64
 no sh
 exit

在PC上查看ip信息

PC-1> show ipv6

NAME              : PC-1[1]
LINK-LOCAL SCOPE  : fe80::250:79ff:fe66:6800/64
GLOBAL SCOPE      :
ROUTER LINK-LAYER :
MAC               : 00:50:79:66:68:00
LPORT             : 10004
RHOST:PORT        : 127.0.0.1:10005
MTU:              : 1500

这里R1上不运行ipv6 unicast-routing,则不能分配全球地址IP
运行后

PC-1> show ipv6

NAME              : PC-1[1]
LINK-LOCAL SCOPE  : fe80::250:79ff:fe66:6800/64
GLOBAL SCOPE      : 2001:db08:acad:2:2050:79ff:fe66:6800/64
ROUTER LINK-LAYER : ca:01:09:1d:00:38
MAC               : 00:50:79:66:68:00
LPORT             : 10004
RHOST:PORT        : 127.0.0.1:10005
MTU:              : 1500

三。抓包分析

查看路由器R1的地址信息

R1#show ipv6 interface brief
Ethernet2/0                [up/up]
    FE80::C801:9FF:FE1D:38
    2001:DB08:ACAD:2::2
  

ipv6地址总的来说可分为三大类:单播地址,泛播地址和组播地址,单播地址还可分为几类:可集聚全球单播地址,链路本地单播地址和站点本地单播地址。
这里 FE80::C801:9FF:FE1D:38 就是链路本地单播地址,设计链路本地地址的目的是为了用于诸如自动地址配置、邻居发现或无路由器存在的单链路的寻址,节点启用时,会自动配置一个本地链路地址。而2001:DB08:ACAD:2::2则是属于可集聚全球单播地址,是我们设置的地址。

IPv6 SLAAC(无状态地址自动配置)的目标是允许节点自动(和自主)分配链路本地IPv6地址。 [RFC4862]中描述了IPv6 SLAAC,它包括3个主要步骤:
1.获得一个链路本地地址。
2.使用无状态自动配置获取全球地址。
3.检测链路本地地址是否已在链路中使用。
无状态自动配置可用于没有路由器的环境,在这种情况下只分配链路本地地址。

IPv6重复地址检测(DAD)使用ICMPv6邻居请求和邻居通告消息。
DAD按以下步骤执行:
1.一个节点首先加入临时地址的所有节点组播地址和请求节点组播地址。
2.为了检查使用的地址是否重复,一个节点发送一个或多个ICMPv6邻居请求消息。
这些消息的源和目的IPv6地址分别是未指定地址和被检查目的地址的请求节点地址。
目的地址字段设置为被检查的地址(临时地址)。
如果在响应中接收到一个邻居通告消息,说明DAD失败,并放弃被检查的地址。

下面我们来看看
查看第一个报文,路由器发出邻居请求报文(NS),用于确定新生成的链路地址是否有重复。
在这里插入图片描述

ICMPv6中的邻居请求(NS)报文,有效地取代了IPv4中的ARP请求报文。其主要目的是将IPv6地址转换为链路层地址。但是,它也被用于检测附近的节点是否可达,它们是否可以双向到达(即节点间是否可以互相通信)。当用于确定地址映射时,它被发送到目标地址( Target Address)字段中包含的IPv6地址所对应的请求节点的组播地址。

接下来,因为没有收到其他邻居发来的通告,所以确信地址可用,路由器确认更换地址,发出邻居通告(NA)报文
在这里插入图片描述

ICMPv6邻居通告(NA)报文和IPv4中的ARP响应报文的目的一样,还能够有助于邻居不可达检测。它要么作为NS报文的响应被发送,要么当一个节点的IPv6地址变化时被异步发送。它要么被发送到请求节点的单播地址,要么当请求节点使用未指定的地址作为源地址时,它被发送到所有节点的组播地址。

接下来可以看到,路由器加入了临时地址的所有节点组播地址和请求节点组播地址
在这里插入图片描述
全球地址同样需要重复检测
在这里插入图片描述

当开通全局IPv6路由功能后,(ipv6 unicast-routing)路由器会发出一个通告报文。
接下来是一个路由器通告(RA)报文
在这里插入图片描述

四。总结

对于IPv6 SLAAC(无状态地址自动配置)和IPv6重复地址检测(DAD),以及用到的NS请求和NA通告,RA通告等报文,初看书的时候,脑子里是乱七八糟的,没有一个清晰完整的概念,通过这个实验,思路比原来清晰了很多,还是要多动手做实验,多查资料啊。有错误的地方望大家指正。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值