IPv6地址_ipv6保留地址-程序员宅基地

技术标签: 网络  运维  网络基础  服务器  

IPv6简介

什么是IPv6

IPv6,Internet Protocol version 6(网际协议第六版),IPv4的升级版本。和IPv4类似,IPv6是一种逻辑编址方案,用于网络层主机到主机的通信。

为什么使用IPv6

IPv4初期由于其协议简单、易于物理实现等优势,被广泛使用。随着互联网技术迅速发展,IPv4在很多方面已经无法满足现有需求,IPv6的问世解决了IPv4的很多弊端。

IPv4的局限性/IPv6的优势
  • 地址空间

IPv4的理论可用地址数为2的32次方约43亿个,已经无法满足巨量终端的入网需求,只能依靠NAT等技术减少公网IP的使用。实际上在2019年11月25日欧洲RIPE NCC宣布IPv4地址正式耗尽。

IPv6地址采用128bit标识,理论上可用地址数是2的128次方,为全部IPv4地址的2的96次方倍,拥有近乎无限的地址空间。

  • 安全

IPv4在设计上并没有考虑网络层的安全问题,当时认为安全是上层才需要负责的。

IPv6集成了IPSec,支持IPSec的认证和加密。由于充足的地址空间,使得层次化地址分配成为可能,容易溯源。对于攻击者,在有限的时间内,无法遍历巨量的IPv6地址。

  • 通信模型

由于NAT的大量使用,破坏了端到端的模型,由此衍生了一些列繁琐的配置(如端口映射)

IPv6地址充足,无需使用NAT。

  • 路由聚合

互联网在世界各地发展并不均衡,所以IPv4在分配时各地区所获得的地址并不连续。这会导致每个地区的公网路由无法被聚合,路由表会相当庞大,对路由设备性能要求极高。

IPv6可以很方便的进行层次化网络部署,方便路由聚合,提高转发效率。

  • 配置

IPv4没有重编功能,网卡原则上职能配置一个IPv4地址,而一个网卡可以配置多个并重的IPv6问题,简化重编值的复杂性。

IPv6内置自动配置,可使得主机自动发现网络并获取IPv6地址,提高管理效率。

  • 处理效率

IPv4包头字段相对较多,对网络设备有一定性能要求

IPv6去除了标志位、段偏移、头部校验和、选项等字段,只增加流标签域方便做QoS,因此IPv6报头更为简化,提高处理效率。

IPv6地址

IPv6地址结构

一个IPv6地址由128个bit组成。一个十六进制数可以表示4个bit,通常用32个16进制数四个一组表示IPv6地址。如:

2001:0db8:02de:0000:0000:0000:0000:0e13/64

在一个IPv6地址中分为前缀和接口号两个部分。前缀和IPv4中网络号类似,用于标识一个网络;接口号和IPv4中主机号类似,用于标识终端。上述IPv6地址所在的网络是:

2001:0db8:02de:0000:0000:0000:0000:0000/64

IPv6地址表示

IPv6地址的简化表示

IPv6地址采用冒号分十六进制的方式表示。128bit长的IPv6地址可以表示8组4个十六进制数,用冒号隔开(如上述IPv6地址)。

其中,

  • 每一组的前导0可以省略

  • 连续的0可以用::来省略

  • 一个IPv6地址中只能使用一次::来省略连续的0(不然无法唯一确定连续0的个数)。

如上述IPv6地址可简写为:

2001:db8:2de::e13/64
URL的IPv6表示

在URL中,需要使用[]来确定IPv6地址,如:

http://[2001:ab:123::cdef]:8080/index.html
IEEE EUI-64规范

IEEE EUI-64规范定义了如何将网络接口的MAC地址转换为IPv6接口标识。网卡物理地址由48bit组成,使用十六进制可表示为:

0050:A1AB:CDEF

MAC地址的前24位(0050A1)为厂商标识,后24位(ABCDEF)为扩展标识符。从高位数,第7位是0表示了MAC地址本地唯一。

MAC转换位IPv6接口方法:

