IPV6入门篇
引言
由于互联网的快速发展与普及,原有的IPV4地址已不能满足网络用户的需求,虽然NAT可以缓解IPV4地址的耗尽,但NAT破坏了网络环境的开放、透明以及端到端的特性,因此IPV6地址协议应运而生。IPV6协议使用128位地址替代32位的IPV4地址,这样大约可以产生340万亿亿亿亿(3.4*1038)个可用的地址。此数目可以满足公共IP地址需求。本文作为IPV6入门,主要介绍IPV6地址和IPV6报文格式相关内容。
内容
IPV6优点
1、更大地址空间:128位的地址空间可以满足星球上每个人
2、无需NAT:保障端到端通信
3、没有广播地址:包括单播、多播、任意播
4、支持移动性和安全性:有助于确保遵循移动IP标准和Ipsec标准
5、更简单的报文提高了路由器的效率
6、接口标识:从接口的数据链路层
IPV6新特性
1、每个接口多个地址
2、链路本地地址:交换路由更新时,IGP将link-local地址作为下一跳地址
3、无状态自动配置:一个IPV6设备根据本身分配一个独特link-local IPV6的地址
4、独立或不独立于提供商的编址
IPV6地址
1、IPV6地址由128位组成,使用8个16位段来表示,每个16位段使用十六进制数字表示即每4个十六进制为一组,之间使用英文冒号:分开
2、格式为:x:x:x:x:x:x:x:x x代表4个十六进制位,举例:2035:0001:2BC5:0000:0000:087C:0000:000A
3、IPV6地址包括两部分:前缀+本地标识
4、前缀:通过在IPV6地址后面加一个斜线/,再跟一个十进制的数字来标识一个IPV6地址的起始位由多少位是前缀位,一般前缀为64位,如:3ffe:1994:100:a::/64
5、接口标识:从接口的数据链路层地址直接派生出接口标识,该标识是全局唯一。长度为64位,根据MAC地址动态创建。
6、特殊的IPV6地址如下表:
|
IPV6地址 |
描述 |
|
::/0 |
|
|
::/128 |
|
|
::1/128 |
|
|
FE80::/10 |
|
|
FF00::/8 |
|
|
其他地址 |
|
IPV6地址简写规则:
1、在4个十六进制位组成的字段中,可以省略前导0;如:09C0=9C0 0000=0
2、在每个地址中,可使用一对冒号(::)来表示任意数量的连续的0,;如: ff02:0000:0000:0000:0000:0000:0000:0005=ff02::5
注:一个地址中只能出现一对冒号,否则无法唯一确定地址
IPV6地址类型
|
地址类型 |
描述 |
|
单播 |
|
|
多播 |
|
|
任意播 |
|
- 全球单播地址格式: 网络部分提供一台设备到下行专用数据链路的定位,主机部分提供这条数据链路上该设备的标识 。16位的子网ID字段可以提供65536(216)个不同的子网
|
全球路由选择前缀(48) |
子网ID(16) |
接口ID (64) |
- 本地单播地址:使用范围限定在单条链路上的地址。唯一性只在所在的链路有效,相同的地址也可能存在于另一条链路上,因此此地址离开所在的链路是不可路由的。链路本地单播地址的起始10位是1111111010(FE80::/10)
- IPV6单播地址分配方法:

说明:每个接口只能有一个链路本地地址
仅仅配置一个全局单播地址也会在接口上创建一个链路本地地址(EUI-64)
接口上可以配置多个IPV6地址。IPV4和IPV6地址可以同时配置
以太网的接口ID是基于接口的48位MAC地址中间插入16位的0XFFFE
- 多播地址格式
|
多播前缀:8位 |
标记:4位 |
范围:4位 |
组ID:112 |
说明:标记位:前3位保留为0,第4位:0-永久的公认的地址;1-暂时的地址
范围:包括:节点本地-0X1、链路本地-0X2、地区本地-0X5、组织本地-0X8、全球-0XE、保留-0XF 0X0
组ID:前面80位设置为0,只使用后面的32位
常见的公认IPV6多播地址:都属于永久的链路本地的范围;
|
地址 |
多播组 |
|
FF02::1 |
所有的节点 |
|
FF02::2 |
所有的路由器 |
|
FF02::5 |
OSPFv3路由器 |
|
FF02::6 |
OSPFv3指定路由器 |
|
FF02::9 |
RIPng路由器 |
|
FF02::A |
EIGRP路由器 |
|
FF02::B |
移动代理 |
|
FF02::C |
DHCP服务器/中继代理 |
|
FF02::D |
所有的PIM路由器 |
- IPV6包头格式

