这节课我们来学习一下IPv6。

首先呢我们来看一下为什么会有IPv6的产生。由于我们之前探讨过,对于IPv4这种编址方式呢,这个地址线已经被消耗殆尽了,已经没有剩多少地址。所以我们就学习了两种技术,一个是CIDR技术,一个是NAT址技术。那这两种技术呢其实只是说延缓了这个IPv4消耗殆尽的时间,也就是延长一点寿命。那这种方法呢是治标不治本的,因此就有一种新的办法,也就是IPv6。通过使用IPv6的地址呢,我们可以从根本上解决这个地址耗尽的问题。因为IPv6呢,它是从最根本也就是地址的位数、地址的长度上面来扩充它的长度,那这种方法呢是解决地址耗尽的最根本的方法。就比如说我在北京买了一个房,啊那这个房子呢非常小,那因此我为了使这个空间能够得到更加合理的利用,能够放更多更多的东西呢,我就会在墙上放些小格子,或者放一些柜子,然后把这些柜子里面填满东西。那这个就类似于CIDR和NAT技术的办法,它们只是在原来的这个地址长度基础之上对地址进行了一个再度的划分。而IPv6这种方法呢,在我们这个买房子的例子里啊,就是我现在有钱了,可以换一个更大的房子了,那就从根本上解决了我的房子空间不够用的问题。所以说IPv6这种方法呢,它是从根本上来解决地址耗尽问题的。

那除了这个动机之外呢,还有一些其他的动机。啊人们现在想要改进一下首部的格式,因为之前的IPv4它首部格式除了固定部分,还有一定的可变部分。而且呢它固定部分,也就是那20字节,它里面的字段太多了,所以现在想要改进一下首部首部格式,使这个字段变得种类少一点,这样呢就可以加快路由器它的一个处理效率。也就是说,想通过改进首部格式,来实现一个快速处理以及转发数据报的功能。还有呢就是要支持QoS。

QoS呢就是提供多种服务。啊也就是说服务质量,指的是一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,也是用来解决网络延迟和阻塞等问题的一种技术。那如果支持QoS呢,就可以满足实时的以及多媒体通信的需要。所以呢,基于这些动机,我们就产生了IPv6。

接下来我们先看一下IPv6它的数据报的格式。首先呢我们来看一下这个简单的结构图,它包括两个部分,一个是叫做基本首部,一个叫做有效载荷。那这个有效载荷呢,又包括两部分,一个是这种选项部分,它里面都是各种扩展的首部,有编号的1到N。然后剩下的呢就是数据部分,就相当于我们把IPv4当中的首部当中的可变部分挪到了这个有效载荷当中,挪到了IPv6的有效载荷当中,所以这个IPv6数据报它的基本首部就是固定的40字节。

那这些扩展首部呢,其实就是对于这个数据报,啊有一些新的要求。比如说这个数据报要增加某些功能,就放在这个扩展首部当中来实现。所以说IPv6的这种数据报格式呢,因为它有了这个扩展首部的部分,所以使得这个原本IPv4的首部当中,有一些不必要的部分,那就可以先不用了。如果用的话呢,我们只需要给它放到扩展首部当中就可以了。那可以看到,这个IPv6它数据报的一个灵活的首部格式呢就可以大大地加快分组的处理速度。

那接下来我们就来具体看一下,数据报格式当中的一些具体字段。那这个呢就是IPv6数据报的格式了。可以看到,它分为了这个基本首部以及有效载荷两部分。基本首部呢占的是固定40字节,而这个有效载荷呢是不固定的,它其中又包括两部分,一个是可扩展的扩展首部以及这个数据部分。那这个扩展首部呢,是可有可无的。根据我这个数据报的具体要求,看它要不要提供其他的服务。如果要呢,就在这个扩展首部这儿再进行填充。那首先我们来看一下这个基本首部的低字节版本。

那这个版本呢和IPv4数据报当中的版本是一样的。啊,都是指明了这个协议的版本。那IPv6呢它这个协议就是6,所以版本这个字段呢就是6。

那接下来看第二个,优先级。那优先级呢其实就是在区分数据报的类别,以及声明这个数据报的优先级。是不是要对这个数据报进行优先处理,就要看这个优先级怎么规定。

