IPv6中的被请求节点组播地址

这是一个有特殊用途的组播地址,主要用于重复地址检测和获取邻居节点的链路层地址(相当于IPv4中的ARP解析)。这个组播地址的前104位是固定的,为 FF02::1:FF/104, 后24位由接口的单播地址的最后24位构成。假设某个接口的单播地址为2001:3234::1:253F,那么该接口就会自动归属于组播地址FF02::1:FF01:253F。 由于IPv6地址每16位划为一段,共8段,因此前面104位(FF02::1:FF/104)中最后的8位(也即FF)要和接口的单播地址中最后24位的前8位组合在一起形成一段。我们例子中单播地址的最后24位为01:253F(示例单播地址中倒数第二段的1其实是0001的简写),因此被请求节点组播地址为FF02::1:FF01:253F。 当此链路上其它网络接口需要给此IP发送数据时,它就会先给这个组播地址发送数据,请求它的链路层地址;而我们示例接口如果收到发往此组播地址的数据时也会进行处理和响应。同样,当某一个接口给自己配置IP地址的时候,也会使用这个组播地址来进行重复地址检测;也就是说如果这个新分配的IP地址的最后24位是01:253F,那么它也会发送数据报到这个组播地址,看看是否已经有其它接口配置了相同的IP地址,如果没有收到应答,则表示没有重复地址;如果收到应答,则会比对应答数据包的源地址来判断是否重复。

Read More

IPv6地址的自动配置

考虑到移动网络的出现以及以后的物联网,IPv6中对IP地址的配置做了许多改进,以适应漫游节点越来越多的情况。 其中一个特性就是IPv6地址的自动配置功能,它可以在网络没有DHCP服务器的情况下自行为接入的节点配置IPv6地址,从而让节点可以与网络中的其它节点(也可能包括互联网上的其它节点)进行通讯。 IPv6的地址自动配置分为两种情况: 无状态自动配置(网络中有路由器,但无DHCPv6服务器),有状态自动配置(有DHCPv6服务器,可能有路由器)。 有人可能会想,如果一个网络中既没有路由器,也没有DHCPv6服务器,那是什么情况?这种情况就相当于几台电脑接入到一个交换机或者集线器上,这时各个节点只需要一个链路本地地址就可以互相通讯。而链路本地地址的配置无需任何网络,一个支持IPv6的节点自己就可以完成链路本地地址的配置了。所以这里我们说的IPv6地址的自动配置,说的是全球单播地址(相当于IPv4公网IP)的配置。 当一个支持IPv6的节点启动时,它首先会尝试为自己配置一个链路本地地址(link-local address),这个地址是根据链路本地地址的网络前缀FE80::/64以及接口的MAC地址来生成的,既不需要路由器也不需要DHCPv6服务器。有了这个地址以后,节点会以组播方式发送RS(Router Solicitation )报文,看看本地有没有路由器(有没有设备应答RS报文)。此时链路上的路由器会以RA(Router Advertisement)报文应答,应答报文中携带了网络前缀等相关信息,节点通过这些信息来配置自己的全球单播地址。注意,在无状态自动配置中无法为节点配置DNS服务器等一些选项。 如果节点没有收到路由器的RA报文,或者路由器RA报文中通知节点此网络中有DHCPv6服务器,则节点发送相应报文来请求DHCPv6服务器发送网络前缀等相关的网络配置信息。这种方式称为有状态自动配置。 大家也可以参考这个(英文的)PDF文件: https://www.6diss.org/tutorials/autoconfiguration.pdf

Read More

特殊IPv6地址

就像IPv4一样,IPv6也有一些特殊的地址。见下表: IPv4 地址 IPv6 地址 互联网地址类 (Internet address classes) 不适用于 IPv6 组播地址 (Multicast addresses 224.0.0.0/4) IPv6 组播地址 (multicast addresses (FF00::/8)) 广播地址(Broadcast addresses) 不适用于 IPv6 未指定地址 (Unspecified address is 0.0.0.0) 未指定地址  :: 环回接口地址 (Loopback address is 127.0.0.1) 环回接口地址 ::1 公网IP地址 (Public IP addresses) 可聚合全球唯一单播地址 (Aggregatable global unicast addresses) 私有地址 (10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16) 站点唯一单播地址 (Site-local addresses (FEC0::/48)) APIPA addresses (169.254.0.0/16) 链路唯一单播地址 (Link-local addresses (FE80::/64)) 书写方式: 点分十进制 书写方式: 冒号分隔的十六进制表示 网络位表示方式: 点分十进制中的子网掩码或前缀长度 网络位表示方式: 前缀长度

Read More

IPv6中的常见地址类型

IPv6中的地址类型相对与IPv4有一些明显的变化。IPv4中有三种类型: 单播地址、组播地址和广播地址。而IPv6中则是单播地址、组播地址和任播地址(Anycast)。IPv6中取消了广播地址(因为v6地址多,子网一般可包含更多的节点,这个时候用广播方式发送数据很容易形成网络风暴),而增加了任播地址。 先上图,看起来更直观一些: (via http://1.bp.blogspot.com/-D86FInU1mdY/UjqoFkWarBI/AAAAAAAAATY/9hPoD99J1UM/s1600/Untitled.png) 单播地址 顾名思义,单播地址就是用于标识网络中某一个特定接口的地址,对应于IPv4中的IP地址。 同样,就像IPv4中的地址又分为公网地址、私有地址(如192.168.0.0/16 …)等不同子类一样,IPv6的单播地址也分为很多种,比IPv4的种类更多 。下面简单的一一介绍一下。 1. 全球唯一单播地址 对应IPv4中的公网地址,以2000::/3开头 2. 站点唯一单播地址 对应于IPv4中的私有地址,以FEC:: ~ FFF::开头,用于标识本地站点上一个唯一的接口(可以想象为一个公司的局域网) 3. 链路唯一单播地址 对应于IPv4中的私有地址网段,以FE8:: ~ FEB::开头,用于标识本地链路上一个唯一的接口(可以想象为接入一个交换机上的接口) 组播地址 这个类型和IPv4中的组播地址功能一样,用于定义一组接口,发往组播地址的数据会被转发到组中的每个接口上 任播地址 任播地址也是用于标识一组接口地址。发往任播地址的数据会被转发给组中距离接收接口最近的一个地址(而不是组中所有的地址)。 当然,IPv6中还有用于标识本机的环回接口地址(::1,对应于IPv4的127.0.0.1),被保留的地址段,一起其他一些特殊地址(比如::,对应IPv4中的0.0.0.0),但主要用的就是上面三种地址类型。  

Read More