说明:
- 版本:4位,0110表明版本6
- 流量类别:8位,类似于IPV4中的TOS字段
- 流标签:20位,设置目的是允许为特定的业务流打上标签,可以提供更精细的服务类别区分的颗粒,在平衡业务流量通过多条路径时可以确保属于同一流的数据包能够总是转发到相同路径上,在发起一个数据包时,加上合适的流标签字段,路由器能够识别一条流,而不必一 一查找数据包头部,目前路由器忽略此字段
- 有效载荷长度:用来封装数据包所封装的有效载荷长度,IPV6数据包头部长度为40字节
- 下一报头:指出IPV6数据包头部后面的报头,与IPV4包中的协议字段类似
- 跳数限制:类似于IPV4中的TTL字段,衡量一个数据包到达目的地的路径中所能跨越的最大路由器跳数的工具
- 源地址和目的地址:128位长度
- 可选项:包含拓展报头,提供可选功能,如:分段、源路由选择或认证、目的地可选项、TCP/IP协议等,在下一个报文字段中是否有扩展报头
|
IPV6报头 |
路由选择扩展报头 |
分段扩展报头 |
认证扩展报头 |
上层协议报头 |
数据 |
相关推荐
- 《TCP/IP路由技术第二章》
IPV6入门篇的更多相关文章
- Membership三步曲之入门篇 - Membership基础示例
Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 - Membership基础示例 Membership三步曲之进阶篇 - 深入剖析Pro ...
- spring boot(一):入门篇
构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...
- 1. web前端开发分享-css,js入门篇
关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学 ...
- 一个App完成入门篇(七)- 完成发现页面
第七章是入门篇的倒数第二篇文章了,明天整个APP将进入收官. 本节教程主要要教会大家使用二维码扫描和用do_WebView组件加在html页面. 导入项目 do_WebView组件 扫描功能 自定义事 ...
- [原创]Linq to xml增删改查Linq 入门篇:分分钟带你遨游Linq to xml的世界
本文原始作者博客 http://www.cnblogs.com/toutou Linq 入门篇(一):分分钟带你遨游linq to xml的世界 本文原创来自博客园 请叫我头头哥的博客, 请尊重版权, ...
- 转:OSGi 入门篇:模块层
OSGi 入门篇:模块层 1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文 ...
- 转:OSGi 入门篇:生命周期层
OSGi 入门篇:生命周期层 前言 生命周期层在OSGi框架中属于模块层上面的一层,它的运作是建立在模块层的功能之上的.生命周期层一个主要的功能就是让你能够从外部管理应用或者建立能够自我管理的应用(或 ...
- 【three.js详解之一】入门篇
[three.js详解之一]入门篇 开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的 ...
- [Maven]Apache Maven 入门篇
作者:George Ma 上 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法.这个入门篇分上下两篇.本文着重动手,用 ma ...
随机推荐
- struts2的DevMode模式
在实际应用开发或者是产品部署的时候,对应着两种模式: 1.开发模式(devMode),此时,DevMode=true 2.产品模式(proMode),此时,DevMode=false 在一些服务器或者 ...
- .net core 跨平台实践
本人采用Ubuntu 14.04 来实现.net core 的跨平台实践. 首先安装Ubuntu14.04系统.安装细节问百度. 1..net core console程序的跨平台 首先新建一个con ...
- Linux下百度云盘报 获取bdstoken失败
在用linux下百度云盘工具(bcloud),登录时,报获取bdstoken失败. 在网上搜了一下,解决办法如下. 找到auth.py文件 locate auth.py |grep bcloud 结果 ...
- css浏览器兼容问题
https://www.douban.com/group/topic/4629864/
- 编译器 cc、gcc、g++、CC 的区别
gcc 是GNU Compiler Collection,原名为Gun C语言编译器,因为它原本只能处理C语言,但gcc很快地扩展,包含很多编译器(C.C++.Objective-C.Ada.Fort ...
- Go - 数组 和 切片(array、slice)
一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建 数组有 3 种创建方式: 1) [length]Type 2) [length]Type{value ...
- T-SQL备忘-表连接更新
1.update a inner join b on a.id=b.id set a.name=b.name where ... 2.update table1 set a.name = b.na ...
- Retroactive priority queues
http://erikdemaine.org/papers/Retroactive_TALG/paper.pdf 明天写..大概就是通过一些结论发现这个东西其实就是往最后的集合里加入或删除一些可以被快 ...
- [Linux]Linux系统调用列表
本文列出了大部分常见的Linux系统调用,并附有简要中文说明. 以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数.这可能是你在互联网上所能看到的唯一一篇中文注释的 ...
- MST 001
一.String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的? 答: 1.String是字符串常量,StringBuffer和StringB ...