IPv6 和 IPv4 的对比
IPv6 产生原因: IPv4 地址空间已经消耗殆尽, 近乎无限的地址空间是 IPv6 的最大优势
IPv6 的基本报头在 IPv4 报头的基础上, 增加了流标签域, 去除了一些冗余字段, 使报文头的处理更为简单, 高效
扩展报头提供报文转发信息, 并不会被路径上所有路由器解析, 一般只会被目的路由器解析处理 除了逐条选项扩展头之外, 其余扩展头在传输路径中不被路由器查看这种机制保证了路由器只查看和选路相关的基本字段, 保证了转发数据的高效.
网络层一般要限制每次发送数据帧的最大长度. 任何时候 IP 层接收到一份要发送的 IP 数据时, 它要判断向本地哪个接口发送数据, 并查询该接口获得其 MTU.IP 层把 MTU 与要发送的数据包长度进行比较, 如果数据包的长度比 MTU 值大, 那么 IP 层就需要进行分片, 分片后的数据可以小于等于 MTU
? IPV4 中, 分片, 假设 PC1 流出来的报文为 1500 的, 在 R1 分成 2 片最后一跳由 PC2 把他重组起来, 中间路由器负责分片, 由目标主机负责重组, 中间路由负责分片, 也会引入额外的开销
? IPv6 中, 中间的 IPV6 路由器不负责分片 PC1 发一个 1500 的数据包的时候, 由于 R1 的 MTU,R1 就会把包 drop 掉会给源端回一个 ICMPV6 的差错控制, 同时会在里面加上去 MTU=1400 PC 机再往下发包的时候, 就按 1200 发包, PC1 会先分好片, 然后发送出来
IPv6 的地址格式
? IPv6 地址长度为 128 比特, 每 16 比特划分为一段, 每段由 4 个十六进制数表示, 并用冒号隔开(简称冒号分 16 进制)
? IPv6 地址包括网络前缀和接口标识两部分
? 1111:2222:3333:4444:aaaa:bbbb:cccc:dddd 64 冒号分 16 进制
十六进制 0 1 2 3 4 5 6 7 8 9 a b c d e f
16 进制 二进制
- 1 -----0001
- a -----1010
- f -----1111
- e -----1110
- 1111 -----0001000100010001
网络前缀 --- 网络位 接口标识 --- 主机位 前缀长度 --- 掩码
1111:2222:3333:4444:aaaa:bbbb:cccc:dddd 64
IPV6 地址 掩码
IPV6 地址地址优化
? 规定 1: 每一组中的前导 0 都可以省略.
? 规定 2: 地址中包含的连续全为 0 的组, 可以用双冒号:: 来代替.
需要注意的是, 在一个 IPv6 地址中只能使用一次双冒号::
把 IPV6 的地址每一组中 (一共有 8 组) 前面前导的 0 可以省略
- 0002:3030:0000:2000:acb4:0000:0000:1000
- 2:3030:0:2000:acb4:0:0:1000
IPV6 地址当中可以把连续全为 0 的组用我们双冒号代替 (::) 这个:: 只能在 IPv6 地址当中出现一次
- 0002:3030:0000:2000:acb4:0000:0000:1000
- 2:3030:0:2000:acb4::1000
2019::1 也就是
- 2019:0000:0000:0000:0000:0000:0000:0001
- 2019::1
2001:0DB8:0000:0000:0000:0000:032A:2D70 此 IPv6 地址压缩到最短是多少?
答案: 2001:DB8::32A:2D70
什么是 EUI_64
? 将 FFFE 插入 Mac 地址的前 24 位与后 24 位之间, 并将第 7 位的 0 改为 1 或者 1 改为 0(把第七位进行反转)即可生成接口 ID.
? 接口 ID 可以由 EUI-64 方式获得
举例: Mac 地址: 00e0-fcf4-14bc
第一步: 00e0-fc FFFE f4-14bc
0000 0000 第七比特就是 0 反转后就是 0000 0010 就是我们的 02
第二步: 生成 eui-64 的地址: 02eo-fcff-fef4-14bc
IPv6 地址的分类
IPv4 支持单播, 组播, 广播地址
IPv6 支持单播, 组播, 任播地址
单播地址
2 开头 IPV6 地址
全球单播地址带有固定前缀, 类似于 IPv4 中的公网地址
配置 IPv6 单播地址
FE80IPV6 地址
链路本地单播地址前缀为 FE80::/10, 类似于 IPv4 中的私有地址. 链路本地地址只能在连接到同一本地链路的节点之间使用. 它使用了特定的本地链路前缀 FE80::/10(最高 10 位值为 1111111010), 接口 ID 使用 EUI-64 自动生成, 也可以使用手动配置
当一个节点启动 IPv6 协议栈时, 启动时节点的每个接口会自动配置一个链路本地地址(其固定的前缀 + EUI-64 规则形成的接口标识). 这种机制使得两个连接到同一链路的 IPv6 节点不需要做任何配置就可以通信. 所以链路本地地址广泛应用于邻居发现, 无状态地址配置等应用. 同时, OSPFv3,RIPng 等协议都工作在该地址上. 以链路本地地址为源地址或目的地址的 IPv6 报文不会被路由设备转发到其他链路
Link-local 怎么 ping?
善于利用百度寻找答案
查看自己电脑的 link-local 地址
唯一本地地址
唯一本地地址的作用类似于 IPv4 中的私网地址, 任何没有申请到提供商分配的全球单播地址的组织机构都可以使用唯一本地地址. 唯一本地地址只能在本地网络内部被路由转发而不会在全球网络中被路由转发
Prefix: 前缀; 固定为 FC00::/7.
L:L 标志位; 值为 1 代表该地址为在本地网络范围内使用的地址; 值为 0 被保留, 用于以后扩展.
Global ID: 全球唯一前缀; 通过伪随机方式产生.
Subnet ID: 子网 ID; 划分子网使用.
Interface ID: 接口标识.
唯一本地地址具有如下特点:
具有全球唯一的前缀(虽然随机方式产生, 但是冲突概率很低)
可以进行网络之间的私有连接, 而不必担心地址冲突等问题
具有知名前缀(FC00::/7), 方便边缘设备进行路由过滤
组播地址
IPv6 的组播与 IPv4 相同, 用来标识一组接口, 一般这些接口属于不同的节点
? 前缀: IPv6 组播地址的前缀是 FF00::/8
? 标志字段(Flag): 长度 4bit, 目前只使用了最后一个比特(前三位必须置 0), 当该位值为 0 时, 表示当前的组播地址是由 IANA 所分配的一个永久分配地址; 当该值为 1 时, 表示当前的组播地址是一个临时组播地址(非永久分配地址)
? 范围字段(Scope): 长度 4bit, 用来限制组播数据流在网络中发送的范围
? 组播组 ID(Group ID): 长度 112bit, 用以标识组播组. 目前, RFC2373 并没有将所有的 112 位都定义成组标识, 而是建议仅使用该 112 位的最低 32 位作为组播组 ID, 将剩余的 80 位都置 0 这样每个组播组 ID 都映射到一个唯一的以太网组播 Mac 地址
常见的组播地址
所有 IPv6 组播地址都以 FF 开始 IPv6 为需要使用组播发送数据的协议预留了一些组播组
被请求节点组播地址
被请求节点组播地址通过节点的单播或任播地址生成. 当一个节点具有了单播或任播地址, 就会对应生成一个被请求节点组播地址, 该地址主要用于邻居发现机制和地址重复检测功能
IPv6 中没有广播地址, 也不使用 ARP. 但是仍然需要从 IP 地址解析到 Mac 地址的功能. 在 IPv6 中, 这个功能通过邻居请求 NS(Neighbor Solicitation)报文完成. 当一个节点需要解析某个 IPv6 地址对应的 Mac 地址时, 会发送 NS 报文, 该报文的目的 IP 就是需要解析的 IPv6 地址对应的被请求节点组播地址; 只有具有该组播地址的节点会检查处理.
被请求节点组播地址由前缀 FF02::1:FF00:0/104 和单播地址的最后 24 位组成
查看如下接口的配置
- interface GigabitEthernet0/0/0
- ipv6 enable
- ipv6 address 2019::1/64
- #
- [R2]display ipv6 interface GigabitEthernet 0/0/0
- GigabitEthernet0/0/0 current state : UP
- IPv6 protocol current state : UP
- IPv6 is enabled, link-local address is FE80::2E0:FCFF:FE8E:302A
- Global unicast address(es):
- 2019::1, subnet is 2019::/64
- Joined group address(es):
- FF02::1:FF00:1
- FF02::2
- FF02::1
- FF02::1:FF8E:302A
- MTU is 1500 bytes
- ND DAD is enabled, number of DAD attempts: 1
- ND reachable time is 30000 milliseconds
- ND retransmit interval is 1000 milliseconds
- Hosts use stateless autoconfig for addresses
任播地址
任播地址用来标识一组网络接口, 在给多个主机或者节点提供相同服务时提供冗余和负载分担
配置 IPv6 任播地址
特殊地址
::/128 未指定地址
::1/128 环回地址
来源: http://www.bubuko.com/infodetail-3339800.html