IPv6 地址格式及报文详解 | IPv4 与 IPv6 协议解析与报文对比

IPv6 地址格式及报文详解 | IPv4 与 IPv6 协议解析与报文对比ipv6 地址

大家好,欢迎来到IT知识分享网。

注: 本文为 “IPv6 地址格式及报文” 相关文章合辑。

前两篇原作分两篇,此文略作重排,合二为一。中间两篇为简解。

更新于 2024.11.17


IPv6 地址介绍

Jacob71 于 2022-03-16 13:05:23 发布

IPv6 地址格式

IPv6 地址从 IPv4 地址的 32 bits 扩展到 128 bits,IPv6 地址的表示、书写方式也从 IPv4 的点分十进制,如 192.168.1.1,转变为:

img
即,16 bits 一组,采用 16 进制表示,共 8 组字段,每个字段之间使用 “:” 分隔。

为了方便书写、表示 IPv6 地址,IETF 在标准中规定了 IPv6 的规范文本表示形式:

  1. 抑制每个字段中的前导零
  2. 使用双冒号 “::” 替换连续全零的字段,注意一个 IPv6 地址只能压缩一个零字段序列
  • 如果一个 IPv6 地址中有多个连续全零字段,只压缩最长的零字段序列
  • 如果一个 IPv6 地址中有多个相等长度的序列,则只压缩第一个
  1. 不允许压缩单个零字段
  2. 十六进制中的 a, b, c, d, e, f 必须是小写的

一个规范的 IPv6 地址表示如下:

img
IPv6 地址分为三种类型:

  1. 单播 (Unicast):单播地址唯一标识一个 IPv6 节点的接口。发送到单播地址的报文将被发送到由该地址标识的接口。
  2. 组播 (Multicast):组播地址用于标识一组 IPv6 接口。发送到组播地址的报文由组播组的所有成员处理。
  3. 任播 (Anycast):一个任播地址被分配给多个接口 (通常是在多个节点上)。发送到任播地址的数据包只被发送到这些接口中的一个,通常是最近的一个。

IPv6 地址的作用范围

IPv6 支持不同范围的地址,即作用域,典型如:

  1. Interface-Local scope
  2. Link-Local scope
  3. Site-Local scope
  4. Global scop

img
IPv6 的设计包括基本架构中的地址范围。除未指定的地址外,每个 IPv6 地址都有一个特定的范围,这是一个拓扑、逻辑范围,在这个范围内,该地址可以作为一个接口或一组接口的唯一标识符。地址的范围被编码为地址的一部分。

IPv6 单播地址

IPv6 单播地址分成以下几种类型:

  1. 全局单播地址 (Global Unicast Addresses)
  2. 链路本地地址 (Link Local Addresses)
  3. 唯一本地地址 (Unique Local Addresses – ULA)
  4. 环回地址 (Loopback (::1) )
  5. 未指定地址 (Unspecified (::) )

全局单播地址 (Global Unicast Addresses)

全局单播地址也被称为可聚合全局单播地址,是 lPv6 互联网全局范围内可路由、可达的 IPv6 地址,等同于 IPv4 的公有地址,在 IPv6 编址架构中充当了非常重要的角色。全局单播地址的前缀为:2000::/3,占据整个 IPv6 地址空间的 1/8,其格式如下:

img

全局路由前缀 (Global Routing prefix) 标识分配给一个网络的地址范围。这部分地址是由国际注册服务和互联网服务提供商 (ISP) 分配的,并具有层次结构。

img

子网 ID (Subnet ID) 用于子网的划分,网络的管理员分配这部分地址。

接口 ID (Interface ID) 用于标识子网中的接口,在子网中不能重复。接口 ID 始终为 64 位,因此 IPv6 子网始终为 / 64 子网。接口 ID 可以由接口的 MAC 地址生成,生成规则参加上面的图中示意。

链路本地地址 (Link Local Addresses)

链路本地地址是仅用于与同一本地链路上的设备进行通信。必须保证这些地址在链路上的唯一性,因为数据包不会被路由到该链路之外。也就是说,路由器不会转发任何以链路本地地址为源地址或目的地址的数据包。所有 IPv6 网络接口都配置链路本地地址,前缀为 fe80::/10 (实际上是 fe80::/64 的子集)。

img

唯一本地地址 (Unique Local Addresses – ULA)

唯一本地地址的前缀为:fc00::/7,是对 IPv4 私有地址的替换 (RFC 1918),仅供在一个站点或一组站点中本地使用。唯一本地地址具有全局唯一性,但无法在全球互联网上路由。唯一本地地址解决了 IPv4 和 RFC 1918 地址中出现的一些操作问题,被设计用于企业站点或有限的网络集。

ULAs 必须通过在路由器上配置本地前缀 (Router Advertisement) 或通过 DHCPv6 来分配,地址结构如下:

img

环回地址 (Loopback )

与 IPv4 环回地址 127.0.0.1 等价。不能将该地址分配给任何物理接口,主机可以利用此地址向自己发送 IPv6 数据包。在路由器等网络设备上,通常使用环回地址来建立路由协议的邻居。