那接下来这个第三个部分。那第三部分这个叫流标签。那什么叫流标签呢?我们先看流是什么意思。“流”指的是互联网络上从特定源点到特定终点的一系列数据报。啊那么所有属于同一个流的数据报呢都具有同样的流标签,就好比A主机要给B主机发送一系列数据报,那这一系列数据报呢都像是一组的数据报。所以我们就可以称之为它们是一个流的。那这一个流当中的所有数据报,它的流标签都是标志相同的、相同的数。那这个就有点类似于我们IPv4当中的一个标识位。当然IPv4它的标识位呢是指对于这个数据报进行分片之后,每一个数据报它的所有分片都具有同一个标识位。而这里面是指,所有的这一个流当中的数据报,每一个数据报它们都具有相同的流标签。

那接下来我们再来看这个有效载荷长度。啊顾名思义它应该指的就是有效载荷部分。这一个部分它的长度有多少位。那这个呢要和IPv4区分开,IPv4标识长度呢有两个字段。一个叫做首部长度字段,一个叫做总长度字段。那这个首部长度字段呢它指的是首部的大小,总长度呢是指首部加数据部分的大小。而这里面的有效载荷长度指的是扩展首部加数据部分的大小。

那接下来我们看这个下一个首部指的是什么意思。下一个首部标识的是下一个扩展首部或者是上层的协议首部。什么意思呢?假如说我们有一个数据报,那这个数据报除了基本首部40字节之外呢,它还有三个扩展首部,扩展首部1,扩展首部2,以及扩展首部3。那接下来剩下的就是数据部分。那对于这里面的扩展首部1、2、3来说,它们每一个扩展首部内都有一个字段就是下一个首部字段。那基本首部当中呢,也有这个下一个首部字段。那对于基本首部的这个下一个首部字段来说呢,它标识的也就是它指向的,是这个扩展首部1。那扩展首部1当中的下一个首部字段呢标识的或者说是指向的是扩展首部2。那扩展首部2这个字段当中呢,也有这个下一个首部字段。那扩展2的下一个首部字段,标识的或者是指向的是扩展首部3的字段。那对于扩展首部3,它这个下一个首部字段,应该标识谁呢或者说指向谁呢?当然指向的就是数据部分。那这个数据是从哪儿来的?是从上层,运输层传来的报文段,所以指向的就是这个数据。

那接下来我们看这个跳数限制。跳数限制呢相当于IPv4当中的TTL也就是生存时间。那它们俩其实都是一样的概念。那这个跳数限制如果达到0,如果达到0,路由器就会把这个数据报丢弃,并且呢返回一个ICMP差错报告报文。

那接下来就是这个源地址和目的地址。可以看到源地址和目的地址它们的位数都是128位。而在IPv4当中呢,它的这个源地址和目的地址只有32位。所以可以看到,它在地址上面进行了非常大的扩充。那有人说过这样一句话,这个IPv6它的地址数啊如果要衡量的话,可以说这个地球上的每一个沙粒都能分到一个IPv6地址。可见这个IPv6地址空间啊是非常的大。因此如果说在可预见的将来能不能用完?当然是不能用完的。那结合这个数据报的讲解呢,相信同学们对于IPv4以及IPv6的一些区别有一个大概的印象。

接下来我们就总结一下IPv4和IPv6都有哪些区别。首先第一个区别呢就是地址空间扩大了,扩展到了128位,这个一定要记住。它对应的呢就是16字节,而这个IPv4呢是4字节,这个要区分开,4和16字节,因此就有了更大的地址空间。

第二个区别就是IPv6把校验和这个字段彻底移除了。那我们可以想如果没有校验和字段,路由器呢对于数据报的首部,它这个检查时间,就变小就变少了,因此就可以减少每跳的处理时间。

第三个呢就是IPv6将IPv4的可选字段移出了首部,变成了扩展首部,成为了一种比较灵活的首部格式。而这个路由器呢,通常也不会对扩展首部进行一个检查,那就大大地提高了路由器的处理效率。但是对于IPv4来说呢,它如果在这个固定的啊固定的这个首部长度20字节基础之上呢又增加了一些可选的字段。那这个IPv4,啊它在路由器这儿就需要用更多的时间来处理和转发。

第四个呢就是IPv6它支持即插即用,也就是自动配置一个IP地址。不像IPv4一样,它如果要自动配置IP地址,就需要使用DHCP协议。而这个IPv6呢,啊只要我这个电脑它使用的是IPv6地址,我只要一插上这个IPv6呢就可以给我自动分配一个IP地址。

