为什么要部署ipv6?
最主要的原因是ipv4地址不够用了,所以开发ipv6 而开发出的ipv6带来的额外的好处是:
1.安全性,因为ipv6自带了AH或ESP
2.移动性
3.包头简单,效率高
4.自动配置
关于ipv6的基础知识:
1.长度是128位,ipv4是32位
2.头部长度是40字节,ipv4是20字节
关于IPv4和IPv6包头的对比
IPv4 and IPv6 Header Comparison
1.IPv4包含12个字段,IPv6包含8个字段
2.关于IPv4包头
Version(版本):该字段占4位,且是4
IHL(包头长度):该字段占4位,表示IPv4的头部长度,一般情况下是5,即5*4=20字节
Type of Service(服务类型):该字段占8位,用来做QoS Total Length(总长度):该字段占8位,表示IPv4包的总长Identification(标识):该字段占16位,默认是标识主机发送的数据段,通常是每发送一个数据段后加一
Flags(标志):该字段占3位,
第一位是保留的,还未使用
第二位是DF位,即不分段位,如果取0,表示可以分段,如果取1,表示不可以分段
第三位是MF位,即更多段位,如果取0,表示该包是最后的包,如果取1,表示该包后面还有更多的包
Fragment Offset(分段偏移):该字段占13位,用来表示该分段相对于第一个分段的偏移
Time to Live(TTL,即生存时间):该字段占8位,每经过一台路由器减一,为0时丢弃
Protocol ID(协议ID):该字段占8位,用来反映上层
Header Checksum(头部校验和):该字段占16位,用来做头部的校验
Source Address(源地址):该字段占32位
Destination Address(目标地址):该字段占32位
Options(可选项):如果使用可选项,有可能IPv4包头会比IPv6包头还要大
Padding(填充项)
注意:
(1)Identification,Flags,Fragment Offset这3个是用来做数据报分段的
(2)每经过一台路由器,TTL值减一,此时头部的校验和要重新计算一次
3.关于IPv6包头
Version(版本):该字段占4位,且是6
Traffic Class(流量类别):该字段占8位,相当于IPv4中的Type of Service(服务类型),用于做QoS
Flow Label(流标签):该字段占20位,说白了就是同样的流打相同的标签
Payload Length(有效负载长度):该字段占16位,相当于IPv4中的总长度-头长度
Next Header(下一跳报头):该字段占8位,相当于IPv4中的Protocol ID字段
Hop Limit(跳数限制):该字段占8位,相当于IPv4中的TTL字段
Source Address(源地址):该字段占128位
Destination Address(目标地址):该字段占128位
注意:
IPv6中没有头部校验和字段,原因是数据链路层有校验和,所以不需要了。但是上一层,TCP或者UDP必须要有校验和
关于扩展包头
IPv6 Extension Headers
Simpler and more efficient header means:
?IPv6 has extension headers.
?It handles the options more efficiently.
?It enables faster forwarding rate and end nodes processing.
1.扩展包头的好处:IPv6提供了能够更有效地处理选项的扩展包头,这有助于提高转发速度,并让终端节点能够更快地处理分组,可以增加各种功能
2.6大扩展包头,这6大扩展包头的顺序如下:
(1)Hop-By-Hop Options(逐跳选项扩展包头):Next Header=0,该包头用于路由器提示(router alert)和组播侦听者发现(Multicast Listener Discovery,MLD)。
(2)Destination Options(目标选项扩展包头):Next Header=60,有两种情况,如果该包头紧跟在逐跳选项包头的后面,那么最终目标节点和路由选择扩展包头中指定的每个目标节点都会查看,如果该包头紧跟在ESP包头的后面,只有最终目标节点对其进行处理。该包头的另一种用途是Mobile IPv6
(3)Routing(路由选择扩展包头):Next Header=43,该包头用于源路由选择和Mobile IPv6。
(4)Fragment(分段扩展包头):Next Header=44,该包头完
成IPv4中第二行那三个字段的功能
(5)Authentication(认证扩展包头,包括AH和ESP):Next Header=51或50,用于提供分组的认证,完整性和机密性
(6)Upper-Layer(上层扩展包头,包括TCP和UDP):Next Header=6或17,也就是第4层的东西
即:
例子:
注意:
(1)只有逐条选项扩展包头才是每个节点都是必须查看的,其他的包头只有目标节点才会查看
关于MTU发现
在IPv4中,如果分组过大,由路由器执行分段操作,这非常的不好在IPv6中,有所改进。分组与分段都是有主机来完成,即在一个会话中,
发送分组以前,源主机会探测以下路径中最佳MTU,
在发现过程中,不断的改变MTU的大小,最终得到最佳的MTU,这个过程就是MTU发现
可以说,MTU发现时IPv6的一个特色
关于IPv6地址
IPv6地址占128位,口诀:8个16位
例如:
3ffe:1944:0100:000a:0000:00bc:2500:0d0b
ff02:0000:0000:0000:0000:0000:0000:0005--------ff02::5
有两种规则可以简写IPv6地址:
1.在每个16位的段中如果开头是0,可以省去
即上面的例子可以缩写为:
3ffe:1944:100:a:0:bc:2500:d0b
ff02:0:0:0:0:0:0:5
2.如果有一个或者是多个16位的段是全0,则可以用::表示
即上面的例子可以进一步缩写为:
3ffe:1944:100:a::bc:2500:d0b
ff02::5
注意点:
(1)每个16位的段尾部的0不能省去,防止混淆
(2)每个缩写的IPv6地址中最多出现一次::,防止混淆
例子:2001:0d02:0000:0000:0014:0000:0000:0095 则下面两种缩写都是正确的:
2001:d02::14:0:0:95
2001:d02:0:0:14::95
但是如果写成下面的就是错的
2001:d02::14::95
原因是计算机无法还原出源地址,计算机会误认为下面几种地址:2001:0d02:0000:0000:0014:0000:0000:0095 2001:0d02:0000:0000:0000:0014:0000:0095 2001:0d02:0000:0014:0000:0000:0000:0095
关于IPv6的掩码
IPv6不使用“全1表示网络位,全0表示主机位”的方法表示掩码
而是使用“/xx”的方法
即3ffe:1944:100:a::bc:2500:d0b/64
如果表示路由条目的话就是:
3ffe:1944:100:a::/64
记几种特别的:
::/0 表示缺省路由
::/128 表示未指定地址,一般用在NDP协议中
::1/128 表示回环地址,相当于IPv4中的127.0.0.1
关于IPv6地址类型
口诀:单播,组播,任意播
注意:IPv6中没有广播地址
IPv6中的单播按范围分为:
(1)本地链路单播地址(Link-Local Unicast):FE80::/10 (2)本地站点单播地址(Site-Local Unicast):FEC0::/10 (3)全局单播地址(Global Unicast Addresses):2xxx::/4或3xxx::/4====2::/3
1.关于全局单播地址(Global Unicast Addresses)
地址格式:
一般来说,Subnet ID是16位,Interface ID是64位
地址范围:前3位是001,也就是说全局单播地址第一个16位段的第一个十六进制位是2或者3,表示为2xxx::/4或3xxx::/4
现在
2001是正在使用的全局单播地址,
2002用来做6-to-4隧道的
3ffe是使用在6Bone网中的
2.本地链路单播地址(Link-Local Unicast Addresses)
口诀:本地有效
以FE80::/10开头,即1111111010
说明:本地链路地址是非常有用的,与IPv4中不同,通信和标识都是使用一个地址,而在IPv6中,通信使用的是本地链路地址,标识使用的是全局单播地址。NDP协议中也是使用到了本地链路地址3.本地站点地址(Site-Local Unicast)
口诀:站点有效,基本不用
以FEC0::/10开头,即1111111011
什么是站点?说白了就是一个管理域,例如矿大,南大等等
在不同的站点可以使用相同的地址,所以说本地站点地址有点像IPv4中的私有地址
4.关于任意播地址(Anycast Addresses)
口诀:多个设备,单个地址
例子:
注意:
(1)路由器每次都是选择最近的
(2)任意播使用的地址和全局单播地址是一样的
5.关于组播地址(Multicast Addresses)
地址格式:
Multicasting
flags字段:如果是0,表示永久性的,如果是1,表示暂时性的scope字段:表示范围
Group ID字段:用来指定组
地址范围:FF00::/8
Examples of Permanent Multicast
Addresses
关于MAC-to-EUI64
口诀:分、插、改
3步走:
1.将MAC地址从中间分开
2.将FFFE插入
3.改第7位为1
第7位被称为全局/本地位(U/L),用于指出接口标识符在链路上是本地唯一还是全局唯一的。使用以太网的MAC地址创建接口标识符时,由于MAC地址是全局唯一的,因此接口标识符也是唯一的,所以U/L被设置成1
关于ICMPv6
ICMPv6像Ipv4中的ICMP消息一样,用来交换和处理错误信息
在IPv4中,ICMP的协议号是1
在IPv6中,ICMPv6的下一包头是58
ICMPv6能完成许多事情,如上面的MTU发现功能就是使用ICMPv6,
NDP协议也是使用的ICMPv6
关于NDP协议(Neighbor Discovery Protocol)
IPv6除了增大了地址空间以外,可以说NDP协议是最有特色的了,IPv6的很多优势都是通过NDP来完成的
口诀:NDP9功能,5消息
NDP可以实现下面功能:
1.Router Discovery(路由器发现):节点可以发现路由器的功能
2.Prefix Discovery(前缀发现):节点可以发现路由前缀
3.Parameter Discovery(参数发现):节点可以发现一些参数,如链路MTU、跳数限制等等
4.Address Autoconfiguration(地址自动配置):节点可以自动学习到地址,不需要DHCP的分配
5.Address Resolution(地址解析):节点可以解析链路层地址,不需要ARP的解析
6.Next-hop Determination(下一跳确定):节点可以确定下一跳链路层地址,个人感觉很像第5跳
7.Neighbor Unreachability Detection(邻居不可达检测):节点可以检测到本链路的邻居不可达了,可以使主机也可以是路由器8.Duplicate Address Detection(重复地址检测):检测是否有重复地址,类似于IPv4中的无故ARP
9.Redirect(重定向):重定向功能
其中第4条是最有特色的,也叫做无状态自动配置
注意:
(1)NDP消息仅在本链路范围内有效
(2)NDP消息是封装在本地链路地址中的,或者是在组播地址中,且这个组播地址的范围是链路本地
(3)NDP消息的Hop Limit默认是255,如果一台路由器收到的NDP消息的Hop Limit小于255,则丢弃该数据报,原因是该路由器认为这个NDP消息跨网段了
(4)NDP消息其实就是ICMPv6消息
关于NDP的五个消息
1.Router Solicitation(RS,type=133,code=0):主机发送,用于请求RA消息
2.Router Advertisement(RA,type=134,code=0):路由器发送,用于通告自身的存在和一些参数,如链路前缀,MTU和hop limits。两种发送方式:定期发送,或者是回应RS消息
3.Neighbor Solicitation(NS,type=135,code=0):节点发送,用于请求请求另一个节点的链路层地址,其他功能是用于复制地址检测,和邻居不可达检测
4.Neighbor Advertisement(NA,type=136,code=0):节点发送,用于响应NS消息。如果一个节点的链路层地址改变了,他会发送NA消息通告新地址
5.Redirect(type=137,code=0):和IPv4中的重定向是一个作用
关于无状态自动配置(Stateless Autoconfiguration)
口诀:无状态自动配置2步走
步骤一:
A Standard Stateless Autoconfiguration
?Stage 1: The PC sends a router solicitation to request a prefix
for stateless autoconfiguration.
步骤二:
?Stage 2: The router replies with a router advertisement.
A Standard Stateless Autoconfiguration
(Cont.)
总述:
Stateless Autoconfiguration
关于IPv4到IPv6的过渡
1.IPv4和IPv6需要在很长的一段时间里共存
2.IPv4中的NAT和CIDR两种技术延长了IPv4的寿命
3.IPv4过渡到IPv6使用的两种技术是双栈和隧道
关于双栈(Dual Stack)
Cisco IOS Software Is IPV6-Ready:
Cisco IOS Dual Stack
?If both IPv4 and IPv6 are configured on an interface, this
interface is dual-stacked.
关于隧道
隧道技术分为两种类型:手工配置隧道和自动隧道
手工配置隧道又分为:Manual Tunnel(RFC 2893)和GRE (RFC2473)两种类型
自动隧道又分为:隧道代理(Tunnel Broker)、6to4隧道、ISATAP (Intra-Site Automatic Tunnel Addressing Protocol)隧道、TEREDO隧道、MPLS隧道、兼容地址自动隧道等。其中兼容自动隧道方式已经不推荐使用。
配置隧道和6-to-4隧道
Cisco IOS Software Is IPv6-Ready:
Overlay Tunnels
?Tunneling encapsulates the IPv6 packet in the IPv4 packet.
(1)关于配置隧道
Example: Cisco IOS Tunnel Configuration
(2)关于6-to-4隧道
Cisco IOS Software Is IPv6-Ready: 6to4 Tunneling
6to4
?Is an automatic tunnel method
?Gives a prefix to the attached IPv6 network
关于
NAT-PT
?NAT-Protocol Translation (NAT-PT) is a translation mechanism that sits between an IPv6 network and an IPv4 network.
?The job of the translator is to translate IPv6 packets into IPv4packets and vice versa.
Translation —NAT-PT