将48位的MAC地址从中间分开,插入一个固定数值FFFE

0050:A1AB:CDEF-->0050:A1FF:FEAB:CDEF

然后将第7个比特位反转,如果原来是0,就变为1,如果原来是1,就变为0

0050:A1FF:FEAB:CDEF-->0250:A1FF:FEAB:CDEF

这种由MAC地址产生IPv6地址接口标识的方法可以减少配置的工作量,尤其是当采用无状态地址自动配置时,只需要获取一个IPv6前缀就可以与接口标识形成IPv6地址。但是使用这种方式最大的缺点是任何人都可以通过二层MAC地址推算出三层IPv6地址。

IPv6地址分类

IPv6没有广播的概念,所以没有ARP包,也没有广播地址。IPv6地址分为单播、组播和任意播。

单播

单播地址用于一对一的连接,主要有以下几种类型

可聚合全球单播地址(Aggregate Global Unicast Address)

可聚合全球单播地址类似于IPv4的公网地址,可在全球路由。目前前三位为001的IPv6地址被用作可聚合全球单播地址,即2000:/3,占了12.5%的IPv6地址空间

IPv6全球可路由地址的分配

由于IPv6采用分级编址,IPv6全球可路由地址前缀由地址分配机构逐级向下分配:

前缀长度 适用场景
32 RIR/NIR(区域/国家互联网注册机构)分配给有 ASN 的运营商、互联网公司、大型企业。是地址最小分配单元(再小就不给了)。
40 运营商向有多个(256个以内)站点和数据中心的大型企业分配的前缀
44 运营商向有多个(16个以内)站点和数据中心的中型企业分配的前缀
48 运营商向中小客户分配的常见前缀长度。或大中企业内一个站点的前缀
56 宽带运营商给家庭用户和小微企业分配的最小前缀长度(最大子网大小)
64 末端设备子网,/64 是很多协议硬性要求的(IPv6 无广播风暴风险)
127 路由器点对点链路,此处不是为了节约地址而是防止一种资源耗尽型攻击
链路本地地址(Link-Local Address)

链路本地地址是一个只在本链路有效的IPv6地址。在一个节点启用IPv6后,每个接口都会生成以一个链路本地地址。链路本地地址前10bit固定,为

fe80::/10

其后64位通常根据EUI-64格式来构造,但也有的终端是根据一定算法生成(处于安全原因),如:windows。

链路本地地址唯一标识一个节点,在本地链路看到下一跳都是对端的Link Local地址,在网络重新编址过程中,节点和路由器的Link Local地址不会发生变化,可以很容易地做一个修改,不用担心中断。

唯一本地地址 (Unique Local Address)

唯一本地地址类似于IPv4私网地址,今能在站点本地使用。由于站点本地地址被废除,唯一本地地址用来代替站点本地地址。

固定前缀为

FC00::/7

ULA
其中,

L为标志位,值为1表示该地址为在本地网络范围内使用的地址;为0被保留,相当于只有FD00::/8被使用

Global ID为全球唯一前缀;随机产生

Subnet ID为子网ID;用于划分子网

Interface ID;接口标识

唯一本地地址拥有全球唯一前缀,可以在私有网络之间通信。

*站点本地地址 (Site-Local Address)已弃用

IPv6的保留地址,类似于IPv4的私网地址,只能在站点本地使用,无法在公网路由。站点本地地址占整个地址空间0.1%。

站点本地地址前10bit固定,为

FEC0::/10

后54为左右子网标识,最后64为用于接口标识。

未指定地址 (Unspecified Address)

未指定地址表示地址未被指定,或者表示默认路由(所有路由),形式如下:

0:0:0:0:0:0:0:0 或 ::
环回地址 (Loopback Address)

换回地址表示几点自己,在本节点有效,和IPv4类似,形式如下:

0:0:0:0:0:0:0:1 或::1
IPv4映射的IPv6地址 (IPv4-Mapped IPv6 Address)

IPv4映射的IPv6地址是包含IPv4的IPv6地址,用于双栈的本地范围

