IPv6前言
IP以其简单、方便操作,迅速占领了网络通信的领域,最终实现了网络通信的统一,可惜设计者并未预料到IP膨胀速度如此之快,因此设计了IPv6,作为第二代IP协议横空出世。虽然IPv6技术理念十分优秀,但是IPv6推进的进度十分缓慢,目前仍处于IPv6过渡阶段,这个阶段是最蛋痛的部分,比纯IPv4/v6都要麻烦,甚至让网络变得更加麻烦。期望未来能够实现IPv6-only的环境,路漫漫其修远兮,吾将上下而求索~
IPv6篇参考如下《TCP/IP路由技术卷一》、《RFC 2460》、曹氏宏的博客等
IPv6优势
突出优势 / 刚需 :更大的地址空间,128位地址长度,足以满足未来长时间不用为IP地址不足担忧。
原因:
目前已经满足60多亿人的使用需求,
的地址长度可以自我感受一下。
其他优势
IPv6 | IPv4 |
简单为美,报头定长。IPv6报头固定长度位40 Byte,格式简单,路由器开销小。 | 报头变长。Option选项加入,IPv4报头长度在20~60 Byte之间,路由过程中,要求中途所有路由器读取 Option内容,开销变大。 |
扩展报头,未来可期。其他功能移到扩展报头,且遵守TLV原则。 | 难以扩展。额外功能放入Option选项中,让IP报头十分 臃肿,难以扩展。 |
即插即用,配置简洁。配合DHCP、ICMP等协议,配置方便。 | 配置因素过多。手动和DHCP自动配置,但是地址数量 有限,要考虑地址冲突问题。 |
安全可靠,贴身使用。原生理念,天然自带IPSec,保证主机到主机的通信安全(原生理念哈) | 尽力而为,有条件可靠。后期发展,IPv4也可以使用 IPSec。 |
服务保障,流标签出现。增加了20bit的Flow Label提供更好服务。 | DSCP设计。服务质量也有保证,只是位数不多。 |
IPv6设计理念,就是为了解决IPv4瓶颈,以及IPv4在现实应用中遇到的问题。比如:曹的博客中写出来的MIP的问题。IPv6的设计是具有前瞻性和完美的,但是,要撼动IPv4筑好的基石更加困难,因为人们总是可以用加法(其他技术),来解决问题。
IPv6
IPv6地址
IPv6地址书写格式
- 128位,二进制,机器读取
- 32位,16进制,冒号分十六进制,人/机器读取
标准IPv6地址
2001:0410:0000:1234:FB00:1400:5000:45FF
3ffe:0000:0000:0000:1010:2a2a:0000:0001
fe80:0000:0000:0000:0000:0000:0000:0009
IPv6地址格式并不复杂,问题是太长,也容易出错,因此本着简单的活交给机器原则,出现了以下三种地址压缩格式。
- 出现连续多段0时,利用"::",仅能使用一次
fe80:0000:0000:0000:0000:0000:0000:0009
压缩后:fe80::0009
3ffe:0000:0000:0000:1010:0000:0000:0001
错误压缩:3ffe::1010::0001,原因:“::”的使用,隐藏了0的位数,多个符号出现就有多种可能。
正确压缩:3ffe::1010:0000:0000:0001 或 3ffe:0000:0000:0000:1010::0001
2. 省略每一段中前导(非0数字)前的0,中间的0不可省略
0000:0000:0000:0000:0000:0000:0000:0000(这个特殊一点)
压缩后:0:0:0:0:0:0:0:0,也可以(::)
3ffe:0000:0000:0000:1010:0000:0000:0001
压缩后:3ffe:0:0:0:1010:0:0:1
3. 结合1和2压缩
0000:0000:0000:0000:0000:0000:0000:0001(相当于IPv4的127.0.0.1)
首先按照1:::0001
接下来,按照2:::1
IPv6三种地址
IPv6地址定义了三种地址:单播、组播、任播。取消了广播地址,增加了任播地址。
任播在IPv4也有体现,就是访问同一个IP地址,会访问最近的IP节点,比如:8.8.8.8谷歌的DNS服务器,全球分布,在中国访问会找中国内地址为8.8.8.8的服务器。
广播被组播替代,具体原因如下:
广播:消耗CPU资源,占用带宽。对于不想接收广播报文的主机,需要读取报文全部内容才会丢弃,可操作性差。
组播:可操作性强,可定义接收成员组。对于未订阅组播消息的主机,接收到组播信息,网卡根据IP头部就可以直接丢弃。比如:接口OSPF功能未开启,收到hello包直接丢弃。
IPv6也如同IPv4一般,对地址有所规划,规划表如下《TCP/IP路由卷一》
IPv6地址类型的高位数字组合
地址类型 | 高位数字(二进制) | 高位数字(十六进制) |
未指定 | 00....0 | ::/128 |
环回地址 | 00....1 | ::1/128 |
组播地址 | 11111111 | FF00::/8 |
链路本地单播地址 | 111111101000 | FE80::/10 |
地区本地单播地址 (存在争议) | 111111101100 | FEC0::/10 |
全球单播地址 (当前分配) | 001 | 2xxx::/4 或者 3xxx::/4 |
保留的类型 (未来全球单播地址的分配) | 其他所有的 |
简要说一下,几个单播地址的作用,组播不展开描述,一个是目前不会,二是IPv4组播应用也不广泛,更何况IPv6.
链路本地单播地址:通用前缀 + 主机ID(EUI 6-4),作用范围仅链路本地,意思是,路由器一条链路两个对端;组网中处于同一个二层环境(vlan)的所有交换机端口。作用则是天然为各种协议做准备,且不担心地址冲突。
全球单播地址:相当于公网地址,由于IPv6地址十分充足,目前2xxx::/4还没分配完,3的话可能要过很久才会使用。
IPv6报头格式
IPv6报头格式简单、方便,固定长度,功能基本和v4报头没有太大差别,但是还有几个注意点
- Flow Label:在IPv4的八位DSCP的基础上,增加这个字段,为了更加提供更精细服务(可以根据源目IP、端口,进行精细服务)。用处:通过精细标签,CPU不用识别到TCP报文,仅根据标签提供精细服务,降低CPU开销。
- 有效载荷:IPv6报头所承载的数据,除v6报头外,包括扩展报头也包含在有效载荷中。
- 跳数限制:就是TTL。
总结
第一篇以简单为美为主,介绍IPv6的地址和简单性,下一篇讲述即插即用特性。