当前位置: 首页 > article >正文

网络: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指定网络接口名字。


http://www.kler.cn/a/287843.html

相关文章:

  • 推荐一个基于协程的C++(lua)游戏服务器
  • vue之axios根据某个接口创建实例,并设置headers和超时时间,捕捉异常
  • IDC 报告:百度智能云 VectorDB 优势数量 TOP 1
  • 【Pip】如何清理 `pip` 包管理器 —— 完整指南
  • LSTM(长短期记忆网络)详解
  • SOHO场景开局(小型,多子网):AP+管理型交换机+路由器+光猫
  • C++:结构体变量可以被多个cpp文件共同使用
  • 大数据系统测试——大数据系统解析(上)
  • 秒级日期空间如何查询整天数据而不是截止到00:00:00到23:59:59?
  • Fabric.js中fabric.Image的深入解析
  • 深入理解Redis(一)----Redis简介+Redis为什么这么快
  • 从中国制造到全球领先,星坤连接器的全球化之路
  • huggingface.co 无法访问问题换源解决
  • Idea中修改Jsp文件的头部注释模版
  • 【LabVIEW学习篇(补充) - 15】:常用快捷键和Quick Drop
  • 版本控制工具git
  • Redis在linux环境集群部署详细介绍
  • 【数据结构】-----哈希
  • 科研绘图系列:R语言富集通路棒棒图(lollipop plot)
  • springboot中根据id查询用户信息
  • 家居设备的多彩世界,乐鑫ESP32芯片模组方案彩屏技术应用,启明云端乐鑫代理商
  • 大文件分块上传和续传
  • LLC电路全桥和半桥工作原理详解
  • 《深入浅出WPF》读书笔记.10资源
  • 鸿蒙开发 ImageKnife二次封装
  • 数据结构(邓俊辉)学习笔记】串 07——KMP算法:分摊分析