1、地址长度

ipv432位二进制,可表示232个ip,约4.2*109个

ipv6128位二进制,可表示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
  • 内嵌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)等
字段长度含义
Version4 比特表示 IP 协议的版本号,对于 IPv4,该值固定为 4。
IHL(Internet Header Length)4 比特互联网头部长度,指示 IP 报头的长度,以 32 位字为单位。最小为 5(5×32 位 = 20 字节),如果有选项字段,报头长度会增加。
DS Field(Differentiated Services Field)8 比特区分服务字段,用于指示不同类型的服务质量要求,包括优先级、延迟、吞吐量等。
Total Length16 比特整个 IP 数据包的长度,包括报头和数据,以字节为单位。
Identification16 比特标识字段,用于唯一标识一个 IP 数据包的分片。当一个数据包被分片时,所有分片都具有相同的标识值。
Flags3 比特标志字段,用于控制数据包的分片。包括“不分片(DF)”和“更多分片(MF)”等标志。
Fragment Offset13 比特分片偏移字段,指示分片在原始数据包中的位置,以 8 字节为单位。
Time to Live(TTL)8 比特生存时间,指定数据包在网络中可以经过的最大跳数。每经过一个路由器,TTL 值减 1,当 TTL 为 0 时,数据包被丢弃。
Protocol8 比特协议字段,指示 IP 数据包中封装的上层协议类型,如 TCP(6)、UDP(17)等。
Header Checksum16 比特头部校验和,用于检测 IP 报头在传输过程中是否发生错误。
Source Address32 比特源 IP 地址,即发送数据包的设备的 IP 地址。
Destination Address32 比特目的 IP 地址,即接收数据包的设备的 IP 地址。
Options(可选)可变选项字段,用于提供一些额外的功能,如记录路由、时间戳等。不是所有的数据包都有选项字段。
Padding(可选)可变填充字段,用于确保 IP 报头长度是 32 位的整数倍

ipv6

  • 报头长度固定为 40 字节,包含源ip、目的ip地址、扩展报头等
字段长度含义
Version4比特4:表示为IPv4;6:表示为IPv6。
Traffic class8比特流量类别。该字段及其功能类似于IPv4的业务类型字段。该字段以区分业务编码点(DSCP)标记一个IPv6数据包,以此指明数据包应当如何处理。
Flow Label20比特流标签。该字段用来标记IP数据包的一个流,当前的标准中没有定义如何管理和处理流标签的细节。
Payload length16比特该字段表示有效载荷的长度,有效载荷是指紧跟IPv6基本报头的数据包,包含IPv6扩展报头。
Next header8比特下一报头,该字段指明了跟随在IPv6基本报头后的扩展报头的信息类型。
Hop limit8比特跳数限制,该字段定义了IPv6数据包所能经过的最大跳数,这个字段和IPv4中的TTL字段非常相似。
Source Address128比特该字段表示该报文的源地址。
Destination Address128比特该字段表示该报文的目的地址。
Extension Headers可变扩展报头。IPv6取消了IPv4报头中的可选字段,并引入了多种扩展报文头,在提高处理效率的同时还增强了IPv6的灵活性,为IP协议提供了良好的扩展能力。

7、过度策略

由于 IPv4 已经广泛应用,而 IPv6 的推广需要一个过程,因此出现了多种过渡策略

  • 双栈技术:设备同时支持 IPv4 和 IPv6 协议栈,可以根据需要选择使用不同版本的 IP 协议进行通信。
  • 隧道技术:将 IPv6 数据包封装在 IPv4 数据包中进行传输,或者将 IPv4 数据包封装在 IPv6 数据包中进行传输,实现不同版本 IP 网络之间的通信。
  • 协议转换技术:在 IPv4 和 IPv6 网络之间进行协议转换,实现不同版本 IP 网络之间的互访
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