其中高80bit为0,后跟16bit的1,在跟IPv4地址,如:

IPv4地址

100.100.100.100

的IPv4映射的IPv6地址为

::ffff:6464:6464
*IPv4兼容地址 (IPv4-Compatible IPv6 Address) 已弃用

IPv4兼容的IPv6地址是包含IPv4的IPv6地址,用于在IPv4网络上建立自动隧道,传输IPv6包

其中高96比特设置为0,后面设置为32bit的IPv4地址,如:

IPv4地址

100.100.100.100

的IPv4兼容的IPv6地址为

::6464:6464

这种机制不太完善,后被弃用

组播

组播用于一对多的通信、

组播前缀固定FF00::/8,占用约0.38的IPv6地址空间

请添加图片描述

其中,

FF为前8位固定值

Flag标志位0000永久保留

Scope传播范围

Scope定义了组播地址的范围,取值与范围如下:

十六进制 范围
1 本地接口
2 本地链路
3 本地子网
4 本地管理
5 本地站点
8 组织机构
E 全球

RFC2373建议将后112的前80为置0,后32位为组播的组ID

被请求节点组播地址 (Solicited-Node Multicast Address)

被请求节点组播地址根据每一个单播和任意播地址生成一个对应的组播地址,并加入该组播组。被请求节点组播地址只在本地有效。被请求节点组播地址用于邻居发现和DAD地址重复检测。

被请求节点组播地址固定前缀为FF02::1:FF00:0000/104,将IPv6地址的后24位填充到被请求节点组播地址的接口标识就组成了改IPv6地址的被请求节点组播地址。如:

2001::ABCD:ABCD/64

对应的被请求节点组播地址为

FF02::1:FFCD:ABCD/104

如图,在路由器的一个接口上开启IPv6功能,然后查看该接口的ipv6的状态

int e0/0
 ipv6 enable
end
show ipv6 int e0/0

显示结果如下:
ADDR
其中可以看到IPv6使能后,接口生成了链路本地地址,为FE80::A8BB:CCFF:FE00:200,并为它生成了被请求节点组播地址FF02::1:FF00:200

由于被请求节点组播地址是可以根据IPv6地址容易计算出来的,当需要解析链路上IPv6的二层地址时,可以通过NS报文发送至改IPv6的被请求节点组播地址,实现了类似IPv4中的ARP解析功能。

任意播

任意播本质是单播。任意播标识一组设备,需在网络设备如路由器上定义一个单播IPv6地址为任意播地址,当路由器收到目的地址为任意播地址时,会将其转发到最近的任意播地址。这种机制在网络层面上起到了类似于CDN的作用,就近分配任务。

IPv6没有为任意播单独定义地址空间,任意播和单播使用相同地址空间,任意播不可以作为源IPv6地址。

IPv6报文格式

IPv6报文由IPv6基本报头、IPv6扩展报头和上层协议数据三部分组成

IPv6基本报头

IPv6报头格式如下

HEADER

其中

Version,为版本号,固定为6

Traffic Class,为流类别,与IPv4中TOS类似,定义流的类别

Flow Label,为流标签,新增字段,区分实时流量,网络设备可根据这个字段更高效的转发

Payload Length,为有效载荷长度,16bit,表示出基本头以外的载荷(拓展头和上层数据)长度,超过65535会置0

Next Header,为下一个报头,即紧跟在基本报头后的协议类型(可以是拓展报头也可以是上层协议)

Hop Limit,为跳数限制,类似于IPv4中的TTL,定义了IPv6数据包可以经过的最大跳数

Source Address,为源IPv6地址

Destination Address,为目的IPv6地址

IPv6拓展报头

IPv4中,IPv4报头包含可选字段Options,这些选项会增加IPv4报头长度,校验和也会改变,在实际中很少使用。

IPv6不使用Options字段,改用拓展报头。IPv6拓展报头位于IPv6基本报头与上层数据之间,根据需要可任意添加0个或多个拓展报头。下一级拓展报头通过上一级报头的Next Header字段指明协议类型。拓展报头格式如下:

EXHEADER