未指定地址 (Unspedfied address )

未指定地址是全 0 地址,不能分配给接口。未指定地址被用作源地址以表示接口无 IPv6 地址,仅被用做源地址。

IPv4 mapped IPv6 address

映射 IPv4 地址的 IPv6 地址,用来帮助从 IPv4 迁移到 IPv6,如在 IPv6 套接字上处理 IPv4 连接。使用前缀 ::ffff:0:0/96 (0:0:0:0:0:ffff:0:0/96),例如 ::ffff:192.0.2.124。注意,这里的文本表示方式略有不同,以便更容易在 IPv6 地址中嵌入 32 位 IPv4 地址。

IPv6 多播地址

IPv6 前缀 ff00::/8 用于标识组播组地址,希望接收多播流量的主机 “加入” 相关的多播组。多播地址有多种范围,如链接本地,站点,全局等。在 IPv6 中,加入和离开组的协议是 MLD (Multicast Listener Discovery)。IPv6 多播地址如下所示:

img
多播地址范围(如图):

img

Well-Known Multicast Addresses

Interface-local scope

img

Link-local scope

img

Site-local scope

img

多播地址示例:

  1. IPv6 标准为所有的 NTP servers 定义了组播组 ID:0x101
  2. 这个组 ID 可以与不同的范围值一起使用:

img

注意:

  1. 临时分配的多播地址只有在定义的范围内才有意义。
  2. 组播地址不应用作 IPv6 报文的源地址或出现在任何路由报头中。
  3. node-local scope 修改为 interface-local scope

任播地址

IPv6 报文介绍

Jacob71 于 2022-03-25 11:59:52 发布

IPv6 报文结构在 RFC 2460 “Internet Protocol, Version 6 (IPv6) Specification” 中有详细的定义。

IPv4 报文头

  • 版本(Version):4 bits,IP 协议版本号,固定为 4
  • IHL(Internet Header Lenght):4 bits,IP 报文头长度,以 4 字节(32 bits)为单位,即报文头实际长度 = (IHL × 4) 字节。IPv4 报文头最小长度为 20 字节,该字段最小值为 5
  • 服务类型(Type of Service – ToS):8 bits,指示网络中设备如何处理该报文,用于提供 QoS (Quality of Service),IETF 与 1998 年在 RFC2747 中使用差分服务 (Differentiated Service) 重新定义该字段,即 DSCP
  • 数据包总长(Total Length):16 bits,IPv4 报文的中长度,包括报文头和数据
  • 标识符(Identifier):16 bits,每个报文有一个唯一的标识符,网络设备对报文进行分片时,需要保证所有分片的标识符字段与原始报文保持一致,接收端基于标识符进行报文重组
  • 标志(Flag):3 bits,有 DF (Don’t Fragment) 标志位,和更多分片标志位 (More Fragments Flag) 用于表示该分片是否是最后一个分片
  • 分段偏移(Fragment Offset):13 bits,该分片在原数据报文中的偏移量,以 8 字节为单位
  • 生存时间(Time To Live):数据报文在网络中存在的最大跳数
  • 协议(Protocol):8 bits,指示 IP 报文中数据部分承载的协议类型,如 ICMP (1)、TCP (6)、UDP (17)
  • 报文头校验和(Header Checksum):16 bits,IPv4 报文头的校验和,网络中的每台设备转发报文时均需要进行校验该字段,失败则丢弃报文
  • 源 IP 地址(Source IP Address):32 bits,发送数据报文节点的 IPv4 地址
  • 目的 IP 地址(Destination IP Address):32 bits,接收数据报文节点的 IPv4 地址
  • 可选项(Options):长度可变,很少使用,常用的选项有源路由选项、时间戳选项等
  • 填充(Padding):长度可变,用于将选项填充到 32 bits 的整数倍,即 32 bits 对齐
  • 数据(Data):报文承载传输的数据

IPv6 报文头

IPv6 报文结构(如图):

img
报文中各个字段意义如下:

  • 版本(Version):4 bits,IP 协议版本号,固定为 6
  • 流量类别(Traffic Class):8 bits,与 IPv4 中的 ToS 类似,使用 RFC 2647 中规定的 DSCP
  • 流标签(Flow Label):20 bits,标记一条流,详细使用信息参见 RFC 6437 ”IPv6 Flow Label Specification”
  • 净荷长度(Payload Length):16 bits,IPv6 基本报文头后的数据部分长度(包括扩展头的长度),以字节为单位
  • 下一报头(Next Header):8 bits,指示基本报文头后的扩展报文头,如果没有扩展报文头,则指示数据部分所承载的协议
  • 跳数限制(Hop Limit):与 IPv4 的 TTL 相同
  • 源 IPv6 地址(Source IPv6 Address):128 bits,发送数据报文节点的 IPv6 地址
  • 目的 IPv6 地址(Destination IPv6 Address):128 bits,接收数据报文节点的 IPv6 地址
  • 扩展报文头(Extension Header):可变长度,包含下一报头字段、扩展报头长度字段和扩展报头的内容,RFC 2460 中定义了 6 中扩展报头
  • 数据(Data):报文承载传输的数据

