2024年了你还不会IPV6?
1、地址长度
ipv4 :32位二进制,可表示232个ip,约4.2*109个
ipv6 :128位二进制,可表示2128个ip,约3.4*1038个
2、表示方法
ipv4 :
- 点分十进制 表示法:
X.X.X.X,每个X表示3个十进制数(或8个二进制位)11000000101010000100000000000001192.168.64.1
ipv6 :
冒分十六进制 表示法:X:X:X:X:X:X:X:X,每个X表示4个十六进制数(或16个二进制位)
0位压缩 表示法:::表示连续一段0,只能使用一次
* 128个`0` ->`0:0:0:0:0:0:0:0` -> `::`
* `FF01:0:0:0:0:0:0:1101` -> `FF01::1101`
内嵌IPv4 表示法:X:X:X:X:X:X:d.d.d.d,兼容ipv4,每个X表示16个二进制位,每个d表示8个二进制位
* `::192.168.0.1` -> `::C0A8:4001` -> `0:0:0:0:0:0:C0A8:4001`
3、loopback 回环地址
ipv4 :127开头的所有地址
127.0.0.1
ipv6 :
0:0:0:0:0:0:0:1::1
4、ip结构
ipv4 :
ip:
10101000.01000000.00000001 -> 192.168.64.1
mask 掩码,由于掩码前20位都是1,ip可以表示为192.168.1/20
11111111.11110000.00000000 -> 255.255.240.0
- 网络地址(网络号):用于标识一个网络,同一网络中的主机具有相同的网络号
- 主机地址(主机号)全为0
网络地址(网络号) = ip&mask 按位与运算
网络号:ip前20位 | 主机号:ip后12位
11000000.10101000.01000000.00000001 ip
11111111.11111111.11110000.00000000 mask
----------------------------------- &
11000000.10101000.01000000.00000000 -> 192.168.64.0
- 主机地址(主机号):用于标识网络中的具体主机,在同一网络中,不同主机的主机号不同
- 网络地址(网络号)全为0
主机地址(主机号) = ip^网络地址(网络号) 按位异或运算
10101000.01000000.00000001
11000000.10101000.01000000.00000000
----------------------------------- ^
00000000.00000000.00000000.00000001 -> 0.0.0.1
此子网主机号范围为0.0.0.1~192.168.64.254(去除网络地址和广播地址,这其中还有一个网关地址)
ipv6 :
- 网络前缀:n比特,相当于IPv4地址中的网络ID
- 接口标识:128-n比特,相当于IPv4地址中的主机ID
5、分类策略
ipv4 :
-
A类:
1.0.0.0~127.255.255.2550.0.0.0:默认路由地址,表示未知或未指定的目的地,可以标识任意地址127.0.0.1~127.255.255.255:回环地址
-
B类:
128.0.0.0~191.255.255.255- 二进制前两个位固定为
10 169.254.0.0~169.254.255.255:链路本地地址
- 二进制前两个位固定为
-
C类:
192.0.0.0~223.255.255.255- 二进制前三位固定为
110
- 二进制前三位固定为
-
D类:
224.0.0.0~239.255.255.255- 组播地址( 多播地址),不具备网络标识或主机标识
224.0.0.2所有支持组播路由器的地址
-
E类:
240.0.0.0~255.255.255.255- 保留用于实验,不具备网络标识或主机标识
-
单播地址:用于标识单个网络接口的地址,A向B发送数据包,数据包的源地址和目的地址就是单播地址
- 未指定地址:
0.0.0.0/32 - 环回地址:
127.0.0.1/32 - 全球单播地址:常见的
192.168.xxx.xxx等在互联网可全局路由的地址 - 链路本地地址:
169.254.0.0~169.254.255.255- 当一台主机无法通过 DHCP 等方式获取到 IP 地址时,它可能会自动配置一个链路本地地址,以便在本地网络中进行通信
- 未指定地址:
-
广播地址:用于将数据包发送到特定网络中的所有设备
- ip网络号部分全部设为1就是广播地址
网络号:ip前20位 | 主机号:ip后12位
11000000.10101000.01000000.00000001 ip -> 192.168.64.1
11111111.11111111.11110000.00000000 mask -> 255.255.240.0
11111111.11111111.11110000.00000001 广播地址 -> 255.255.240.1
- 组播地址(多播地址):用于将数据包发送到一组特定的设备,这些设备加入了同一个组播组。可以有效地减少网络流量,因为数据包只需要发送一次,就可以被多个感兴趣的接收者接收
ipv6 :
-
单播地址:用于标识单个网络接口的地址,A向B发送数据包,数据包的源地址和目的地址就是单播地址
-
未指定地址:
::/128 -
环回地址:
::1/128 -
全球单播地址:在互联网可全局路由的地址
- 由前缀(Global routing prefix)、子网ID(Subnet ID)和接口标识(Interface ID)组成
-
链路本地地址:以
FE80::/10开头的地址- 自动配置在每个 IPv6 接口上,链路本地地址仅在本地链路范围内有效,用于同一链路上的设备之间进行通信
-
-
组播地址(多播地址):用于将数据包发送到一组特定的设备,这些设备加入了同一个组播组。可以有效地减少网络流量,因为数据包只需要发送一次,就可以被多个感兴趣的接收者接收
-
任播地址:一组提供相同服务的主机共享的一个 IP 地址,当一个数据包发送到任播地址时,网络会将数据包路由到距离最近或最合适的一个主机
6、ip报文
ipv4 :
- 报头长度不固定,最小为20字节,包含源ip、目的ip地址、协议类型、生存周期(TTL)等
| 字段 | 长度 | 含义 |
|---|---|---|
| Version | 4 比特 | 表示 IP 协议的版本号,对于 IPv4,该值固定为 4。 |
| IHL(Internet Header Length) | 4 比特 | 互联网头部长度,指示 IP 报头的长度,以 32 位字为单位。最小为 5(5×32 位 = 20 字节),如果有选项字段,报头长度会增加。 |
| DS Field(Differentiated Services Field) | 8 比特 | 区分服务字段,用于指示不同类型的服务质量要求,包括优先级、延迟、吞吐量等。 |
| Total Length | 16 比特 | 整个 IP 数据包的长度,包括报头和数据,以字节为单位。 |
| Identification | 16 比特 | 标识字段,用于唯一标识一个 IP 数据包的分片。当一个数据包被分片时,所有分片都具有相同的标识值。 |
| Flags | 3 比特 | 标志字段,用于控制数据包的分片。包括“不分片(DF)”和“更多分片(MF)”等标志。 |
| Fragment Offset | 13 比特 | 分片偏移字段,指示分片在原始数据包中的位置,以 8 字节为单位。 |
| Time to Live(TTL) | 8 比特 | 生存时间,指定数据包在网络中可以经过的最大跳数。每经过一个路由器,TTL 值减 1,当 TTL 为 0 时,数据包被丢弃。 |
| Protocol | 8 比特 | 协议字段,指示 IP 数据包中封装的上层协议类型,如 TCP(6)、UDP(17)等。 |
| Header Checksum | 16 比特 | 头部校验和,用于检测 IP 报头在传输过程中是否发生错误。 |
| Source Address | 32 比特 | 源 IP 地址,即发送数据包的设备的 IP 地址。 |
| Destination Address | 32 比特 | 目的 IP 地址,即接收数据包的设备的 IP 地址。 |
| Options(可选) | 可变 | 选项字段,用于提供一些额外的功能,如记录路由、时间戳等。不是所有的数据包都有选项字段。 |
| Padding(可选) | 可变 | 填充字段,用于确保 IP 报头长度是 32 位的整数倍 |
ipv6 :
- 报头长度固定为 40 字节,包含源ip、目的ip地址、扩展报头等
| 字段 | 长度 | 含义 |
|---|---|---|
| Version | 4比特 | 4:表示为IPv4;6:表示为IPv6。 |
| Traffic class | 8比特 | 流量类别。该字段及其功能类似于IPv4的业务类型字段。该字段以区分业务编码点(DSCP)标记一个IPv6数据包,以此指明数据包应当如何处理。 |
| Flow Label | 20比特 | 流标签。该字段用来标记IP数据包的一个流,当前的标准中没有定义如何管理和处理流标签的细节。 |
| Payload length | 16比特 | 该字段表示有效载荷的长度,有效载荷是指紧跟IPv6基本报头的数据包,包含IPv6扩展报头。 |
| Next header | 8比特 | 下一报头,该字段指明了跟随在IPv6基本报头后的扩展报头的信息类型。 |
| Hop limit | 8比特 | 跳数限制,该字段定义了IPv6数据包所能经过的最大跳数,这个字段和IPv4中的TTL字段非常相似。 |
| Source Address | 128比特 | 该字段表示该报文的源地址。 |
| Destination Address | 128比特 | 该字段表示该报文的目的地址。 |
| Extension Headers | 可变 | 扩展报头。IPv6取消了IPv4报头中的可选字段,并引入了多种扩展报文头,在提高处理效率的同时还增强了IPv6的灵活性,为IP协议提供了良好的扩展能力。 |
7、过度策略
由于 IPv4 已经广泛应用,而 IPv6 的推广需要一个过程,因此出现了多种过渡策略
- 双栈技术 :设备同时支持 IPv4 和 IPv6 协议栈,可以根据需要选择使用不同版本的 IP 协议进行通信。
- 隧道技术 :将 IPv6 数据包封装在 IPv4 数据包中进行传输,或者将 IPv4 数据包封装在 IPv6 数据包中进行传输,实现不同版本 IP 网络之间的通信。
- 协议转换技术 :在 IPv4 和 IPv6 网络之间进行协议转换,实现不同版本 IP 网络之间的互访
