百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

你真的了解IPv6协议栈吗,IPv4与IPv6有何区别?

bigegpt 2024-08-08 11:56 2 浏览

IPv6(Internet Protocol Version 6,下一代IP协议)解决哪些问题?

  • IPv4地址的耗尽(于2011年2月耗尽),32bit的地址段大小已经明显枯竭了。不少运营商通过NAT技术变相的扩充地址池(将多个私网地址NAT成单个公网地址,进而缩减公网地址的利用,NAT分静态NAT、动态NAT、PNAT等)。NAT技术能够让由私有IP构成的局域网内所有的计算机通过一台具有公网IP和NAT功能的网络设备联入公网(Internet),也就是说一个局域网就只需要一个或很少几个公网IP就行了,从而达到了节约公网IP地址的目的。然后NAT技术也只是起到缓解作用,远水解不了近渴,NAT技术随之带来了溯源等安全性问题(NAT技术隐藏了私网地址)。因此IPv6的出现可以彻底解决地址短缺问题(128bit的地址段2^128,保守估算IPv6实际可分配的地址,整个地球的每平方米面积上可分配1000多个地址)。
  • IP安全性考虑(支持IPsec),IPv6扩展了地址层次结构,采用灵活的首部格式(定义了许多扩展首部),IPv6允许数据包含有选项的控制信息(选项放在有效荷载中)。

IPv6中的IPSec选项可以对IP层上的通信提供加密和授权,可以实现远程企业内部网的无缝接入,IPSec的认证报文用于保证数据的一致性,而封装的安全负载报头用于保证数据的保密性和数据的一致性。在IPv4里也支持IPSec,但IPv4的IPSec是通过叠加方式实现的,在IPv4报文之前再加上一个IPSec头,一方面需要支持增减IPSec头的设备,另一方面两个报文会使报文携带数据的有效载荷变少了,传输效率下降,和IPv6的实现方式没法比。另外,病毒和互联网蠕虫是最让人头疼的网络攻击行为,在IPv4的网络里饱受其苦,这种传播方式在IPv6的网络中就玩不转了,这些病毒或蠕虫还想通过扫描地址段的方式来找到有机可乘的主机就犹如大海捞针,IPv6的安全性得到提升。

  • IPv6服务质量更棒,IPv6地址中QoS服务质量主要有两部分:一个8位的业务流量类别Traffic Class和一个新的20位的流标签Flow Label,业务流字段扩大到1个字节,这就可以定义256个级别的优先级,对各种多媒体信息根据紧急性确定数据包的优先级,从而保证每一项服务都能达到用户满意的质量,这与IPv4中的TOS(服务质量字段)相比已经有了很大提高。IPv6还包含一些关于控制QoS的消息,实现优先级控制和QoS保证,将很大程度上改善服务质量。

IPv4升级的原因有如下六点:

  1. 地址太少,32bit 才42亿多个地址,因为地址缺乏,产生中间技术NAT。---本质原因
  2. IPv4复杂的报头(基础包头就20byte),网络节点处理效率不高
  3. 重编制困难,复杂的路由器和主机配置。要么手工配置或者dhcp。
  4. 很大的路由表,地址分配杂乱无章。Internet公网路由条目20来万条。IANA前期派发地址没有遵循CIDR。
  5. 部署安全,组播,移动比较麻烦。IPsec 若是NAT则不可以部署IPsec VPN(NAT破坏了端到端的连接性),并且是需要大量的命令。但是IPv6是集成了IPsec的,基本不需要太多命令。
  6. 移动性,IPv6内部已经集成了移动性。对移动终端的支持很好。

IPv6报文结构(与v4对比)


  • 取消首部长度字段,因为固定了首部长度为40个字节;
  • 取消了服务类型字段;取消了服务类型字段;
  • 取消了总长度字段,改用有效载荷长度字段
  • 把TTL字段改为跳数限制字段
  • 取消了协议字段,改用下一个首部字段
  • 取消了校验和字段;
  • 取消了选项字段,用扩展首部来实现选项功能(逐条选项、路由选择、分片、鉴别、封装安全有效载荷、目的站选项)

IPv6特性:

  1. 报头简单:虽然报头大,但是字段少,路由器收到ipv6报文查找三层信息时候更快。
  2. 取消广播(广播带有强制性,并且广播只能在一个广播域内传递),IPv6使用组播来取代广播。
  3. 无校验和,L2--IPv6(无连接协议,不需要校验和)--TCP(校验和)--HTTP--FCS(帧尾校验);三层报头完全没必要校验和,减少延迟。
  4. 扩展报头 类似IPv4上层协议号。
  5. 流标签-扩展QOS应用(当前被保留)。

IPv6地址:(取消了IPv4的广播)

  • 单播(unicast):传统点对点通信
  • 多播(multicast):一点多多点通信
  • 任播(anycast):任播的目的站是一组计算机,但是数据报在交付时只交付其中一个,通常就近原则选择距离最近的那个。