IPv4 与 IPv6 报文头差别

相对于 IPv4,IPv6 简化了基本报文头的内容,且大小固定,方便网络设备高性能转发处理。比较大的变化就是 IPv6 报文头中删掉的字段:

  • IHL(IP 报文头长度)字段,由于 IPv6 基本报文头长度固定,扩展报文头长度算入数据长度部分,因此不再需要这个字段
  • 标识符、标志和分段偏移等三个字段用于 IPv4 数据包的分段与重组,IPv6 报文在网络设备中不允许进行分片操作,因此从 IPv6 报文头中却掉。但是 IPv6 允许源主机对报文进行分片,这时将增加 IPv6 分片扩展报头。实际上,这三个字段移动到分片扩展报头中
  • 报文头校验和字段,IPv6 在报文头中删除了这个字段。因为目前在二层(以太网)有校验和与差错控制机制,在传输层(TCP 和 UDP)也有校验和机制,而在 IP 层做校验和操作已经没有必要
  • 可变长度的选项字段,IPv6 使用扩展报头替代了这个字段

IPv6 扩展报文头

IPv6 扩展报文头是可选项,在 IPv6 基本报文头中的下一报头字段指明是否有扩展头,如果没有扩展头,则该字段指明 IPv6 报文所携带的数据部分使用的协议。

img
目前,IPv6 已经定义的扩展头

  • 逐跳扩展头(Hop-by-Hop):必须由网络转发路径上的所有路由器检查处理
  • 目的选项扩展头(Destination Options):有 RH 扩展头时,可以放在逐跳扩展头后,或者是最后一个扩展头
  • 路由扩展头(Routing): (Note: RFC 5095, Dec 2007, deprecated RH type 0)
  • 分片扩展头(Fragment):由于 IPv6 使用 path MTU 机制,很少使用分片机制
  • AH 扩展头(Authentication):IPsec AH
  • ESP 扩展头(Encapsulating Security Payload):IPsec ESP
  • 其他扩展头:MIPv6, HIP, SHIM6, …

IPv6 扩展头使用如图所示:

img
最后一个扩展报文头中的下一个报文头字段总是指示哪种协议被封装在数据部分

RFC 2460 建议一个报文使用多个扩展头时,扩展报头的出现顺序如下:

  • IPv6 基本报头
  • 逐跳选项报头
  • 目的选项报头
  • 路由报头
  • 分段报头
  • AH 报头
  • ESP 报头
  • 目的选项报头
  • 上层协议报头

逐跳选项扩展报文头

逐跳选项扩展报文头要求网络转发路径上每台路由器都必须处理报头中的信息。报文头中的选项为 IPv6 报文提供了很好的灵活性,可以通过扩展报头标准组中未定义的一组值对 IPv6 包进行补充定义,这组值采用 TLV (Type-Length-Value,类型・长度・值) 三元组进行定义。

下图是巨帧负载选项 (Jumbo Payload Option) 逐跳选项报文头格式的例子:

img

IPv6 报文默认最大为 64K 字节,需要时可以采用巨帧的逐跳选项报文头,报文最大可以支持 2^32 长度。

路由扩展报文头

路由扩展报文头允许数据报文发送端指定去往目的端的路径,扩展头中包含去往数据报文目的端路径上的一台或多台中间路由器。该功能与 IPv4 使用的源路由选项类似,路由扩展报文头由前一个报文头中的下一报头值 43 来标识。

分片扩展报文头

IPv6 路由器不对数据包进行分片,只有发送 IPv6 数据包的源节点才能执行分段操作,如果网络中的节点(如路由器)收到一个需要被分片的 IPv6 报文,网络节点会丢弃该数据包并向源节点发送一条 ICMPv6 消息,即 “分组过大 “ 差错消息。

IPv6 分片扩展头的格式如下:

img

  • Fragment Offset,与 IPv4 报头中的分段偏移类似
  • M flag:用于表示是否是最后一个分片,与 IPv4 报头中分段标志类似
  • Identification:与 IPv4 报头中的标识符类似,唯一标识一个原始数据包,接收端用来组装报文
    可以看到,实际上是将 IPv4 报文头中的三个字段移到了分片扩展报文头中。

目的选项扩展报文头

目的选项扩展报文头用于承载仅需要数据包目前节点处理的选项信息,使用 TLV 选项,由前一个报头中的下一报头字段值 60 米标识。

目的选项扩展报文头格式如下:

img

与 IPSec 相关的 AH 扩展头和 ESP 扩展头,参见相关的标准定义。


IPv6 地址格式

研发小峰 IP 属地:青海 2018.09.11 20:28:17

IPv6 的地址格式

  • IPv4 地址是类似 A.B.C.D 的格式,它是 32 位,用 “.” 分成四段,用 10 进制表示
  • IPv6 地址类似

XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX 的格式,

它是 128 位的,用 “:” 分成 8 段,每个X是一个 16 进制数(16 = 2^4);可见,IPv6 地址空间相对于 IPv4 地址有了极大的扩充