RFC2460中定义了6钟IPv6拓展头

IPv6拓展头 Next Header 作用
逐跳选项 0 巨型载荷;设备提示;RSVP
目的选项 60 携带目的节点才会处理的信息
路由 43 携带IPv6路由信息,强制指定数据包经过特点设备
分段 44 IPv6也受MTU限制,通过分段拓展报头进行分段
认证 51 由IPsec使用,提供认证、完整性和重放等保护
封装安全净载 50 由IPsec使用,类似于AH

IPv6大包ping分段拓展头抓包结果如下:

FRAG

可以看到,IPv6基本头中的Next Header为分段拓展头协议号44,IPv6拓展报头中的Next Header指向ICMPv6协议号58

当超过一种扩展报头被用在同一个IPv6报文里时,不是所有的拓展报头都需要被处理,但报头必须按照下列顺序出现:

  • IPv6基本报头
  • 逐跳选项扩展报头
  • 目的选项扩展报头
  • 路由扩展报头
  • 分段扩展报头
  • 认证扩展报头
  • 封装安全有效载荷扩展报头
  • 目的选项扩展报头
  • 上层协议数据报文

目的选项拓展报头可能出现1或2次,其它拓展报头只能出现一次。

更多网络技术内容:https://arclogicr.github.io/

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yymmcc112233/article/details/121397170

智能推荐

VS2017与opencv 4.1.0环境配置(win10)_vs2017配置opencv4.1.0和opencv2.4.13-程序员宅基地

文章浏览阅读272次。1.官方网站下载 vs2017年的链接: https://visualstudio.microsoft.com/zh-hans/.下载完成进行安装即可。2.选上Windows中的“.NET桌面开发”和“使用C++的桌面开发”以及最下面其他工具集中的“Visual Studio扩展开发”即可。选好路劲之后右下角点击“安装”即可。安装完了之后可能会需要重启电脑,重启完毕后打开VS2017, 开发设置选择C++。3.Opencv4.0 安装官方下载链接: https://opencv.org/rel_vs2017配置opencv4.1.0和opencv2.4.13

MySQL 篇- Java 连接 MySQL 数据库并实现数据交互_实现与mysql交互的方法-程序员宅基地

文章浏览阅读6.7k次,点赞84次,收藏78次。JDBC(Java Database Connectivity)是 Java 编程语言用于与数据库进行交互的标准 API。它提供了一种统一的方式来访问不同数据库系统,并执行 SQL 查询、更新和管理数据库。通过 JDBC,开发人员可以轻松地连接到数据库、执行 SQL 查询、管理事务、处理异常等,实现与数据库的数据交互和管理。简单来说,Java 提出的一套关于数据库操作的接口,各个数据库厂商要把自己的 API 对接到适配到 JDBC 上。程序元只需要掌握一套 API 就_实现与mysql交互的方法

linux 操作系统下c语言编程入门-程序员宅基地

文章浏览阅读411次。2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 7)Linux程序设计入门--线程操作 8)Linux程序设计入门--网络编程 9)Linux下C开发工具介绍 1)Linux程序设计入门--基础知识 Linux下C语言编程基础知识 前言: ..._linux程序设计总结

Linux记录14-4.32,4.33 nginx虚拟主机、本地hosts文件配置本地域名解析、_ngix如何配置读取本地host文件解析域名-程序员宅基地

文章浏览阅读1.5k次。配置主机域名;本地hosts文件配置本地DNS解析后本地访问nginx中自设的域名;设置默认主机方式;_ngix如何配置读取本地host文件解析域名

Vue的虚拟DOM是什么-程序员宅基地

文章浏览阅读310次。由于现代网络和浏览器的发展,网页的内容也变得很复杂,ajax 诞生让用户可以在不刷新页面的条件下获取到数据。但是 新的数据的渲染需要操作dom,这个是比较耗性能的。所以人们想出来, 将dom转化成js也称为vdom,通过跑js程序,对比出来新vdom 和 老vodm,拿到需要更新变化的vdom,这样就可以通过dom操作,需要变化的内用。简单来说,不再因为一部分的改动就把整体的dom重新渲染,通过筛选出来变动的内容,只渲染变动的内容。核心思想:使用 js对象的形式来表现html的dom结构。

