网络:IPv6

对于IPv6其实一直都不算怎么了解,最近在这方面遇到了些问题,所以特意看了一下,做个学习笔记。

1.ipv6地址的格式

ipv6是由128位比特组成,通常将其分为8组,每组有4个16进制数字,组与组之间通过":"进行分割,如:FC00:0000:130F:0000:0000:09C0:876A:130B

如果每组的4个16进制中前面是0,则可以进行缩写,因此上面的地址可以缩写为:

FC00:0:130F:0:0:9C0:876A:130B

如果有连续的多组地址都为0,可以进一步将其缩写为"::"

FC00:0:130F::9C0:876A:130B

但是一个ipv6地址中只能出现一次"::"

2.ipv6地址的掩码表示

ipv6直接通过在地址后面添加/xx来表示掩码的位数,比如:

FC00:0:130F::9C0:876A:130B/64

3.ipv6地址的单播地址分类

3.1 ipv6公网ip,类似于ipv4的公网ip,就是在互联网上可以访问的ip,其地址范围是:2000::/3

3.2 ipv6私网ip,类似于ipv4的私网ip,也就是ipv4保留给局域网用的ip地址,该地址不能在internel上进行路由,ipv4的私房ip范围是:

 10.0.0.0 - 10.255.255.255 (10.0.0.0/8)

 172.16.0.0 - 172.31.255.255 (172.16.0.0/12)

 192.168.0.0 - 192.168.255.255 (192.168.0.0/16)

    ipv6的私网ip范围是FC00::/7,在局域网内可以跨路由通信

3.3ipv6的link-local地址,类似于ipv4的169.254.0.0/16,169.254.x.x地址通常用于当DHCP无法使用时,主机给自己分配的地址,这样可以保证在同一子网下的主机还能正常的通信。

同理ipv6的link-local地址相当于为网口自动分配的一个本地链路地址,两个连接在同一交换机上的link-local主机可以直接进行通信,但是link-local地址不能跨路由进行通信。

link-local的地址范围是:FE80::/10,默认情况下11比特到64比特会被设置为0,后面65-128比特通过MAC地址进行填充

4.ipv6的本地回环地址:

与ipv4的127.0.0.1类似,用于本地回环,ipv6的回环地址是:::1/128

4.ipv6地址的组播地址分类

组播地址的范围是:FF00::/8

4.1预定义组播地址,用于网络协议定义的组播,类似于ipv4的224.0.0.x

 FF02:0:0:0:0:0:0:1,所有节点的组播地址。

 FF02:0:0:0:0:0:0:2,所有路由器的组播地址。

 FF02:0:0:0:0:1:FFXX:XXXX ,Solicited-Node组播地址。

 FF02:0:0:0:0:0:0:5,所有OSPF路由器组播地址。

 FF02:0:0:0:0:0:0:6,所有OSPF的DR路由器组播地址。

 FF02:0:0:0:0:0:0:D,所有PIM路由器组播地址。

4.2其他组播,组播比较复杂,目前还没有仔细研究

5.ipv6有状态与无状态

ipv6的公网ip和私网ip可以通过手动设定也可以通过自动分配。

如果采用自动分配,地址又分为有状态地址和无状态地址,简单的说,如果地址是通过DHCPv6服务器进行分配的(DHCPv6还可以提供DNS地址等),就是由状态的;如果是通过路由通告报文RA(Router Advertisement)包含的prefix前缀信息自动配置IPv6地址,组成方式是Prefix + (EUI64 or 随机),那么就是无状态的。

6.Windows/Linux下的ipv6如何进行ping操作

6.1Windows下ipv6的ping方式为:

>ipconfig

Windows IP 配置


以太网适配器 以太网:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

以太网适配器 以太网 2:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :


无线局域网适配器 本地连接* 1:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

无线局域网适配器 本地连接* 10:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

无线局域网适配器 WLAN:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::mmmm:nnnn:xxxx:yyyy%5
   IPv4 地址 . . . . . . . . . . . . : 192.168.0.88
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.0.1

其中本地链接地址后面有一个%5,%5是用于表示本机的网络接口的标示符

使用ping fe80::kkkk:llll:vvvvv:wwww%5

的形式ping其他处于同一链接的ipv6地址,必须得指定网络接口标示符,因为如果一个主机有多个网口,那么每个网口都会有一个link-local地址,所以必须得指定网络接口标示符,才能知道通过那个网口ping处于同一链接上的其他主机

6.2Linix下 ipv6的ping方式为

$ ifconfig

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500

        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255

        ether 02:42:1b:e7:7e:b8  txqueuelen 0  (以太网)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0



enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.0.102  netmask 255.255.255.0  broadcast 192.168.0.255

        inet6 fe80::gggg:hhhh:tttt:ssss prefixlen 64  scopeid 0x20<link>

        ether 08:00:27:b4:aa:9a  txqueuelen 1000  (以太网)

        RX packets 3488  bytes 3495134 (3.4 MB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 1510  bytes 137916 (137.9 KB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

#或者通过ip进行查询
$ ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

       valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host 

       valid_lft forever preferred_lft forever

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

    link/ether 08:00:27:b4:aa:9a brd ff:ff:ff:ff:ff:ff

    inet 192.168.0.102/24 brd 192.168.0.255 scope global dynamic noprefixroute enp0s3

       valid_lft 11148sec preferred_lft 11148sec

    inet6 fe80::gggg:hhhh:tttt:ssss/64 scope link noprefixroute 

可以看到Linux下为每个网络接口起了一个名字,也就是lo,enp0s3...

所以ping的时候需要通过-I指定这个名字

ping6 fe80::mmmm:nnnn:xxxx:yyyy -I enp0s3

需要说明的是:

Windows与Linux之间互相ping对方,也是按照自己的规则即Windows下通过%xxx指定网络接口标示符, Linux是通过-I指定网络接口名字。

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风静如云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值