IPv6 地址的各个部分

IPv6 地址的长度为 128 位,由八个 16 位字段组成,相邻字段用冒号分隔。IPv6 地址中的每个字段都必须包含一个十六进制数字,而 IPv4 地址则以点分十进制表示法表示。在下图中,x 表示十六进制数字。

图 IPv6 地址的基本格式

img

该图显示 IPv6 地址的三个部分,下文将对此进行说明。

  • 站点前缀:最左侧的三个字段(48 位)包含站点前缀。站点前缀描述通常由 ISP 或区域 Internet 注册机构 (Regional Internet Registry, RIR) 分配给您的站点的公共拓扑
  • 子网 ID:下一个字段是您(或其他管理员)为您的站点分配的 16 位子网 ID。子网 ID 描述专用拓扑(也称为站点拓扑),因为它是您的站点的内部 ID。
  • 接口 ID:最右侧的四个字段(64 位)包含接口 ID,也称为标记。接口 ID 可以从接口的 MAC 地址自动配置,也可以采用 EUI-64 格式手动配置。

请再看一下图中的地址:

2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b

此示例显示了 IPv6 地址的全部 128 位。

前 48 位2001:0db8:3c4d包含表示公共拓扑的站点前缀。

随后的 16 位0015包含代表站点专用拓扑的子网 ID。

低阶(最右边的 64 位)0000:0000:1a2f:1a2b包含接口 ID,可以用 mac 地址填充

RFC2373 中详细定义了 IPv6 地址,按照定义,一个完整的 IPv6 地址的表示法:

xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx

例如:2031:0000:1F1F:0000:0000:0100:11A0:ADDF

为了简化其表示法,rfc2373 提出每段中前面的 0 可以省略,连续的 0 可省略为 “::”,只能出现一次。例如:

原地址 简写
1080:0:0:0:8:800:200C:417A 1080::8:800:200C:417A
FF01:0:0:0:0:0:0:101 FF01::101
0:0:0:0:0:0:0:1 ::1
0:0:0:0:0:0:0:0 ::

IPv6 中的前缀

类似于 IPv4 中的 CDIR 表示法,IPv6 用前缀来表示网络地址空间,比如:

2001:250:6000::/48 表示前缀为 48 位的地址空间,其后的 80 位可分配给网络中的主机,共有 2 的 80 次方个地址

ok,下面解释一些常见的 IPv6 地址或者前缀:

  • ::/128 即 0:0:0:0:0:0:0:0,只能作为尚未获得正式地址的主机的源地址,不能作为目的地址,不能分配给真实的网络接口
  • ::1/128 即 0:0:0:0:0:0:0:1,回环地址,相当于 ipv4 中的 localhost(127.0.0.1),ping locahost 可得到此地址
  • 2001::/16 全球可聚合地址,由 IANA 按地域和 ISP 进行分配,是最常用的 IPv6 地址
  • 2002::/16 6 to 4 地址,用于 6to4 自动构造隧道技术的地址
  • 3ffe::/16 早期开始的 IPv6 6bone 试验网 地址

注:上面三类属于单播地址,都是目前互联网上广泛应用的 IPv6 地址

  • fe80::/10 本地链路地址,用于单一链路,适用于自动配置、邻机发现等,路由器不转发
  • ff00::/8 组播地址
  • ::A.B.C.D 其中 < A.B.C.D > 代表 ipv4 地址,兼容 IPv4 的 IPv6 地址。自动将 IPv6 包以隧道方式在 IPv4 网络中传送的 IPv4/IPv6 节点将使用这些地址

::FFFF:A.B.C.D 其中 < A.B.C.D > 代表 ipv4 地址,例如 ::ffff:202.120.2.30 ,是 IPv4 映射过来的 IPv6 地址,它是在不支持 IPv6 的网上用于表示 IPv4 节点

参考:

  • IPv6-上海交通大学网络信息中心
    http://ipv6.sjtu.edu.cn/address.php
  • docs.oracle.com/cd/E19253-01/819-7058/ipv6-overview-7/index.html
    https://docs.oracle.com/cd/E19253-01/819-7058/ipv6-overview-7/index.html

最后编辑于 :2018.09.11 20:30:50


IPv6 地址格式浅谈

ZERO_INDIGO 于 2018-05-10 21:50:04 发布

IPv6 是 Internet Protocol Version 6 的缩写,是对应 IPv4 的下一代 IP 协议。IPv4 地址空间小,分配不灵活,协议本身的设计又缺乏安全性,网络发展过程中层出不穷的协议也让 IPv4 的解决有些吃力,QoS 更是难以解决的大问题,IPv6 应运而生。

一、表示方式

IPv6 的长度是 128bit,是 IPv4 的 32bit 长度的四倍,目前有三种表示方式:

1、冒分十六进制表示法

格式为 X:X:X:X:X:X:X:X,其中每个 X 代表 16 个 bit,以十六进制显示,如:

ABCD:EF01:2345:6789:ABCD:EF01:2345:6789