那第五个就是IPv6的首部长度必须是8字节的整数倍,IPv4首部长度呢必须是4字节的整数倍。那这个大家要区分开,一个是8字节的整数倍,一个是4字节的整数倍。那这里面再回忆一下,就是IPv4它的首部,我们当时有一个巧妙的记法,就是一种八片的首饰。也就是对于IP首部,IPv4首部当中的三个字段来说,它们所使用的这个单位、大小是不一样的。4字节、1字节和8字节分别对应哪个,大家都要清楚。

 接下来再来看第六个区别。IPv6呢只能在主机处分片,而IPv4可以在路由器和主机处分片。也就是说即使这个IPv6的数据报,或者说这个IPv6的分组非常长,它在路由器呢还是无法分片的。它要是分片的话,只能在主机处分片。所以有的时候,我们也说IPv6它是无法完成分片,而IPv4它是可以的。那有的人可能会问,那接下来我们这个要传输的链路,它的这个链路层MTU最大传输单元可能很小,但是我们这个IPv6数据报很大,必须要分片,那怎们办呢?没办法,只能在路由器这儿把它丢弃掉,然后呢再返回一个差错报告报文。

那这里面返回差错报告报文也是一个区别,就是使用的ICMPv6协议。那这个协议当中呢又会附加一系列的报文类型,比如说这个分组过大,就是对于我们这个数据报,如果在路由器这儿由于分组过大无法分片,那路由器把它丢弃之后,就要返回这样一个报文了,分组过大的这样一个差错报告报文。

接下来第八个区别,就是IPv6支持资源预分配。可以支持实时的视像影像等要求,可以保证一定的带宽以及时延的应用。那这个大家做个了解。

第九个呢就是IPv6它取消了协议字段,而把IPv4当中的协议字段呢改成了下一个首部字段。那我们知道IPv4的协议字段指的是什么,指的是分组所携带的数据使用的是哪个协议。也就是说分组的数据部分应该交给的是哪个传输层协议。但是在IPv6当中呢,被取消掉了,改成了下一个首部字段。

第十个区别就是IPv6它取消了总长度的字段,而改用有效载荷长度字段。也就是在IPv4当中呢有总长度字段,和首部长度字段。但是IPv6呢只有一个,也就是有效载荷长度字段。因为首部呢是固定的,也就是40字节的基本首部长度。

第十一个区别就是IPv6它取消了服务类型字段。也就是在IPv4当中我们讲的这个区分服务字段。那在这一页当中标红字以及粗体的部分,大家一定要记住,其他呢作为一个了解就可以了。

接下来我们再来看一下IPv6它的地址啊表示形式。我们知道这个IPv6地址啊它的位数非常多,一共有128位,16个字节。那我们还可以像IPv4一样使用这个点分十进制吗?啊如果使用点分十进制的话,就要把这个数写很长了,当然是不可以的。

所以我们在IPv6地址这一块呢,我们有一个新的表示形式,也就是冒号十六进制记法。啊,是怎们写的呢?对于每4位我们就用一个16进制数来表示,那每4个16进制数为一组,总共有8组。这个就是IPv4地址的一个表示形式。而每一组中间呢都用这个冒号分隔开。

那除了一般形式之外呢,还有压缩形式。也就是说如果这个IPv6地址比较特殊的话,我们可以给它进行压缩,把这个表示形式的写法写的再短一点,那什么情况可以压缩呢?啊遇到这种前面有0的时候,前面有0的时候,还有000A。只要是前面有连续的0,我们就可以把它压缩一下。

怎么压缩?只需要把这几个0,对于如果都是对于这一组是4个0的话,我们就写成一个0。那对于这种039A,我们把0删掉。对于000A,把前面的0全部删掉。也就是说最后啊,最后压缩之后,每一组它还是要保证至少要有一个数字的,这就是它的一个压缩形式。

那除此之外呢,还有一种零压缩的方式。零压缩呢它是指一连串连续的0,就可以被一对冒号所取代了。那像刚才这个例子当中呢,这里面,总共有就是3组,3组16进制数,也就是说有3组4位的16进制数。那这些连续的0就可以被一对冒号取代。

啊,怎么写,我们结合这个例子来看一下。中间这些都是0,所以我们就把它写成两个冒号,一对冒号。这个就是一种特殊的零压缩的形式。

要注意的是在零压缩当中双冒号表示法在一个地址当中仅可出现一次。那如果出现两次,这个就一定是错的了。

接下来我们就来看一下IPv6基本地址的类型。主要分为三种:单播、多播以及任播。

