目录
一、IPv6 vs IPv4
1、对IPv6主要变化
2、IPv4 vs IPv6
二、IPv6基本首部
1、版本——4位
2、通信量类——8位
3、流标号——20位
4、有效载荷长度——16位
5、下一个首部——8位
6、跳数限制——8位
7、源 、 目的地址——128位
8、扩展首部
三、IPv6地址
1、目的地址
2、冒号十六进制记法
四、从IPv4到IPv6过渡
1、双协议栈
2、隧道技术
3、ICMPv6
IPv4是上世纪70年代末设计的
32位,仅有2^32个,最多分配42亿个IP地址
但是,如今全世界加起来的网络设备早已经不止42亿
因此,32位不够
不够怎么办,那就扩
于是,IPv6应运而生
一、IPv6 vs IPv4
1、对IPv6主要变化
1、更大的地址空间128位
2、仍支持无连接传送
3、数据单元叫做分组,不叫数据报
4、扩展地址层次结构
5、灵活首部格式(IPv4首部 和 IPv6首部格式不兼容)
6、IPv6允许有选项的控制信息,在有效载荷中,但是首部固定,40字节
7、即插即用
8、支持资源预分配
9、首部改为8字节对齐,IPv4是4字节对齐
2、IPv4 vs IPv6
基本将IPv4的所有部分全部取消
只将TTL(生存时间字段)改为跳数限制字段
IPv6数据报由两大部分组成:基本首部(固定40字节)+ 有效载荷(净负荷)
有效载荷允许由0 / 多个扩展首部,再后面才是数据部分
所有的扩展首部都不属于基本首部
IPv4 和 IPv6对比
二、IPv6基本首部
1、版本——4位
指明协议版本,IPv6是6
2、通信量类——8位
区分IPv6数据分组的优先级类别和优先级
类似于IPv4的服务字段
3、流标号——20位
支持资源预分配
路由器把数据分组和一个给定的资源联系
流:在网络中,从特定源点到特定终点的一系列数据分组
流所在路径的多个路由器保证指明服务质量
所有属于一个流的数据分组拥有一样的流标号
4、有效载荷长度——16位
指明除首部长度意外的数据长度
最大为2^16 = 64KB,65535字节
5、下一个首部——8位
和IPv4的协议相似
指明IP数据分组应当交给上层那个协议
6、跳数限制——8位
和IPv4相似,TTL时间
作用是:防止数据分组在网络中无限制存在,占用资源
在数据发送前,设置该值,最大为255
每经过一个路由器,该值-1
7、源 、 目的地址——128位
数据报发送主机IP地址 和 目的主机地址
8、扩展首部
逐跳选项、路由选择、分片、鉴别、封装安全有效载荷、目的站选项
每一个扩展首部由若干字段组成,长度各不相同
但所有扩展首部第一个字段都是8字节的“下一个首部”字段
该字段指明:紧跟着的后一个扩展首部是什么
三、IPv6地址
1、目的地址
目的地址可以分为三个类型:
单播:点对点通信
多播:一对多通信(广播是其中一个特例)
任播:一对多通信,但是数据只给其中一个主机
IPv6把实现IPv6协议的主机 / 路由器成为节点
节点的每一个接口分配一个IPv6地址
因此,一个节点可能会有多个单播地址
这任意一个单播地址都可以是该节点的目的地址
2、冒号十六进制记法
128位,如果使用点分十进制记录,如下:
很不方便,因此,改用冒号十六进制记法
每16位的值用十六进制表示(1111 1111 1111 1111 -> FFFF)
零压缩:一连串连续的0可以使用冒号省略
为避免混淆,任何一个地址只能使用一次零压缩
IPv6取消了地址掩码,但是依旧有斜线/
例如:2001:0DB8:0:CD30::/60 表示前60位为网络号
几个常用和特殊地址:
为指明地址:全0 ,只能用作某主机源地址(还没有分配IPv6地址时方可),不能作为目的地址
环回地址: ::1,用于主机程序测试
IPv6没有广播地址
四、从IPv4到IPv6过渡
过度不是一蹴而就,需要IPv6能够兼容IPv4
1、双协议栈
主机配备双协议:IPv4 / IPv6
这种主机和IPv4通信就使用IPv4的地址,和IPv6通信就使用IPv6的地址
那么如何知道目的主机地址是什么类型?
使用域名系统DNS查询
目的主机向源主机返回DNS报文,该报文带有目的主机的地址类别信息
但是安装双协议栈代价太大
2、隧道技术
IPv6进入IPv4网络时,将IPv6数据报封装为IPv4数据报
把整个IPv6数据报作为IPv4的数据部分,此时IPv4首部协议部分值为41
41表示数据部分为IPv6数据报
这样IPv6在IPv4的网络中传输就好像IPv4数据报一样,没有任何变化
当IPv4数据报到IPv6网络事,就将数据部分交给IPv6网络即可
总之,就是封装
3、ICMPv6
IPv6也不提供可靠传输
可靠传输由ICMP协议保证
IPv4中的ARP地址解析协议 和 IGMP 网络组管理协议 被整合到IPv6 的ICMPv6中
IPv6使用面向报文协议,通过报文报告差错