这种表示方式中前导的 0 可以省略表示(每个 X 中前面连续的 0 可以省略不写,若整个 X 都为 0,则用一个 0 表示整个 X),如:

2001:0DB8:0000:0023:0008:0800:200C:417A → 2001:DB8:0:23:8:800:200C:417A

2、0 位压缩表示法

在某些情况下,一个 IPv6 地址中问可能包含很长的一段 0,可以把连续的一段 0 压缩为 “::”。但为保证地址解析的唯一性,地址中”::” 只能出现一次,例如:

FF01:0:0:0:0:0:0:1101 → FF01::1101

0:0:0:0:0:0:0:1 → ::1

0:0:0:0:0:0:0:0 → ::

3、内嵌 IPv4 地址表示法

为了实现 IPv4-IPv6 互通,IPv4 地址会嵌入 IPv6 地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前 96bit 采用冒分十六进制表示,而最后 32bit 地址则使用 IPv4 的点分十进制表示,例如::192.168.0.1 与::FFFF:192.168.0.1 就是两个典型的例子 。

二、地址结构

IPv6 分为单播、任播、组播,相比 IPv4 去掉了广播。每种播报方式的地址结构都不同,这里只讲详细讲单播的 IPv6 的地址结构。

IPv6 的结构也是从高位开始解析,如下:

img

未知地址(全 0)::/128,相当于 IPv4 的 0.0.0.0

环回地址::1/128 相当于 IPv4 的 127.0.0.1

组播地址不多说;

链路本地地址相当于 IPv4 的局域网或者内网地址,只能在局域网内使用。

除了这些开头的地址都是全网单播地址(相当于可以在互联网上使用的 IPv4 地址)。

1、接口标识

接口标识用于标识一个连接,在每一个子网前缀下应该是唯一的,同一个接口标识不建议用于几个不同的节点上,在越大的范围下是唯一的就越好。有时候,接口标识肯会被从它所在的那一层派生出来,比如同一个接口标识可能会被用在同一个节点的多个子网前缀不一样的接口上。

注意,接口标识的唯一性和 IPv6 地址的唯一性是两码事,比如一个全网单播的 IPv6 地址可能会使用一个局部范围内唯一的接口标识,而一个链路连接的地址可能会用一个全网范围内唯一的接口标识。

除了二进制 000 开头的地址外,所有的接口标识都是 64bit 长,格式符合 EUI-64。

如果从 mac 地址这类通用的 token 转换过来的,那么 EUI-64 格式的接口标识应该是全网唯一的。下图是接口标识前三个字节的格式,其中 u 的位置,如果是 1 表示这个标识是全网唯一的,如果是 0 则表示这个标识是局部范围的。g 用来表示个体或组,c 是所在网络的网名。

img

2、单播地址格式

全网单播地址的一般格式如下:

img

global routing prefix 是分配给站点(一级子网 / 链路)的,subnet ID 是子网号,标识站点内的连接,之后是接口标识的剩余部分(n+m 等于 64)。

3、v6 内嵌 v4 的地址格式

IPv4 兼容 IPv6 格式

这种模式将 v4 地址嵌入 v6 地址中用于兼容 v6 和 v4 地址,具体例子如下:

img

其中 IPv4 必须是公网地址(不能是内网地址)。不过这种老方法现在已经基本被弃用了。

IPv4 映射到 IPv6 地址

img

4、链路连接 v6 单播地址格式

链路连接地址用在链路内连接的时候,格式如下:

img

这种地址格式多用于自动寻址、邻居发现算法或者没有路由器的时候。

路由器不会转发任何链路内的信息到链路外。

5、站点连接 v6 单播地址格式

站点地址用于站点内部寻址用于在站点内部进行寻址,因此不需要全局前缀,不过这种地址已经被弃用了。

img

最新的标准已经不支持这种地址格式了,subnet ID 有值的时候只能是全网单播。但是已经这样部署的地址还可以使用,只是将其解析为全网单播的地址。


一文详解 IPv4 与 IPv6:协议解析与报文对比

bjxiaxueliang 已于 2024-07-10 17:21:50 修改

一、IPv4 协议详解

1.1 IPv4 简介

IPv4(Internet Protocol version 4) 是网际协议的第四个修订版本,也是该协议第一个被广泛部署和使用的版本。其在 1981 年 9 月由 IETF 发布的 RFC791 中被描述,是一种 面向无连接的协议,可以 在使用分组交换的链路层(如以太网)上运行。在数据传输方面,IPv4 协议会 尽最大努力交付数据包,但 不能保证所有数据包能够成功到达目的地,或者按照正确的顺序到达,这些方面由上层的传输协议(如 TCP 协议)处理

IPV4 协议报文结构

1.2 IPv4 地址数量

IPv4 协议 使用 32 位(4 字节)地址,其地址空间 为 4,294,967,296(2^32)个。其中一些地址被保留用于特定用途,如专用网络(约 1800 万个地址)和多播地址(约 2.7 亿个地址),这减少了可供互联网路由的地址数量。

