禁止码迷,布布扣,豌豆代理,码农教程,爱码网等第三方爬虫网站爬取!
IPv6 数据报
字段
在 2011 年 2 月,IANA 向一个区域注册机构分配完了未分配的 IPv4 地址的最后剩余地址池。这些注册机构可用的 IPv4 地址一旦用完,IPv4 地址就会耗尽,因此IPv6 技术就被开始进行研发部署。(原计划让 ST-2 作为 IPv5,但是 ST-2 后来就被舍弃了。)下面就让我们看看 IPv6 数据报有什么内容:
字段 | 作用 |
---|---|
版本(version) | 占 4 位,表示协议版本 |
流量类型(traffic class) | 占 8 位,与 IPv4 的服务类型类似,区分不同的数据报 |
流标签(flow label) | 占 20 位,用来标识一段数据报的流,能够对一个流中的某些数据报给出优先权 |
有效载荷长度(payload length) | 占 16 位,给出了 IPv6 数据报出基本首部以外的字节数 |
下一个首部(next header) | 占 8 位,当 IPv6 数据报没有拓展首部时,指明数据应当交付给哪一个上层协议;当出现拓展首部时,标识后面第一个拓展首部的类型 |
跳数限制(hop limit) | 占 8 位,该字段类似于 IPv4 中的 TTL,每次转发跳数减 1,该字段达到0 时包将会被丢弃 |
源地址、目的地址(Address) | 各占 128 位,标识该报文的来源和目的地 |
观察以上字段,我们需要重重关注 3 个方面。首先是 IP 地址长度从 IPv4 的 32 bit 增加到了 128 bit,也就是说可以表示 2128 个 IP 地址。这个数量级可以为地球上的每一个砂砾都赋予一个 IP 地址,这就保证了全世界不会用尽 IP 地址。第二我们关注 40 字节的首部,这也就说明了 IPv4 的很多首部统统被舍弃了,这样路由器就能更快地处理 IP 数据报。
第三我们关注流标签,所谓“流”就是互联网络上从特定源点到特定终点的一系列数据报。因此“流标签”的一种解释是“给属于特殊流的分组加上标签,这些特殊流是发送方要求进行特殊处理的流,入一种分默认服务质量或需要实时服务的流。”其实这么说还是很含糊,就比如说音频流,这个流被标识出来之后就可以进行一些定制的操作。这个字段很耐人寻味,这为 IPv6 提供更强大的服务提供了健壮性的选择。
对比 IPv4
IPv6 数据报相对于 IPv4 数据报有很多删减的地方,这里关注 3 个方面。首先是分片与重组的问题,IPv6 数据报不允许在路由器上分片,这个操作只能在源和目的执行。如果中间遇到链路的 MTU 较小怎么办?这个时候路由器就直接丢包,然后向发送发发一个“分组太大”的 ICMP 报文,然后源就根据这个报文,把数据报分成更小的几个再重传。这种设计时合理的,因为路由器的分片是耗时的操作,这样可以是 IP 数据报转发的速度提高。
第二个我们关注首部校验和的问题,这个字段在 IPv6 中已经没了。因为在传输层、数据链路层协议中,有很多协议都有具备错误检测的功能,而首部校验和因为有 TTL 等参数变化,计算的开销很大。因此把这个字段去除之后,也可以提升 IP 数据报转发的速度。
第三个我们关注选项,这个字段在 IPv6 中已经没了,不过它的功能被归并到下一个首部字段中了。这种改动可以使得 IP 数据报的首部长度为定长,也就是 40 字节。
扩展首部
IPv6 把 IPv4 中的选项字段的功能用扩展首部取代,而且扩展首部的处理由源和目的端系统来处理。这种设计不仅使得数据报首部的长度可以固定,而且沿途的路由器都不用对除了逐跳选项以外的信息进行处理,这也提高了路由器转发的效率。
向 IPv6 过渡
IPv4 要如何实现向 IPv6 的过渡呢?即使 IPv6 可以做到向后兼容,发送、路由和接收 IPv4 数据报,但是 IPv4 并不能够兼容 IPv6。第一种想法是约定一个日期,全球因特网的所有服务器全部改用 IPv6,这个明显很不现实。比较好的思路是逐步演进,慢慢地向 IPv6 进行过度。
双协议栈
所谓双协议栈技术,就是在完全过渡之前,先使一部分主机或路由器能够同时使用 IPv4 和 IPv6 进行通信,这样无论是接收到哪种数据报,都可以进行处理。但是由于二者不能兼容,主机要如何区分 IPv4 和 IPv6 地址呢?使用 DNS 进行解析,根据解析的结构判断使用什么样的处理方式。
这么做看似可行,但是会滋生很多问题。首先是主机或路由器需要有 2 套信息,分别是 IPv4 地址和 IPv6 地址,这增大了存储的开销。第二是每一跳都是用 DNS 进行解析,这也增大了时间上的开销,为 IP 协议实现快速传输造成了限制。第三也就是 IPv4 数据报被转换为 IPv6 数据报时,由于字段的不同将会造成数据的缺失,这是最要命的。
隧道技术
隧道技术是实践证明性能不错,得到广泛应用的技术。思路是将 2 台 IPv6 路由器之间的 IPv4 路由器在逻辑上合并,当做是一个隧道。借助隧道,在发送端的 IPv6 节点可以将整个 IPv6 数据报放到 IPv4 数据报的有效载荷字段中。则在隧道中的 IPv4 路由器就正常地完成转发操作就行,和正常的数据报传输无异。当隧道接收端的 IPv6 节点收到数据报之后再提取并形成 IPv6 数据报即可。
概括一下,就是IPv6 数据报作为 IPv4 数据报被封装,穿越 IPv4 网络。整个过程就好像 IPv6 服务器之间直接相连接收数据报一样,兼容性和效率都很不错。
参考资料
《计算机网络(第七版)》 谢希仁 著,电子工业出版社
《计算机网络 自顶向下方法》 [美] James F.Kurose,Keith W.Ross 著,陈鸣 译,机械工业出版社