1 Star 0 Fork 11

coder_lw / wiki

forked from deepinwiki / wiki 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
ipv6.md 6.00 KB
一键复制 编辑 原始数据 按行查看 历史
htqx 提交于 2021-07-04 18:17 . 大量本地更新

[TOC]

ipv6 简介

前言

ipv4 版本已经用了三四十年了,而 ipv6 是最新的版本。为什么要学习 ip 知识,这是为了我们方便家庭布网和网络调试。

ipv6 对 ipv4 进行了比较大的改革,有很多概念需要去学习理解,因此我认为有必要单独进行研究。

网络地址

ipv6 总长 128 比特,相对 32 位的 ipv4 而言,ipv6 表示这么长的地址,就不能用 255.255.255.255 这类方法了,否则就太长难以阅读和书写。 ipv6 表示成16进制数, 即将 255.255.255.255 表示成 ff.ff.ff.ff,然后它将原本的一字节(8bit)扩张到二字节(16bit),即 ffff.ffff, 分隔符由 . 改为冒号 : ,因此整个 ipv6 地址是: ffff.ffff.ffff.ffff.ffff.ffff.ffff.ffff,貌似也很难阅读,但每组的前导 0 可以省略为 0。 多组 0 可以省略为 :: ,比如 ::1 表示 0000.0000.0000.0000.0000.0000.0000.0001 , 但只允许省略一次。

ip 可以划分网络号(前缀)和主机号(或接口号),一般有两种表示方法,ip + 掩码 255.255.255.0; 另一种是 ip/前缀长度,如:168.192.0.1/24。他们都表示前 24 位是网络号。ipv6 采用后一种方式。

网络号的作用是划分一个子网络,里面的设备拥有相同的网络号,但不同的主机号,他们之间可以不借助路由器直接访问(可以通过交换机,注意路由器也带交换机功能)。而不同子网之间应该借助路由器的wan口(转发)来访问。

因为 ipv6 特别长的网络位数,所以它可以任性的采用一些自动化方法生成 ip,而不需要人工参与配置,并且不会出现 ip 冲突。 eui-64 是其中一种方法,它的后 64 位由 MAC24 + FFFE + MAC24 组成,其中 MAC 是 48bit 的硬件地址。组成之后将第 7bit 改为 1. 例如:MAC地址:000E-0C82-C4D4;转换后:020E:0CFF:FE82:C4D4。最好辨认的特征就是位于中间的 ff:fe。

从用途分类,ipv6 分:

  1. 单播:信息只发给标识该地址的接口
    1. 未指定地址: ::/128
    2. 环回地址: ::1/128
    3. 全球单播地址(公网地址):全球路由前缀(48bit) + 子网(16bit) + 接口(64bit),目前只分配了 2 开头的公网 ip
    4. 链路本地地址(邻居发现,无状态地址配置):FE80::/10 + 零(54bit) + 接口(64bit)
    5. 唯一本地地址(私网地址):FC00::/7 + 1 + 全球唯一前缀(40bit) + 子网(16bit) + 接口(64bit),即典型地址 fdzz:zzzz:zzzz:xxxx:yyyy:yyyy:yyyy:yyyy,其中x是子网,y是接口,z是随机生成的全球唯一前缀。
  2. 任播:信息发给其中一个标识该任播地址的接口
    1. 共享单播地址,只能分配给路由作为目的地址使用
    2. 子网路由器任播地址: 子网(nbit) + 零(128bit - n)
  3. 组播:信息发给所有标识该组播接口的接口
    1. 本地所有节点: FE02::1
    2. 本地所有路由: FE02::2
    3. 组播地址:FF00::/8 + 标志(4bit) + 范围(4bit) + 零(80bit)+组ID(32bit)
      1. 标志:0 永久;1 临时
      2. 范围: 1 本地;2 链路;5 站点;8 组织;E 全球
    4. 被请求节点组播地址(地址重复检测):FF02::1:FF00:0/104 + 单播 ip 低 24bit
  4. 特殊用途
    1. 6to4 隧道tunneling: ::ffff:a.b.c.d/96
    2. 文档:2001:db8::/32
    3. teredo 隧道:2001:0::/32
    4. 6to4 隧道:2002::/16 + ipv4

管理协议

ipv6 不支持 nat,因为地址足够多。

ICMPv6(因特网控制消息协议 Internet Control Message Protocol for the IPv6):

  1. 邻接点发现
  2. 无状态地址配置
  3. 重复地址检测
  4. PMTU发现

NDP(邻居发现 Neighbor Discovery Protocol):

  1. 取代 ARP(地址解析协议Address Resolution Protocol) 和 ICMP 路由发现
  2. 基于ICMPv6
  3. 功能:地址解析、邻居可达性检测、重复地址检测、路由发现、地址自动配置、重定向
  4. A请求B接口MAC地址过程: A(NS 邻居请求报文) --> B(被请求节点组播地址) --> B(NA 邻居通告报文) --> A(单播地址)

邻居状态:

  1. Incomplete(未完成):准备阶段,根据结果进入空或者可达
  2. Reachable(可达):正常
  3. State(陈旧):正常时间超时,或收到错误的MAC地址报文
  4. Delay(延迟):不积极探查
  5. Probe(探查):积极探查
  6. Empty(空):无效可删除

DAD(重复地址检测 Duplicate Address Detect):

  1. 过程: A(NS) --> 被请求节点组播地址 --> B(NA) --> 本地所有节点 --> A(::)

路由器发现:

  1. A接口到B路由过程: A(RS 路由请求) --> B(FF02::2) --> B(RA 路由通告) -->A(FF02::1)

地址自动配置:

  1. 无状态自动配置(非DHCP):链路本地地址 --> DAD --> 路由器发现 --> 全球单播地址(RA 前缀 + 链路本地地址低位)

Path MTU(路径最大传输单元):

  1. 过程: A(1500) --> B(1400) --> C(1300) --> D(1600) ==> 1300
  2. 默认:1500,不得小于 1280

DHCPv6:

  1. 相比NDP的优势:DNS/NIS/SNTP服务器信息、规范网络前缀、控制 ip 分配
  2. 支持无状态和有状态两种配置方式
  3. 过程: 客户端(client) --> 代理(relay) --> 服务器(server)
  4. 服务器和中继代理的组播地址(链路范围):FF02::1:2
  5. 服务器组播地址(站点范围):FF05::1:3
  6. DHCPv6 PD(前缀分配 Prefix Delegation):由服务器分配前缀(长度一般小于64bit),PD 客户端路由再将前缀扩展到64bit前缀,继续分配给下级设备。该技术便于构建层次化的拓扑网络。

OSPFv3:

工具

ping 链路本地地址,需要指定接口,如:

# ping 链路本地地址 fe80::1c05:b89f:b2af:e039
# 指定网卡接口 enp4s0
ping -I enp4s0 fe80::1c05:b89f:b2af:e039

# ping 组播地址 FF02::1
# 组播地址会收到重复的回复(DUP!)
# 使用 -c 2 ,即 ping 两次,可以看到重复回复
ping -I enp4s0 ff02::1 -c 2

访问网址需要用中括号括起来:[ipv6]

links https://[::1]

查看路由表:

ip -6 route

参考

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/coder_lw/wiki.git
git@gitee.com:coder_lw/wiki.git
coder_lw
wiki
wiki
master

搜索帮助