首先这个单播很好理解,就是一对一的通信。那这种单播呢,是,这种单播地址呢,可以做源地址也可以做目的地址。就是和我们普通的IPv4地址是非常相像的。

也就是应用于一对一的通信。

那接下来这个多播呢,

就是一对多的通信。那这种地址呢多播地址呢,只能作为目的地址不能作为源地址。

也就是说一台主机,要跟这个多播组内的所有主机进行通信的话,啊就使用的是多播地址。也就是把这个多播地址放入IPv6数据报的目的地址当中,就可以发给这个多播组当中的所有主机了。那这个IPv6呢它并没有使用IPv4的广播地址,因为这个多播地址呢可以包括广播地址。在IPv4当中的广播呢是发给这个局域网当中所有结点,啊那对应于IPv6呢这个多播之所以可以取代广播就是因为可以把这个广播想象成一组多播组当中的所有主机,然后给这些主机全部发送这个数据报就可以了。因此每个主机呢都可以收到这样一个数据报的拷贝。

接下来再看这个任播。任播呢就是一个比较新的名词了,它是IPv6独有的一种地址。那任播地址呢是指一对多当中的一个通信。它的实质呢还是一对一通信,但是表现的形式呢好像是啊这一个在跟很多主机通信一样。

所以说这种任播地址呢,它也是只可以作为目的地址的。

啊具体表现就是,假如一台主机,它这个IP数据报当中所封装的目的地址是一个任播地址,那它就会给这个任播组内的一台主机发送这个数据报。那是哪一台呢?啊是离它最近的一台,通常是离它最近的一台。那以上就是IPv6基本地址的三种类型。

接下来我们再来看一下,如果有的网络它是IPv6的网络,那有的网络它使用的是IPv4,那如何实现这两个网络之间的连接以及过渡呢?或者说如何兼容IPv6和IPv4地址呢?

就是两种策略,双栈协议以及隧道技术。

首先这个双栈协议呢,就是指在一台设备上会同时启用IPv4的协议栈以及IPv6的协议栈。那这个设备呢,可以是路由器,也可以是一个计算机。如果对应的是路由器的话,那这个路由器的不同的接口上就分别会配置IPv4地址和IPv6地址,那这样就会实现在这个设备内部实现一个IPv4和IPv6地址的转换。那接下来,如果这台设备是一个计算机,也就是是一台主机,那它将同时拥有IPv4地址以及IPv6地址,并且呢具备同时处理这两个协议地址的功能,也就是说来者不拒。而且呢我也可以以IPv4或者IPv6地址的身份去发送我的数据报。

那第二种策略呢叫做隧道技术。隧道技术啊其实是比较广泛应用的一种技术。通过使用互联网络的基础设施,在网络之间传递数据的方式,使用隧道传递的数据呢,可以是不同协议的数据帧或者是数据包。隧道协议会将其他协议的数据帧或者是数据包重新封装然后通过一个隧道发送。

啊具体来说我们来看一下。假如说有两台主机它们要通信,那中间呢有四台路由器。那这两台,啊两边的这两台路由器呢,它们所使用的都是IPv4的协议。那这两台路由器使用的是IPv4的协议。那如果我现在发送了一个IPv6的数据报,应该怎么处理呢?

假如说我在这儿发一个IPv6的数据报,那在这个路由器一定很好通过。那到这个IPv4的路由器这儿,我们应该怎么办啊。就需要给它进行封装,封装到哪儿呢?封装到一个以IPv4为首部的这个数据报当中。也就是把这个

