2024年了你还不会IPV6?
由于 IPv4 已经广泛应用,而 IPv6 的推广需要一个过程,因此出现了多种过渡策略。,兼容ipv4,每个X表示16个二进制位,每个d表示8个二进制位。mask 掩码,由于掩码前20位都是1,ip可以表示为。(去除网络地址和广播地址,这其中还有一个网关地址),每个X表示4个十六进制数(或16个二进制位)表示连续一段0,只能使用一次。网络地址(网络号) =主机地址(主机号) =:127开头的所有地
1、地址长度
ipv4:32
位二进制,可表示232个ip,约4.2*109个
ipv6:128
位二进制,可表示2128个ip,约3.4*1038个
2、表示方法
ipv4:
- 点分十进制 表示法:
X.X.X.X
,每个X表示3个十进制数(或8个二进制位)11000000101010000100000000000001
192.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
- 128个
-
内嵌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:
11000000.10101000.01000000.00000001 -> 192.168.64.1
mask 掩码,由于掩码前20位都是1,ip可以表示为192.168.1/20
11111111.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^网络地址(网络号)
按位异或运算
11000000.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.255
0.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 网络之间的互访
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)