Link-Local地址:FE80::/64,可以通过EUI-64自动生成链路本地地址;也可以给路由器接口静态手动配置链路本地地址。用于在同一链路上的设备通信。不能在公网上路由,类似与IPv4的私网地址。一个IPv6设备必须至少有一个Link-Local地址。

GUI地址(全球唯一):2000::/3~3FFF::/3 , 3(Global Routing Prefix)--1(Subnet ID)--4(Interface ID)原则,一个主机(接口)可以有多个GUI地址。

IPv6使用冒号分十六进制表示(8*16也即8段),允许将数字前的0省略,允许0压缩成::(::只能用一次,多次使用怎么判定压缩了多少位0段),比如FF08:0:0:0:0:0:0:BB可缩减为FF08::BB。

EUI-64地址(前24bit为公司标识符+后面40位扩展标识符):


链路(Link-Local)本地地址:

配置方式:

1、手动

2、自动:eui64(根据mac地址换算而来)、 stable_secret(跟随网络环境的变化而变化,处于固定网络环境时其值将固定)、 random(随机生成)

全球单播(GUA)地址:等级结构 3-1-4规则(前缀位3段占48bit,子网位1段占16bit,主机位4段占64bit)

配置方式:

1、手动

2、自动:

(1)无状态(Stateless):依据路由RA报文包含的prefix前缀信息自动配置IPv6地址,组成方式是Prefix + (EUI64 or 随机)。Stateless也可以称为SLAAC(Stateless address autoconfiguration)。

(2)有状态(Stateful):通过DHCPv6方式获得IPv6地址。

其中“有状态”又分为2种

(1)有状态DHCPv6(Stateful DHCPv6):IPv6地址、其他参数(如DNS)均通过DHCPv6获取。

(2)无状态DHCPv6(Stateless DHCPv6):IPv6地址依然通过路由通告RA方式生成,其他参数(如DNS)通过DHCPv6获取。

IPv6协议栈:ICMPv6

IPv6协议栈里的ICMPv6协议合并了IPv4的ICMP、IGMP、ARP功能。

IPv6地址解析工作在网络层,叫邻居发现协议。邻居发现协议与链路层协议无关,不像IPv4的ARP介于链路层和网络层之间。这样实现加强了地址解析协议与底层链路的独立性,对每一种链路层协议都使用相同的地址解析,无须再为每一种链路层协议定义一个新的地址解析协议;IPv6的地址解析还利用三层组播寻址,限制了报文的传播范围,可节省网络带宽。另外IPv6取消了广播,只有组播,因为IPv6的地址掩码段里包含的地址太多了,如果采用广播方式,发送的报文数量比IPv4时要多得多,严重占用网络带宽,必须取消广播的方式;安全性得到提升。在网络层实现地址解析,可以利用网络层标准的安全认证机制来防止ARP攻击和ARP欺骗,大大提升网络安全,试想IPv4里的大部分病毒和漏洞攻击,都是针对ARP的,可见IPv4的地址解析不够安全,IPv6提升了一个档次。

ICMPv6的功能:


ICMPv6 NDP邻居发现

RA路由器通告报文(ICMPv6 type 134):IPv6路由器只要启用了GUA地址,就会周期性(默认200s)发送RA报文(源地址router link-local address , 目的地址 all-node multicast address)。包含的内容主要是网段内的路由前缀,发给网段内的所有节点。邻居收到后就使用EUI-64去生成自己的GUA地址,类似于IPv4的DHCP,这个过程称之为“无状态地址配置”。

RS路由器请求报文(ICMPv6 type 133 ):一台PC连接到IPv6网段,若发现接进来后没有立即收到RA报文,则会立即发送RS请求给网段路由器发送RA报文(源地址:PC link-local地址,目的地址:all-router multicast address)。

