一、 IPV4缺点
- IPV4地址空间不足(划分不合理,地址浪费)
- IPV4具有复杂的头部
- IPV4头部安全性较低
- IPV4地址不能作为标识符和定位符
二、 改进IPV4缺点 - 使用私有地址,进行NAT转换(破坏数据端到端的连接,做认证,加密不易实现
NAT非常消耗路由器资源) - DHCP
- VLSM子网划分 CIDR子网汇总 (两者并不是节约IP地址,只是充分利用)
三、IPV6优点
巨大地址空间
简单头部
支持可移动性和安全特性(任意播)
IPV6支持穿越IPV4
IPV6没有校验和、没有广播
IPV4 IPV6 数据包头比较
Version:版本,描述数据包的IP版本号,4bit,4个字段设置为二进制的0100表示ipv4。
IHL: header length,字段长度4bit,观察数据包结构,不算最后一行的可选项,每一行是32bit,也就是4字节,所以最小数据包长度为20字节,但是默认首部长度是0101,5又如何能代表20字节呢,所以单位并不是一个bit,单位表示是32bit,则最小的IP报头为20字节,4bit的二进制最大表示为1111,所以最大的IP报头为60字节,所以范围是20-60字节,但是并不是任意数字,当IP头部长度不是4的倍数的时候,必须用最后的填充字段填充。
Type of service :TOS,服务类型,8bit长度,用来标识不同流量,保留第八位。一般不会使用,只有在区分服务时,这个字段才会起作用。做QOS使用,分为TOS标记与DSCP标记,TOS标记前三位(0 1 2),DSCP区分服务代码点,用前6bit,分配越多,QOS更强大,现在使用的PHB,解决两者兼容性,后面两位表示拥塞位。
Total length:数据包总长度,16bit,其中包括IP报头以及数据。IP数据包总长度减去IP报头长度,得出数据包数据有效载荷的大小。IP数据包总长度最大是65535。
Identification:标识位,占16位,设置这个字节的原因是因为IP软件在存储器中维持一个计数器,每产生一个数据包,计数器就加1,这个时候就会把这个数字赋给标识符了,这个标识位并不是序号,因为数据包不存在按序接收的问题。当数据报由于长度超过网络的 MTU 而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中.相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报.
Flags:标记字段,3bit。第一位不使用,第二位是不分段位(DF),DF为1时表示不分段;第三位是更多分段(MF)位,一般除了最后一个数据包分片MF位为0,其他的都为1。
Fragment offset:分段偏移,13bit,标明分段起始点对于报头起始点的偏移量。分段可能会出现顺序错误,因此分段偏移字段可以确保正确的顺序。以 8个字节为偏移单位,这就是说,每个分片的长度一定是 8字节(64位)的整数倍.
Time to live:生存时间,TTL,8bit,防止数据无休止被传输。最初设置时候表示时间,现在表示跳数,当跳数为0的时候,数据包会被丢弃。
Protocol:协议,8bit,指定了数据包的信息类型以及描述上层使用何种协议和封装。ICMP 1 IGMP 2 OSPF 88 EIGRP 89
Header checksum:报头校验和,16bit,针对IP报头的纠错字段,IP报头是否完整。这是因为数据报每经过一个路由器,都要重新计算一下首都检验和 (一些字段,如生存时间,标志,片偏移等都可能发生变化)Source and destination address:32bit。
Options:可选项,主要用于测试,支持排错以及安全措施。如:松散路由,严格路由,记录路由以及时间戳(让每个路由器都记下IP数据报经过每一个路由器的IP地址和当地时间)。可选项的最大长度是40字节,能说明可以记录10个IP地址吗?不行,最多为9个,还有其他时间戳等属性占一定长度。
Padding:填充,在可选项字段后加0来补足32位或者32的倍数。
Version 版本,4bit,0110
Traffic class:流量分类,8bit
Flow label:流标签,20bit,暂时保留
Payload length:负载长度,8bit,IPV6数据包数据长度,IPV4里的总长度减去头部长度
Next header:下一个头部,8bit,与protocol一致,不一样的是IPV6有扩展头部,比如认证头,选路头,路由头等。
Hop limit:跳数,与TTL一样
四.IPV6地址书写
IPV6使用128 bit构成,使用十六进制书写(32个十六进制数),分为八组,每组四个
2001:0:101:1100:0:0:0:1011
2001:0:101:1100::1011
2001::101:1100:0:0:0:1011
书写方式:1.首选格式 2.压缩格式 3.IPV6兼容性地址
1.首选格式,直译
2.压缩格式:
1.若某组以0开始,则该可以省略 ,整组为0可以省略为0
2.若某组全为0或连续多个组都为0可以省略为::,::仅能使用一 次
2001:11:0:23ab:0:0:0:1111
2001:11::23ab:0:0:0:1111
2001:11:0:23ab::1111
2001:11::23ab::1111
3.IPV6到IPV4兼容性地址
主要在IPV4向IPV6过渡时使用的技术,自动tunnel使用地址
将IPV4地址映射至IPV6地址(该IPV4地址为公有地址)
比如:10.20.30.42/24
0000 1010.0001 0100.0001 1110.0010 1010
0814:1E2A:
2002:814:1E2A::/48 2002是固定的
五.IPV6地址分类
IPV6单播地址 IPV6组播地址 IPV6任意播地址
IPV6单播地址:
1.全球单播地址:AGUA,全球可聚合单播地址
2000::/3地址进行分类
最小地址:2000:0000:0000:0000:0000:0000:0000:0000
最大地址:3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
2001::/16 商用internet地址
2002::/16 IPV6兼容性地址
3FFF::/16 非商用internet地址,教育网
2.link-local 地址,链路本地地址 标识在网络中的唯一性,类似于Mac地址
动态路由学习的下一跳地址也为link-local地址
FE80::/10地址范围
Link-local地址使用eui-64产生主机位
1.将接口MAC地址中间拆开
2.将FF-FE插入
3.将第七bit反转
Ca01.d170.0006——Ca01.d1FF.FE70.0006——C801.d1FF.FE70.0006——
FE80 ::C801:D1FF:FE70:0006
注意:在非以太网接口上不存在MAC地址,使用本设备上接口最小 MAC地址进行EUI-64转换,一般为F0/0接口MAC地址
3.FEC0::/10 , 私有IPv6地址,该地址段已被收回
4.环回地址 ::1/128 ,本地环回地址,相当于IPV4中的127.0.0.1
5.无效地址 ::
IPV6组播地址:
FF00::/8
被请求源组播地址:FF02::1:FF00:0,在局域网中类似于广播地址(当配置了AGUA地址后,会自动产生站点本地地址,将后24位作为补充,)
FF02::1:FFxx:xxxx,一般用于发送本地信令帧时使用,例如ARP
IPV6任意播地址:就等于IPV6 单播地址(1对最近传输nearest)
Ipv6支持多宿主,一个接口可以配置多个IPV6地址,所以一般配置一个任意播地址和AGUA地址
六.ICMPV6协议----互联网消息控制协议
Type : 类型字段. 类型字段范围0-255
0-127,ICMPV6中的错误报文(error)
128-255,信令报文
1.ICMPV6路径MTU协商,从源到目标感知整条路径上最小的MTU值.
2.NDP:邻居发现协议
ICMPV6 代替ARP功能,使用ICMPV6类型135NS(邻居发现)和类型 136的 NA(邻居通告)学习对方的MAC地址
Type 135:
IPV6组播MAC地址,将被请求源组播地址后32位前加上33:33构成组播MAC地址
Type 136
地址无状态化自动配置:
使用ICMPV6中类型133 RS(路由发现)和类型 134 RA(路由通告) 进行网络前缀通告(使用RA携带,周期间隔为200s,超时时间为 1800s)
首先可以手动配置IPV6地址与link-local地址(注意link-local必须是fe80开头的)
而动态获取地址时候成为自动化配置,分为有状态化(采用DHCPV6)自动配置与无状态化(ICMPV6协议中的auto-config)自动配置。
无状态化意思就是地址推送,一个路由器上面有地址,对端路由器没有地址,可以直接把自己的网络前缀推送过去,加上eui-64成为对端的IPV6地址,前提推送地址的一方开启了IPV6的路由功能,若不开启,前缀推送功能是不会开启的。
有状态化就是限制了网络前缀,可以穿越路由器分配地址,地址池并不是接口的IPV6地址网段(与IPV4 DHCP不一样)
Link-local地址是必然存在的
Type 133:(希望获取的地址发送)
Ff02::2相当于224.0.0.2,只有路由器开启了IPV6的单播功能,才会接收这个报文
Type 134:(R1的link-local地址给R2的link-local地址)
当然R1也可以禁止通告前缀
IPV6地址有状态化自动配置------DHCPV6协议
使用报文:
1.源地址为自己的link-local地址,目标地址为FF02::1:2
2.advertise 和 reply中使用单播发送
3.DHCPV6 地址池必须在接口中调用
4.DHCPV6分配的地址可以和调用接口不在同一网段
5.接口必须关闭地址的无状态自动分配功能
Sever端
定义DHCPV6地址池
接口配置
客户端查看
DAD:重复地址检测 (代替无故ARP的)
使用type 135: NS 请求自己IP地址对应的MAC地址,
源IPV6地址为:::
目标IPV6地址:自己AGUA地址对应的site-local地址(指定源组播地址)
在目标IPV6地址中使用自己IP地址对应的被请求源组播地址.