随着地址被分配给最终用户,IPv4 地址枯竭问题也日益严重。虽然基于分类网络、无类别域间路由和网络地址转换的地址结构重构减缓了地址枯竭的速度,但在 2019 年 11 月 26 日,全球近 43 亿个 IPv4 地址已分配完毕。

IPv4 地址数量的限制刺激了 IPv6 的部署,IPv6 是唯一的长期解决方案。

IPv6 使用 128 位地址空间,提供了更多的地址,以及更好的安全性和性能。IPv6 的广泛部署需要时间和努力,但已经成为解决 IPv4 地址短缺问题的主要途径。

1.3 IPv4 协议特点

  • 面向无连接

    IPv4 是一种面向无连接的协议,每个数据包都是独立的,数据包的传输不需要建立和维护连接状态。这使得 IPv4 的数据包传输速度较快,但同时也增加了数据包传输的可靠性和安全性方面的挑战。

  • 分组交换

    IPv4 协议采用分组交换的技术,将数据分割成一系列小的数据包进行传输,每个数据包都包含了目标地址和源地址等必要的控制信息,这使得数据传输更加高效和灵活。同时,IPv4 协议还支持多种传输协议,如 TCP、UDP 等,可以适应不同的数据传输需求。

  • 简单、可靠、稳定

    IPv4 协议的设计非常简单、可靠、稳定,已经被广泛应用于互联网和局域网等各种网络环境中,具有良好的兼容性和稳定性。

  • 地址格式

    IPv4 地址是一个 32 位的二进制数,通常用点分十进制表示法来表示,被分为四段,每段可以取 0-255 之间的整数。IPv4 地址的短缺成为了一个问题,因此引入了私有地址和网络地址转换等技术来缓解 IPv4 地址短缺的问题。

  • 安全性

    IPv4 协议的安全性较低,容易受到各种网络攻击,如 IP 欺骗、数据包伪造等。因此,为了提高 IPv4 协议的安全性,通常需要通过路由器、防火墙等网络安全设备来进行加强和保护。

1.4 IPv4 报文结构

IPv4 报文的最大长度是 65,535 字节,这个长度是由 IP 报文中的 16 位总长度 字段决定的,下图为 IPv4 报文的结构:

IPv4 协议首部报文结构

IPV4 协议首部报文抓包

  • 版本 (Version)

    占用 4 比特位,表示 IP 协议的版本号,IPv4 的值为 4。

  • 首部长度 (Internet Header Length)

    占用 4 比特位,表示 IP 首部的长度,首部长度说明首部有多少 32 位字 (4 字节,也就是说单位为 4 字节)。这个字段的最小值是 5 (二进制 0101),相当于 5*4=20 字节;最大十进制值是 15,相当于 15*4=60 字节

  • 服务类型 (Type of Service,TOS)

    占用 8 比特位,表示 IP 报文的服务类型,用于指定 QoS (Quality of Service) 和流量控制等参数。

  • 总长度 (Total Length)

    占用 16 比特位,表示整个 IP 数据报的长度,包括 IP 首部和数据部分,单位为字节。这个字段的最小值是 20(20 字节首部 + 0 字节数据),最大值是 2^16-1=65,535。

  • 标识 (Identification)

    占用 16 比特位,这个字段主要被用来唯一地标识一个报文的所有分片,因为分片不一定按序到达,所以在重组时需要知道分片所属的报文。每产生一个数据报,计数器加 1,并赋值给此字段。

  • 标志 (Flags)
  • 占用 3 比特位,用于标识 IP 分片的状态。
    • 位 0:保留,必须为 0;
    • 位 1:禁止分片(Don’t Fragment,DF),当 DF=0 时才允许分片;
    • 位 2:更多分片(More Fragment,MF),MF=1 代表后面还有分片,MF=0 代表已经是最后一个分片。
  • 分片偏移 (Fragment Offset)

    占用 13 比特位,用于表示分片相对于原始数据报的偏移量。

  • 生存时间 (Time to Live)

    占用 8 比特位,表示数据报在网络中最多可以被经过的路由器数量,用于防止数据报在网络中无限循环。

  • 协议 (Protocol)

    占用 8 比特位,表示数据报中的数据部分使用的协议类型,例如 TCP、UDP、ICMP 等。

  • 校验和 (Header Checksum)

    占用 16 比特位,用于检测 IP 头部在传输过程中是否出现了错误。

  • 源地址 (Source Address)

    占用 32 比特位,表示数据报的发送者 IP 地址。

  • 目标地址 (Destination Address)

    占用 32 比特位,表示数据报的接收者 IP 地址。

  • 选项 (Options)

    附加的首部字段可选的跟在目的地址之后,但这并不被经常使用,从 1 到 40 个字节不等如果首部长度大于 5,那么选项字段必然存在

1.5 IPv4 报文长度

IPv4 报文的最大长度是 65,535 字节,这个长度是由 IP 报文中的 16 位总长度 字段决定的。该字段的最大值是 65535,因为它是一个 16 位无符号整数,所以 IP 报文的最大长度不能超过该值