NS邻居请求报文(ICMPv6 type 135类似于IPv4中的ARP请求报文。NS邻居请求报文请求邻居的二层Mac地址。(源地址src =0(::),目的地址:自己的被请求节点地址 ) 。也可以用于重复地址检测DAD,正常是不会有人应答的,除非地址和我自己的一样,那就说明地址冲突了。

NA邻居通告报文(ICMPv6 type 136):类似与IPv4的ARP应答报文

ICMPv6 Type 135 NS 、136 NA 取代ARP,检测重复地址DAD。

ICMPV6 Type 133 RS 、134 RA 无状态地址自动配置 & Renumbering(重新编址)

注意:两路由器之间的连接,不需要发送RA。 路由器只会周期性的通过以太网接口发送RA,通过环回口、串口默认是不会发送此报文的。RA本身的目的是发给PC的。

所以在路由器互联接口可以配置RA的报文抑制:

R2(config)#interface ethernet 0/0

R2(config-if)#ipv6 nd ra suppress #抑制RA报文的发送(只有在以太网接口被抑制)

无状态自动配置SLAAC

使用 SLAAC,主机通常使用本地链接 fe80::/64 地址来调出其接口。主机随后向 ff02::2(全路由器本地链接多组播)发送一个“路由器请求RS”。本地链接上的 IPv6 路由器以网络前缀以及其他可能的信息来响应主机的本地链接地址。主机随后将该网络前缀与其通常构建的接口ID(构建方式与本地链接地址相同)配合使用。路由器定时发送多播更新(“路由器转发”)以确认或更新其提供的信息。

DHCPv6技术

上述无状态地址配置方案中设备并不记录所连接的IPv6主机的具体地址信息,可管理性差。而且当前无状态地址配置方式不能使IPv6主机获取DNS服务器的IPv6地址等配置信息,在可用性上有一定缺陷。DHCPv6一种有状态地址自动配置协议就可以解决这个问题。

与其他IPv6地址分配方式(手工配置、通过路由器通告消息中的网络前缀无状态自动配置等)相比,DHCPv6具有以下优点:

国家都力推IPv6部署,但是在双栈情况下部分应用资源还没有全部改到位(毕竟要重新开发一套支持IPv6的系统还是需要花费很大的人力物力的),故而导致我们通过双栈去访问许多应用时还是不顺畅。目前就教育网、几个大厂(BAT)的IPv6资源访问可能相对愉快点。

相关推荐

【Docker 新手入门指南】第十章:Dockerfile

Dockerfile是Docker镜像构建的核心配置文件,通过预定义的指令集实现镜像的自动化构建。以下从核心概念、指令详解、最佳实践三方面展开说明,帮助你系统掌握Dockerfile的使用逻...

Windows下最简单的ESP8266_ROTS_ESP-IDF环境搭建与腾讯云SDK编译

前言其实也没啥可说的,只是我感觉ESP-IDF对新手来说很不友好,很容易踩坑,尤其是对业余DIY爱好者搭建环境非常困难,即使有官方文档,或者网上的其他文档,但是还是很容易踩坑,多研究,记住两点就行了,...

python虚拟环境迁移(python虚拟环境conda)

主机A的虚拟环境向主机B迁移。前提条件:主机A和主机B已经安装了virtualenv1.主机A操作如下虚拟环境目录:venv进入虚拟环境:sourcevenv/bin/active(1)记录虚拟环...

Python爬虫进阶教程(二):线程、协程

简介线程线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID、程序计数器、寄存器集合和堆栈共同组成。线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能...

基于网络安全的Docker逃逸(docker)

如何判断当前机器是否为Docker容器环境Metasploit中的checkcontainer模块、(判断是否为虚拟机,checkvm模块)搭配学习教程1.检查根目录下是否存在.dockerenv文...

Python编程语言被纳入浙江高考,小学生都开始学了

今年9月份开始的新学期,浙江省三到九年级信息技术课将同步替换新教材。其中,新初二将新增Python编程课程内容。新高一信息技术编程语言由VB替换为Python,大数据、人工智能、程序设计与算法按照教材...

CentOS 7下安装Python 3.10的完整过程

1.安装相应的编译工具yum-ygroupinstall"Developmenttools"yum-yinstallzlib-develbzip2-develope...

如何在Ubuntu 20.04上部署Odoo 14

Odoo是世界上最受欢迎的多合一商务软件。它提供了一系列业务应用程序,包括CRM,网站,电子商务,计费,会计,制造,仓库,项目管理,库存等等,所有这些都无缝集成在一起。Odoo可以通过几种不同的方式进...

Ubuntu 系统安装 PyTorch 全流程指南

当前环境:Ubuntu22.04,显卡为GeForceRTX3080Ti1、下载显卡驱动驱动网站:https://www.nvidia.com/en-us/drivers/根据自己的显卡型号和...

spark+python环境搭建(python 环境搭建)

最近项目需要用到spark大数据相关技术,周末有空spark环境搭起来...目标spark,python运行环境部署在linux服务器个人通过vscode开发通过远程python解释器执行代码准备...

centos7.9安装最新python-3.11.1(centos安装python环境)

centos7.9安装最新python-3.11.1centos7.9默认安装的是python-2.7.5版本,安全扫描时会有很多漏洞,比如:Python命令注入漏洞(CVE-2015-2010...

Linux系统下,五大步骤安装Python

一、下载Python包网上教程大多是通过官方地址进行下载Python的,但由于国内网络环境问题,会导致下载很慢,所以这里建议通过国内镜像进行下载例如:淘宝镜像http://npm.taobao.or...

centos7上安装python3(centos7安装python3.7.2一键脚本)

centos7上默认安装的是python2,要使用python3则需要自行下载源码编译安装。1.安装依赖yum-ygroupinstall"Developmenttools"...

利用本地数据通过微调方式训练 本地DeepSeek-R1 蒸馏模型

网络上相应的教程基本都基于LLaMA-Factory进行,本文章主要顺着相应的教程一步步实现大模型的微调和训练。训练环境:可自行定义,mac、linux或者window之类的均可以,本文以ma...

【法器篇】天啦噜,库崩了没备份(天啦噜是什么意思?)

背景数据库没有做备份,一天突然由于断电或其他原因导致无法启动了,且设置了innodb_force_recovery=6都无法启动,里面的数据怎么才能恢复出来?本例采用解析建表语句+表空间传输的方式进行...