这节课我们来学习一下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为首部的这个数据报当中。也就是把这个

最新文章

  1. 15个C++项目列表
  2. 2. K线学习知识二
  3. JavaScript摇股子
  4. SharePoint 2013 必备组件之 Windows Server AppFabric 安装错误
  5. angularJs之http后台访问数据
  6. Scanner和BufferedReader
  7. win7下用python3.3获取cable modem的设备信息
  8. Ruby On Rails 在线学习好网站
  9. css中的滤镜
  10. ASP.NET 2.0 页(Page)生命周期概述
  11. JS判断字符串是否全为中文
  12. Memcached在windows下的基本使用
  13. Flask04 后台获取请求数据、视图函数返回类型、前台接受响应数据
  14. Python之登录接口
  15. 安卓电量优化之WakeLock锁机制全面解析
  16. 盒子浮动float
  17. CSS3选择器p:nth-child和p:nth-of-type之间的差异
  18. Python入门基础之条件判断、循环、dict和set
  19. Python 检测系统时间,k8s版本,redis集群,etcd,mysql,ceph,kafka
  20. 浅谈KMP算法

热门文章

  1. 203-基于ARM和双TI DSP TMS320C6678的6UCPCI高清编解码处理平台
  2. python读取pcap包
  3. 第03章 AOP前奏
  4. python的strip和split函数
  5. hadoop中mapreduce的mapper抽象类和reduce抽象类
  6. linux下清空文件内容
  7. springboot支持webSocket和stomp实现消息订阅通知示例
  8. uiautomator python版本
  9. Asp.Net页面间传值常见的几种方法
  10. 【Angular】No component factory found for ×××.