需要注意的是,在实际情况下,IP 报文的长度 通常 会受到网络设备(如路由器、防火墙等)和网络链路的限制,另外,由于网络传输存在 MTU (Maximum Transmission Unit) 的限制实际上能够传输的最大数据长度通常不会超过 MTU 值,一般为 1500 个字节左右,因此 实际传输的 IP 报文长度可能会比最大长度小得多

网络传输 MTU (Maximum Transmission Unit) 大小并不是固定的,它的 大小取决于底层网络传输协议和网络设备的配置。不同的网络传输协议和设备可能会有不同的 MTU 大小限制。

以太网 是最常见的网络传输协议之一,其 MTU 大小通常为 1500 字节。在以太网上传输的数据包如果超过 1500 字节,就会被分割成多个小块进行传输。其他网络传输协议的 MTU 大小可能会有所不同,例如 PPP 协议的 MTU 大小通常为 1480 字节,ATM 网络的 MTU 大小通常为 48 字节等。

此外,MTU 还受到网络设备的配置影响。例如,路由器和交换机等网络设备可以通过配置 MTU 大小来优化网络传输效率和减少延迟。在实际应用中,为了保证网络传输的稳定性和效率,需要根据具体的网络环境和需求来设置 MTU 大小,并进行必要的优化和调整。

二、 IPv6 协议详解

2.1 IPv6 简介

IPv6(Internet Protocol version 6) 是网际协议的最新版本,主要是 为了解决 IPv4 地址枯竭问题,同时它也在其他方面对于 IPv4 有许多改进,协议由 1998 年 12 月公布的 RFC2960 定义。

IPv6 的设计目的是取代 IPv4,然而长期以来 IPv4 在互联网流量中仍占据主要地位,IPv6 的使用增长缓慢。在 2022 年 4 月,通过 IPv6 使用 Google 服务的用户百分率首次超过 40%。

虽然 IPv6 在 1994 年就已被 IETF 指定作为 IPv4 的下一代标准,由于早期的 路由器防火墙及相关应用程序 皆须改写,所以在世界范围内使用 IPv6 部署的网络服务与 IPv4 相比相对较少,技术上仍以双架构并存居多

2.2 IPv6 地址数量

IPv6 地址总长度为 128 比特位 (16 字节)分为 8 组 (每组 2 个字节),每组以 4 个十六进制数 形式表示,组间用冒号分隔。例如:FC00:0000:130F:0000:0000:09C0:876A:130B

因为 IPv6 地址 使用 128 位(16 字节) 表示,其 可以支持约 3.4×10²³(2^128)个唯一地址。这个数量比 IPv4 地址空间(43 亿个地址)大得多,可以满足未来数十年互联网的发展需求。IPv6 地址空间的巨大规模不仅可以支持更多的设备连接到互联网,而且还可以提供更好的网络安全性和性能。

2.3 IPv6 协议特点

  • 更大的地址空间

IPv6 地址使用 128 位长度表示,可以支持约 3.4 × 1 0 23 3.4 \times 10^{23} 3.4×1023 2 128 2^{128} 2128)个唯一地址,这个数量比 IPv4 地址空间(43 亿个地址)大得多,可以满足未来数十年互联网的发展需求。

  • 改进的寻址和路由机制

IPv6 协议引入了一些新的寻址和路由机制,包括多播寻址、任播寻址和移动 IPv6 等,使得网络路由更加高效和灵活。

  • 简化的头部结构

IPv6 协议头部长度固定为 40 字节,相比于 IPv4 头部结构更加简化,可以提高网络数据传输效率。

  • 可选的扩展首部

IPv6 定义了许多可选的的扩展首部,不仅可提供比 IPv4 更多的功能,而且还可以提高路由器的处理效率,因为路由器对逐跳扩展首部外的其他扩展首部都不进行处理。

  • 更好的安全性和隐私保护

IPv6 协议提供了更好的安全性和隐私保护,包括 IPsec 协议的强制支持、地址隐私扩展等,可以有效地保护网络和用户的隐私。

  • 更好的流量控制和服务质量

IPv6 协议引入了流量控制和服务质量(QoS)机制,可以更好地管理网络流量和提供不同的服务质量,提高用户体验。

2.4 IPv6 报文结构

IPv6 数据报 首部长度固定的 40 字节,在 IPv6 中所有的扩展首部并不属于 IPv6 数据报的首部,扩展首部与其后面的数据部分合起来构成 有效载荷

 IPv6 报文首部与有效载荷

IPv6 协议首部报文结构

IPV6 协议首部报文抓包

  • 版本号 (Version)

占用 4 比特位,用于指示报文使用的 IPv6 协议版本号,固定为 6。

  • 流量类别 (Traffic Class)

占用 8 比特位,用于区分不同的 IPv6 数据报的类别或优先级。。

  • 流量标签 (Flow Label)

占用 20 比特位,IPv6 提出了流的抽象概念, 就是因特网上从特定源点到特定终点(单播或多播)的一系列 IPv6 数据报(如实时音视频数据的传送)。所有属于同一个流的 IPv6 数据报都具有同样的流量标签(相同的流量标签可进行同样的数据优先级设定)。因此,流标号对于实时音视频数据的传送特别有用,对于传统的非实时数据,流标号用处不大。

  • 负载长度 (Payload Length)