wget报错-程序员宅基地

文章浏览阅读4.5k次,点赞5次,收藏6次。1.刚开始我输入的指令是这样的wget https://pjreddie.com/media/files/yolov3-tiny.weights2.发现报错 ERROR: cannot verify pjreddie.com's certificate, issued by `/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3':..._wget报错

随便推点

【深度学习】Normalizing flow原理推导+Pytorch实现-程序员宅基地

文章浏览阅读1.4k次,点赞33次,收藏31次。1、前言Normalizingflow\boxed{Normalizing \hspace{0.1cm} flow}Normalizingflow​,流模型,一种能够与目前流行的生成模型——GAN、VAE\boxed{\mathbf{GAN、VAE}}GAN、VAE​相媲美的模型。其也是一个生成模型,可是它的思路和另外两个的迂回策略却很大不同。本文我们就简单来介绍一个这个模型吧2、引入在生成模型中,我们的目的就是计算出数据x的概率分布。然而,数据的分布总是千奇百怪的。其无法被定义,无法被观测,无法被_normalizing flow

系统架构设计师之备考攻略(2024年修订版)——一篇就够_系统架构师复习攻略-程序员宅基地

文章浏览阅读1.8w次,点赞34次,收藏141次。2020年9月至11月初,本人用两个月的时间来备考【系统架构设计师】这一科目,最终以综合题 59/75 案例 57/75 论文 53/75 的成绩顺利通过。备考过程中,发现由于这个考试比较冷门,遇到了【学习资料少】、【备考方向不明确】等问题,走了不少弯路。因此想分享一下备考中的干货,帮助想要备考【系统架构设计师】的同学。_系统架构师复习攻略

领域驱动设计(Domain-Driven Design DDD)——通过重构找到深层次模型2-程序员宅基地

文章浏览阅读9.1k次,点赞21次,收藏26次。深层模型和柔性设计并非唾手可得。想要取得进展,必须学习大量领域知识并进行充分的讨论,还需要经历大量的尝试和失败。在实际的研究领域问题实践时,有一些成熟的模式可以供我们借鉴和套用。这样我们可以从这个起点来重构和试验,虽然它们不是现成的解决方案。

Verilog 实现数码管闪烁显示_verilog数码管按键闪烁-程序员宅基地

文章浏览阅读5.6k次,点赞2次,收藏24次。实现数码管闪烁显示不是简简单单地和一个2hz的闪烁信号相与,我在这里用了使能端的思想,通过把一个闪烁信号传递到使能端,来使数码管闪烁。使能端可以做很多事的module segflitter (clk,segled,cat,enable); input enable; input clk; output reg [7:0] cat; output reg [6:0] segled;//段..._verilog数码管按键闪烁

python+django+mysql校园失物招领系统毕业设计毕设开题报告_基于pythondjango的开题报告-程序员宅基地

文章浏览阅读389次,点赞2次,收藏2次。本章主要介绍了系统在开发过程中所应用到的一些关键的技术,主要包括核心的Python编程语言、Django框架;MySQL数据库;以及常规的网页技术HTML/CSS/JAVASCRIPT的介绍。开发操作系统:windows10 + 4G内存 + 500G硬盘开发环境:Python3.8开发语言:Python开发框架:Django开发工具:pycharm数据库:mysql8数据库管理工具:navicat其他开发语言:html + css +javascript。_基于pythondjango的开题报告

本地Pycharm连接远程服务器详细配置过程(直接在本地使用服务器显卡)_可以将本地的环境在远程服务器使用吗-程序员宅基地

文章浏览阅读4.4k次,点赞14次,收藏66次。相信很多人都遇见过这种情况:实验室成员使用同一台服务器,每个人拥有自己的独立账号,我们可以使用服务器更好的配置完成实验,毕竟自己哪有money拥有自己的3090呢。_可以将本地的环境在远程服务器使用吗