IPv6 --- 基础
人都不愿意做改变,尤其是没有必要的改变。这句话套在IPv6上非常合适。尽管提出之初就是为了取代IPv4,但是在已经提出的二十年后的今天,IPv6的使用率还远不及IPv4。从下图[1]看,世界上IPv6普及率好的国家是:美国,印度和比利时。全世界的IPv6普及率只有23.34%。对于我国来说,事件就是去年工信部联合各大企业发文要支持IPv6[2]。
IPv4地址的耗尽
--
IPv6的出发点就是因为IPv4地址不够用了。而互联网IPv4耗尽的传闻,就像石油100年后要用完一样,是一个事实,但是这个事实又不断的因为新的技术的出现得到缓解。先来看看IPv4地址的使用情况吧。
IPv4地址由IANA(互联网地址编号机构)管理,并分配给5大地区管理机构。在2011年的时候,IANA就宣布IPv4中央地址池已经耗尽。而5大地区:
- APNIC(亚太互联网信息中心)在2011年4月就用尽了所有IPv4地址
- RIPE(欧洲IP网络)在2012年9月用尽
- LACNIC(拉美及加勒比互联网信息中心)在2014年6月用尽
- ARIN(美国互联网号码注册管理机构)在2015年9月用尽
- AFRINIC(非洲网络信息中心)将于2020年2月用尽
这里的用尽并不是真的用光了,而是地区管理机构可用的IP地址已经下降到了一定的阈值。例如APNIC,名义上2011年就耗尽了IPv4地址,但是现在还能从后一个 /8 网段(103开头)和一些回收的IPv4地址池分配地址。
总的来说,IPv4地址基本处于用尽的地步,现在想要申请IPv4地址,可以:
(1)向所在的地区管理机构申请剩余的IPv4地址
(2)向ISP(互联网服务提供商)租用的IPv4地址
(3)在IPv4的开放市场(如果有的话)购买地址
而IPv6协议下,因为IPv6地址是128位的,并且IANA为每个地区管理机构分配了一个 /12 的IPv6地址,这样的地址空间在可预期的将来是使用不完的。
IPv6与IPv4的区别和关联
--
从名字上看,IPv6就是IPv4的升级版,无非就是版本4升级到版本6。所以看到IPv6,很多人的直观反应是如何从IPv4升级到IPv6。但是实际上,IPv6是一种与IPv4基本完全独立的网络层协议。整个工作机制有相似的地方,但是支撑网络层的协议都重新定义了。实现IPv6并不是简单的升级,而是重新实现一套网络层协议。
整体来看,IPv6报文与IPv4报文差别就两个地方,一个是数据链路层(以太网协议)中协议类型,IPv4是0x0800,IPv6是0x86DD;另一个是IPv6 Header是40字节,IPv4只有20字节。
具体到网络层头部内容可以看出,IPv6根本没有考虑要兼容IPv4,这或许是IPv6推进缓慢的原因之一。除了version,source address,destination address以外,其他的一些field,就算功能一样,例如TTL和Hop Limit,但是名字和位置也变了。具体的差别有:
- Version一个是4,一个是6,这个没得说
- IHL(Internet Header Length)在IPv6中去除了,因为IPv6 Header不支持Option,所以长度是固定的40字节,因此也没必要表明Header的长度。实际上IPv4 option也很少使用。
- Type of Service,在IPv6中改名成为了Traffic Class。不过功能保留了,还是用来标识流量做QoS用。
- Total Length,在IPv6中改名成为了Payload Length。并且,IPv4的Total Length是要包含IPv4 Header的,而IPv6 Payload Length直接是IP payload的长度。这样在IPv6包有效性校验的时候,不必考虑Total Length必须要大于IHL,能够提升一丢丢的性能。
- Flow Label,IPv6中新增的字段,用来标识一个TCP连接或者一个会话。通过Flow Label可以不看其他的Header,就标识出流量,对于QoS的实现有帮助。
- Identification, Flags, and Fragment Offset,这些字段在IPv6中去除了。这些是用来实现IP报文分片的,也就是说IPv6不支持分片。
- TTL在IPv6中改名为Hop Limit。功能是一样的,改名之后更贴近实际的作用。
- Protocol Field在IPv6中改名为Next Header。
- Checksum在IPv6中移除了。因为更高层的协议自己有错误检测,而更底层的协议通常有CRC校验也能发现错误,所以IPv6放弃了自己的Checksum,这也是能提升一丢丢性能的改动。
- Source Address,Destination Address,从IPv4的32bit,改成了IPv6的128bit。
IPv6还有一个潜在的区别,所有的主机和转发设备必须少支持MTU 1280,而IPv4下,这个值是68。
IPv6 地址表示方式
--
初看IPv6地址可能会觉得比较复杂,但是本质上,IPv6地址是由bit组成,它的表示方法是为了让人更好的记住和书写这些地址。从标准的角度来看,一个IPv6地址是这样:
0010 0000 0000 0001 0000 1101 1011 1000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0101 0010
0000 0000 0000 0000 0000 0000 0000 0001
相关文章