占用 16 比特位,用于指示 IPv6 报文中载荷 (Payload) 的长度,不包括 IPv6 头部的长度

  • 下一个报头 (Next Header)

占用 8 比特位,用于指示 IPv6 头部后面的下一个报头类型,如 TCP 报头、UDP 报头、ICMPv6 报头等。

  • 跳数限制 (Hop Limit)

占用 8 比特位,类似于 IPv4 中的生存时间 (TTL) 字段,用于限制报文在网络中经过的最大跳数。

  • 源地址 (Source Address)

占用 128 比特位,表示发送端的 IPv6 地址。

  • 目标地址 (Destination Address)

占用 128 比特位,表示接收端的 IPv6 地址。

2.5 IPv6 载荷长度

关于 IPv6 有效载荷长度

  • IPv6 报文有效载荷长度主要由 Payload Length 字段决定,Payload Length 字段占用 16 比特位,用于表示载荷 Payload 的长度,即除去 IPv6 报头 (固定为 40 字节) 之外的部分。鉴于此字段为 16 比特,其最大值为 2 16 − 1 2^{16} – 1 2161,即 65,535 字节
  • 然而,IPv6 还支持一种叫做 Jumbo Payload 的选项。当使用这个选项时,载荷长度可以通过一个名为 Jumbo Payload Option 的扩展报头表示,该扩展报头中有一个 32 比特 (4 字节) 的字段表示载荷长度。因此,最大载荷长度可以达到 2 32 − 1 2^{32} – 1 2321,即 4,294,967,295 字节。

尽管 IPv6 有效载荷 最大长度可达到 字节,但其承载的传输层协议数据 (如 TCP、UDP) 仍然受到 IPv6 网络中 MTU 的限制,因此 仍然需要遵循最大报文长度 65,535 字节的限制

三、IPv4、IPv6 报文比较

IPv4 报文首部结构

IPv6 报文首部与有效载荷

IPv6 数据报 首部长度固定的 40 字节,所有的扩展首部并不属于 IPv6 数据报的首部,扩展首部与其后面的数据部分合起来构成有效载荷

由于 IPv6 地址的长度扩展到了 128 比特位,使得 IPv6 数据报基本首部的长度增大到了 40 字节,比 IPv4 数据报首部固定部分的长度(20 字节)增大了 20 字节。

其相比于 IPv4 报文:

  • 取消了首部长度字段:IPv6 数据报的首部长度是 固定的 40 字节
  • 取消了服务类型字段:IPv6 数据报首部中的流量类别和流量标签字段实现了区分服务字段的功能。
  • 取消了总长度字段:改用有效载荷长度字段。这是因为 IPv6 数据报的首部长度是固定的 40 字节,只有其后面的有效载荷长度是可变的。
  • 取消了标识、标志和片偏移字段:这些功能已包含在 IPv6 数据报的分片扩展首部中。
  • 把生存时间 TTL 字段改称为跳数限制字段:这样名称与作用更加一致。
  • 取消了协议字段:改用下一个首部字段。
  • 取消了首部检验和字段:可以加快路由器处理 IPv6 数据报的速度。
  • 取消了选项字段:改用扩展首部来实现选项功能。

参考

  • 百科 IPv4:

    https://zh.wikipedia.org/wiki/IPv4

  • RFC791 IPV4:

    https://datatracker.ietf.org/doc/html/rfc791

  • 百科 IPv6:

    https://zh.wikipedia.org/wiki/IPv6

  • RFC2460 IPV6:

    https://datatracker.ietf.org/doc/html/rfc2460

= T h e   E n d The \, End TheEnd =


via:

  • IPv6 专题系列:01. IPv6 地址介绍_唯一本地地址 – CSDN 博客 Jacob71 于 2022-03-16 13:05:23 发布

    IPv6 地址格式及报文详解 | IPv4 与 IPv6 协议解析与报文对比

  • IPv6 专题系列:02 IPv6 报文介绍 – CSDN 博客 Jacob71 于 2022-03-25 11:59:52 发布

    IPv6 地址格式及报文详解 | IPv4 与 IPv6 协议解析与报文对比

  • IPv6 地址格式 – 简书 研发小峰 IP 属地:青海 2018.09.11 20:28:17

    https://www.jianshu.com/p/3c8a4cce9cd1

  • IPv6 地址格式浅谈 – CSDN 博客 ZERO_INDIGO 于 2018-05-10 21:50:04 发布

    IPv6 地址格式及报文详解 | IPv4 与 IPv6 协议解析与报文对比

  • 一文详解 IPv4 与 IPv6:协议解析与报文对比_ipv4 报文结构 – CSDN 博客 bjxiaxueliang 已于 2024-07-10 17:21:50 修改

    IPv6 地址格式及报文详解 | IPv4 与 IPv6 协议解析与报文对比

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118729.html

(0)
上一篇 2025-11-10 22:10
下一篇 2025-11-10 22:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信