【知识强化】第四章 网络层 4.5 IPv6的更多相关文章

  1. 【知识强化】第四章 网络层 4.3 IP

    这节课我们来学习一下IP数据报的格式.那之所以把路由算法这一小节跳过呢,就是因为我们之后会要讲到路由的选择协议.那在路由选择协议这一块讲路由算法,我觉得是比较合适的.那我们先来看一下这节课要讲的知识. ...

  2. 【知识强化】第四章 网络层 4.4 IPv4

    这节课我们来学习一个非常重要的概念,就是IPv4地址,其实也是我们常用的IP地址. 首先我们来了解一下,为什么会有IP地址的出现以及它是做什么用的.假如说在很多年前我遇到一个女生非常的漂亮,等了十年之 ...

  3. 【知识强化】第四章 网络层 4.8 移动IP

    这节课我们来学习一下移动IP. 那移动IP呢要跟动态IP区分开.动态IP是指,通过使用DHCP协议,在一个局域网内部的一台主机,就可以动态地获得一个IP地址.那这里面的移动IP是什么意思呢? 我们来举 ...

  4. 【知识强化】第四章 网络层 4.7 IP组播

    这节课我们来学习一下IP组播. 首先我们来看这样一个问题,IP数据报在网络当中传输的时候,有几种传输方式呢?三种,分别是单播.广播和组播(多播).这个组播呢也叫做多播,它们俩是一个意思.那这个组播是由 ...

  5. Android初级教程理论知识(第四章内容提供器)

    之前第三章理论知识写到过数据库.数据库是在程序内部自己访问自己.而内容提供器是访问别的程序数据的,即跨程序共享数据.对访问的数据也无非就是CRUD. 内容提供者 应用的数据库是不允许其他应用访问的 内 ...

  6. 【知识强化】第二章 数据的表示和运算 2.4 算术逻辑单元ALU

    从本节开始我们就进入到本章的最后一节内容了,也就是我们算术逻辑单元的它的实现.这部分呢是数字电路的一些知识,所以呢,如果你没有学过数字电路的话,也不要慌张,我会从基础开始给大家补起.那么在计算机当中, ...

  7. unix环境高级编程基础知识之第四章

    1.从当前用户转到root用户:直接输入su命令,然后输入root密码,如果之前没有设置root命令密码会登陆不成功,这里需要命令sudo passwd命令设置密码,然后按照上面输入就成:从root命 ...

  8. Java基础知识笔记第四章:类和对象

      编程语言的几个发展阶段 面向机器语言 面向过程语言 面向对象语言:封装.继承.多态 类 类声明 class Person{ ....... } class 植物{ ....... } 类体 类使用 ...

  9. 《计算机网络》谢希仁(第7版) 第四章 c语言http://c.biancheng.net/cpp/html/3137.html

    第四章 网络层 电信网使用面向连接的通信方式,使电信网络能够向用户提供可靠传输的服务. 互联网设计思路:网络层向上只提供简单灵活的.无连接的.尽最大努力交付的数据报(分组)服务. 网络层不提供可靠传输 ...

随机推荐

  1. 激活密钥许可证VMware Workstation Pro 15 激活许可证

    虚拟机 VMware Workstation Pro 15.5.0 及永久激活密钥 虚拟机下载地址:https://download3.vmware.com/software/wkst/file/VM ...

  2. 【串线篇】Mybatis之动态sql

    一.if标签 <select id="getTeacherByCondition" resultMap="teacherMap"> select * ...

  3. 常见Serialize技术探秘(ObjectXXStream、XML、JSON、JDBC byte编码、Protobuf)

    目前业界有各种各样的网络输出传输时的序列化和反序列化方案,它们在技术上的实现的初衷和背景有较大的区别,因此在设计的架构也会有很大的区别,最终在落地后的:解析速度.对系统的影响.传输数据的大小.可维护性 ...

  4. spring-boot整合shiro实现权限管理

    1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 4.0.0 2.GITHUB地址 https://github.com/nbfujx/springBo ...

  5. SQL Server DBA日常检查常用SQL

    .数据库 --所有数据库的大小 exec sp_helpdb --所有数据库的状态 select name, user_access_desc, --用户访问模式 state_desc, --数据库状 ...

  6. React学习笔记-生命周期函数

    定义: 生命周期函数指在某一个时刻组件会自动调用执行的函数

  7. 【Linux】grep显示匹配行的上下几行的用法

    打印匹配行的前后5行 grep -5 ‘something’ file 打印匹配行的前后5行 grep -C 5 ‘something’ file 打印匹配行的后5行 grep -A 5 ‘somet ...

  8. nodejs 程序(有的功能和前端js是不一样的)

    node文档:http://nodejs.cn/api/ 1.控制台输出 (node的输出是在命令框中输出的): 有颜色的输出 :console.log('\x1B[33m%s\x1b[0m:', p ...

  9. 绕X 轴 Y轴 Z轴旋转的结果

    void warp_perspect_3_angle(cv::Mat face, float roll, float yaw, float pitch) { cv::Mat face_img = fa ...

  10. arm可以干什么

    ARM开发可以控制各种电机.arm性能很强 ,内存更大, c语言当然可以.ARM是32位的,单片机是8位的,运行速度快很多,最关键的是可以跑操作系统.控制部分的内容ARM当然可以胜任,而且ARM的资源 ...