网络层(Internet Layer)
网络层(Internet Layer): 对应 OSI 模型的网络层,负责数据包的路由和转发
IP地址及子网划分
IPv4:目前广泛使用的版本,地址长度为32位。IPv6:下一代IP协议,地址长度为128位。
IP地址的管理与分配
- 公有地址:由ICANN统一分配,全网唯一
- 静态IP:长期固定(如服务器使用), 动态IP:由DHCP临时分配(如家庭宽带)
MAC地址和IP地址的区别
MAC地址是物理地址,嵌入在网络接口卡(NIC)中,主要用于在同一局域网(LAN)内进行设备间的直接通信,它确保了数据帧能够在同一个子网内的主机之间准确传输
MAC地址工作在数据链路层,IP地址工作在网络层
IP地址则是逻辑地址,用于标识网络中的设备,并且支持跨多个子网的路由功能,使得数据包可以在不同网络之间传输,即使这些网络并未直连。
IP地址及其分类
IPv4地址由 32位二进制 构成,常采用 点分十进制 表示(如192.168.1.1
),分为4个八位组
IP地址的基本结构/组成要素:
- 网络号(Network ID) :标识设备所属的网络
- 主机号(Host ID) :标识网络内的具体设备
IP地址最初被划分为A、B、C、D、E五类,但因地址浪费等问题已逐渐被CIDR取代

A类:前8位为网络号,后24位为主机号,适用于超大规模网络(如国家主干网),但仅有
126
个可用A类网络,导致地址浪费。B类:前16位为网络号,后16位为主机号,适用于中型机构,但全球仅有约
1.6
万个B类网络,实际分配中仍存在浪费。C类:前24位为网络号,后8位为主机号,适用于小型网络,但每个网络仅支持
254
台主机,需大量C类地址覆盖中型需求,导致路由表膨胀。
随着CIDR(无类域间路由)的普及,传统ABC类划分已不再重要,IP地址分配转为无类别方式,仅D/E类保留原有用途。
P地址根据其使用范围和分配方式,还可以分为 公有IP地址 和 私有IP地址。公有IP地址在全球范围内是唯一的;私有IP地址在同一局域网内是唯一的,但可以在不同的局域网中重复使用。
公有IP地址和私有IP地址
公有IP地址(Public IP Address):公有IP地址是全球唯一的,在互联网上用于标识特定的设备或服务。这些地址允许设备直接访问互联网,并且可以从任何地方通过互联网访问。
分配方式:由互联网编号分配机构(如ICANN、IANA等)及其区域性的分支机构(如ARIN、RIPE NCC、APNIC等)进行管理和分配。用户或组织需要向ISP(互联网服务提供商)申请获得公有IP地址
可见性与管理:公有IP地址在全球范围内都是唯一且可路由的,这意味着它们可以直接被其他所有连接到互联网的设备访问。因此,拥有公有IP地址的服务器(例如网站服务器、邮件服务器等)可以直接接收来自外部网络的数据请求。
由于公有IP地址可以直接从互联网访问,所以通常需要更强的安全措施来保护相关设备免受未授权访问和其他安全威胁。
私有IP地址(Private IP Address):私有IP地址是为内部网络设计的,不在互联网上公开使用。主要用于家庭、企业或其他类型的局域网(LAN),以节省有限的IPv4地址资源。这些地址可以在不同的独立网络中重复使用。
分配方式:私有IP地址段是由IANA专门预留的一组地址范围,包括:
- 10.0.0.0 到 10.255.255.255(A类)
- 172.16.0.0 到 172.31.255.255(B类)
- 192.168.0.0 到 192.168.255.255(C类)
可见性与管理:私有IP地址仅在内部网络内有效,不能直接从互联网访问。为了使内部网络中的设备能够访问互联网,通常需要使用网络地址转换(NAT)技术,将私有IP地址转换为一个有效的公有IP地址。
通过使用私有IP地址,可以显著减少对公有IP地址的需求,降低网络建设和维护的成本。此外,私有IP地址提供了更高的灵活性和控制力,便于内部网络的管理和扩展。
特殊IP地址
主机号全为 0 和全为 1 的情况
- 主机号全为 0(如
192.168.1.0
):代表该网络的网络地址,不能用作主机IP。 - 主机号全为 1(如
192.168.1.255
):传统上被视为广播地址,用于向该网络内的所有主机发送数据包。在CIDR(无类域间路由)下,可根据具体配置决定是否允许分配。
一些常见的本地特殊IP:
- 环回地址:
127.x.x.x
(如127.0.0.1),用于本地测试。 - 广播地址: 受限广播:
255.255.255.255
,仅在本地网络生效。 - 私有地址:
- A类私有:
10.0.0.0
~10.255.255.255
- B类私有:
172.16.0.0
~172.31.255.255
- C类私有:
192.168.0.0
~192.168.255.255
- A类私有:
- 链路本地地址(Link-Local Addresses):
169.254.0.0/16
当无法从DHCP服务器获取IP地址时,计算机会自动分配此类地址用于同一局域网内的通信
这些地址仅在内部网络使用,需通过NAT转换访问公网
子网的划分
子网(Subnet) 是指从一个较大的网络中划分出的较小的逻辑网络。通过子网划分,可以将一个大的网络分割成多个较小的部分,每个部分作为一个独立的子网运作。这样做有几个好处:
- 提高地址利用率:将单一网络分割为多个子网,避免主机号浪费(如B类网络划分子网后,可为不同部门分配独立子网)。
- 优化网络管理:隔离广播域、增强安全性、简化故障排查。
子网划分的实现——子网掩码
子网掩码(Subnet Mask) 是一种用于 区分IP地址中的网络部分和主机部分 的 32位数字,子网掩码有两种表示形式:
- 点分十进制表示法:例如,对于一个典型的C类网络,其默认子网掩码为
255.255.255.0
- 前缀长度表示法(CIDR记法):例如,上述子网掩码也可以写作
/24
,表示前24
位是网络部分。
通过子网掩码与IP地址按位 与 运算(只有两位都为1时,结果位才为1,否则结果位为0),可得到该IP地址所在网段,示例:IP地址 192.168.10.215
,子网掩码 255.255.255.0

要将子网等分为
示例:将192.168.1.0/24
划分为4个子网,右移 2 位后子网掩码为:255.255.255.192(/26)
,则每个子网只剩 6 位主机号(实际可用的主机IP地址数量为
- 子网1:
192.168.1.0/26
(主机范围:192.168.1.1 - 192.168.1.62
) - 子网2:
192.168.1.64/26
(主机范围:192.168.1.65 - 192.168.1.126
) - 子网3:
192.168.1.128/26
(主机范围:192.168.1.129 - 192.168.1.190
) - 子网4:
192.168.1.192/26
(主机范围:192.168.1.193 - 192.168.1.254
)
几个关键数字对应的二进制数:64 => 0100 0000
,128 => 1000 0000
,192 => 1100 0000
子网掩码允许网络管理员创建自定义大小的子网,不再局限于传统的A、B、C类网络的固定大小
无类别域间路由
CIDR(Classless Inter-Domain Routing,无类别域间路由)是一种用于更高效分配IP地址和优化路由表的一种技术。CIDR 一定程度上解决了IPv4地址耗尽和路由表膨胀的问题。
RFC 1517-1520:1993年引入CIDR,允许更灵活的地址分配和路由聚合,不再依赖固定的A、B、C类地址划分,而是使用 可变长度的子网掩码(VLSM) 和前缀表示法
斜线记法(前缀表示法:Prefix Notation):用于标识网络地址块的大小,支持灵活的地址分配和路由。格式:IP地址/前缀长度(如
192.168.1.0/24
),前缀长度表示网络部分的位数变长子网掩码(Variable Length Subnet Mask, VLSM) :CIDR使用可变长度的子网掩码(VLSM),允许更灵活的地址划分,一个网络可以被划分为多个子网,每个子网使用不同的子网掩码。示例:假设我们有一个网络地址块:
192.168.1.0/24
,需要划分为ABCD四个子网,每个子网的主机数分别是:62,30,12,6
,主机号位数分别是:6,5,4,3
子网 | 网络地址 | 子网掩码 | 可用地址 | 广播地址 | n |
---|---|---|---|---|---|
A | 192.168.1.0/26 0->0000 0000 | 255.255.255.192192->1100 0000 | 192.168.1.1 - 192.168.1.62 | 192.168.1.63 | 62 |
B | 192.168.1.64/2764->0100 0000 | 255.255.255.224224->1110 0000 | 192.168.1.65 - 192.168.1.94 | 192.168.1.95 | 30 |
C | 192.168.1.96/2896->0110 0000 | 255.255.255.240240->1111 0000 | 192.168.1.97 - 192.168.1.110 | 192.168.1.111 | 14 |
D | 192.168.1.112/29112->0111 0000 | 255.255.255.248248->1111 1000 | 192.168.1.113 - 192.168.1.118 | 192.168.1.119 | 6 |
- 路由聚合(Route Aggregation) :也称为:Route Summarization(路由汇总),是一种将多个连续的小地址块合并为一个更大的地址块的技术,从而减少路由表条目,示例:多个连续的子网:
192.168.1.0/24
,192.168.2.0/24
,192.168.3.0/24
,聚合为一个更大的地址块:192.168.0.0/22
(覆盖192.168.0.0
到192.168.3.255
)
CIDR的实际应用:地址分配:ISP分配:互联网服务提供商(ISP)可以根据客户需求分配不同大小的地址块,例如,一个企业可能需要1000个地址,ISP可以分配一个/22
地址块(1024个地址)
Internet Protocol
IP(Internet Protocol,互联网协议)是TCP/IP协议族中的核心协议之一,负责在网络层实现数据包的寻址和路由。IP协议定义了数据包的格式(IP数据报)以及如何将数据包从源主机传输到目标主机。
实现数据包的路由和转发,提供无连接、不可靠的数据传输服务
支持分片和重组以适应不同网络的最大传输单元(MTU)
IP数据报格式
IPv4数据报由首部(Header)和数据(Payload) 两部分组成。首部长度为20字节(无选项时),最大长度为60字节(含选项),下图除了最后的 Data ,其余皆为首部:

以下为首部(Header)各字段详细解释:
Version(版本):标识IP协议的版本,IPv4:
0100
(4),IPv6:0110
(6)IHL(Internet Header Length,首部长度):表示IP首部的长度,单位为
4字节
,二进制表示的最小值为0101
-> 5(20字节),最大值为1111
-> 15(60字节)Type of Service(服务类型):指定数据报的服务质量(QoS)
Total Length(总长度):整个IP数据报的长度(首部 + 数据),最大值:65535(字节)
Identification(标识): 用于标识数据报的唯一性,便于分片和重组。
Flags(标志):控制数据报的分片
Fragment Offset(分片偏移):表示当前分片在原始数据报中的位置,单位为8字节。
Time to Live(TTL,生存时间):限制数据报在网络中的最大跳数,每经过一个路由器减1,值为0时丢弃。
Protocol(协议):标识上层协议类型。TCP:
6
,UDP:17
,ICMP:1
Header Checksum(首部校验和):用于校验IP首部的完整性
Source IP Address(源IP地址):发送数据报的源主机IP地址
Destination IP Address(目标IP地址):接收数据报的目标主机IP地址
Options(选项):提供额外的功能,如记录路由(Record Route)、时间戳(Timestamp)等
分片与重组
当一个数据报太大以至于无法在一个特定的链路层协议上传输时(例如,超过了该网络的最大传输单元MTU),就需要将其分割成较小的部分,即 分片(fragmentation)。然后,在目的地或目标网络重新组合这些分片以恢复原始数据报,这就是 重组(reassembly)的过程。
当一个IP数据报需要分片时,以下字段在IPv4头部中起重要作用:
分片相关首部字段
- 标识(Identification):标识属于同一个原始数据报的所有分片,使接收方可以正确地重组
- 标志(Flags):包含三个比特,其中 第一位未使用(总是设置为
0
)- 第二位(DF, Don't Fragment)表示是否允许分片
- 值为
0
表示允许路由器对该数据报进行分片, - 值为
1
则表示该数据报不允许被路由器分片,如果数据报太大并且设置了DF标志,那么路由器将丢弃该数据报并向源端发送一个ICMP错误消息
- 值为
- 第三位(MF, More Fragments)指示是否有更多的分片跟随当前分片
- 值为
1
,表示该数据报不是一系列分片中的最后一个分片,还有后续的分片 - 值为
0
,则意味着这是最后一个分片或是一个非分片的数据报
- 值为
- 第二位(DF, Don't Fragment)表示是否允许分片
- 片偏移(Fragment Offset):指明了该分片在整个原始数据报中的位置,以8字节为单位。
每个分片都有自己的IP头部,除了最后一个分片外,所有分片都设置了MF标志。第一个分片包含了整个IP头部和部分数据,而后续的分片则只有部分数据。
重组通常发生在最终的目的主机上,一旦所有的分片都到达并且按照正确的顺序排列,目的主机就可以将它们重新组装成原始的数据报并继续处理。
值得注意的是,在IPv6中,只支持终端设备之间的分片操作,默认情况下 不允许路由器对数据报进行分片。IPv6依赖于源节点执行路径MTU发现来确定适当的数据报大小。如果数据报太大而不能被传输,中间路由器会丢弃它并向源节点发送ICMPv6“Packet Too Big”消息,促使源节点减小数据报尺寸重试。
路由与路路由器
路由(Routing)是指在网络中选择一条路径将数据从源节点传输到目的节点的过程,路由可以是静态的,也可以是动态的
- 静态路由:由网络管理员手动配置的固定路由条目。
- 动态路由:通过路由协议自动计算和更新路由表
路由器(Router) 负责在不同网络之间转发数据包。路由器根据路由表(Routing Table)决定数据包的转发路径。主要功能包括:
- 路径选择:根据路由协议计算最优路径。
- 数据转发:按照路由表的指引,将数据包发送到下一跳设备。
- 网络隔离:连接不同的子网,实现网络分段,提高安全性和效率。
路由器的主要类型:
- 企业级路由器:用于大型企业和数据中心,具备高吞吐量和复杂的策略管理能力,如 Cisco、华为、HPE 等品牌的高端路由器。
- 家用路由器:适用于家庭和小型办公环境,通常集成了 NAT(网络地址转换)、DHCP、Wi-Fi AP 等功能,如 TP-Link、小米、Netgear 等。
- 核心路由器:用于互联网骨干网,处理高速大流量转发,如思科(Cisco)和华为(Huawei)的高端设备。
- 边界路由器:用于 ISP(互联网服务提供商)之间的连接,支持 BGP(边界网关协议)。
路由表及路由转发
路由表(Routing Table)是路由器用来决定如何转发数据包的关键数据结构。它存储了到达不同目的地的路径信息。路由表关键字段:
Destination/Mask(目标网络/子网掩码): 指定该路由条目的目的地网络地址及其对应的子网掩码。这个组合决定了哪些数据包将匹配此条目。
Gateway(网关): 也称为下一跳(Next Hop),指定了到达目标网络需要经过的下一个路由器的IP地址。如果目标网络直接连接到本路由器,则此字段可能为空或者指向接口本身。
Interface(接口): 表示通过哪个物理或逻辑接口发送数据包以到达目标网络。
Metric(度量值): 衡量路径成本的一个数值,可以基于多种因素如跳数、带宽、延迟等。较低的度量值表示更优的路径。当有多条路径可达同一目的地时,会选择具有最低度量值的路径。
Proto(协议来源): 标识该路由条目的来源,比如直连(Direct)、静态配置(Static),或是通过某种动态路由协议(如RIP、OSPF、BGP等)学习得到。
Flags(标志位): 可能包含一些特殊标志,例如U(可用)、G(网关存在)、H(主机路由)等,具体取决于使用的操作系统和路由软件。
并不是只有路由器才拥有路由表,个人电脑、服务器等也会有一个路由表来确定如何处理出站流量
示例:Linux中查看路由表 route -n
,windows命令 route print
[root@rocky ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.16.2 0.0.0.0 UG 100 0 0 ens160
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.16.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
第一条路由是一个默认路由,用于所有非本地网络的数据包,它们会被转发到网关 192.168.16.2
剩余两条的Gateway均为 0.0.0.0
,表示这是一个直连网络,不需要经过网关
默认网关
默认网关可以理解为路由器,它负责接收来自本地网络的数据并将其转发到更大的互联网中去
但是网关则更广泛地指代任何能够实现网络间协议转换和通信的设备或系统。例如,一个Web代理服务器就是一个应用层网关,它可以帮助客户端访问互联网资源
路由转发 (Packet Forwarding) : 是指路由器根据路由表中的信息,将数据包正确地传递到目的地的过程。主要步骤如下:
- 查找路由表:路由器检查数据包的目标 IP,并在路由表中查找匹配的路由条目。
- 选择最佳路由:如果有多个匹配项,选择度量值最低的路径。
- 确定下一跳:路由器根据路由表确定数据包应该转发到哪个下一跳设备。
- 封装与转发:数据包可能需要重新封装(如 MAC 地址变化),然后通过合适的接口发送出去。
两种主要的转发方式:
- 逐跳转发(Hop-by-Hop Forwarding):每个路由器都独立查找路由表,并决定下一跳设备。
- 标签交换(Label Switching):如 MPLS(多协议标签交换),通过预先建立的路径(LSP)进行快速转发。
网络地址转换
NAT(Network Address Translation,网络地址转换)主要用于修改IP数据包中的源或目的IP地址。这项技术最初是为了解决IPv4地址空间不足的问题而设计的,但随着时间的发展,它也被广泛应用于提高网络安全性和简化网络管理等方面。
NAT的常见工作方式
- 静态NAT:一对一映射,将一个私有IP地址固定映射到一个公共IP地址上,适用于需要从外部直接访问的服务器等场景。
- 动态NAT:多对多映射,使用池中的公共IP地址临时分配给内部主机,适合临时连接需求。
- 端口地址转换(PAT/NAT重载):多对一映射,允许多个内部IP地址共享同一个公共IP地址的不同端口号。这是最常见的一种形式,极大地提高了IP地址的利用率。
NAT通常在路由器或者防火墙上实现,它会在数据包进出网络边界时进行必要的地址和端口转换,并维护一张转换表记录这些映射关系。当响应的数据包返回时,NAT设备会根据这张表将其转换回原始的内部地址和端口。
NAT的应用场景:几乎所有的家庭宽带路由器都内置了NAT功能,使得家庭内的多个设备可以共享单一的公网IP地址上网。能感知到NAT的场景最常见的就是 虚拟机NAT模式,但是VM的NAT模式与路由器NAT是有去别的:
对比项 | 家庭/企业路由器 NAT | VM 中的 NAT |
---|---|---|
作用 | 让内网设备共享公网IP (从外部网络访问内部服务,需配置端口转发规则) | 让虚拟机共享宿主机网络 |
NAT 设备 | 路由器 | 宿主机 |
IP 变换 | 内网 IP → 公网 IP | VM 私有 IP → 宿主机 IP |
外部访问 | 需要端口映射 | 需要端口映射 |
应用场景 | 互联网访问 | 虚拟化环境 |
VM中虚拟网卡扮演 NAT 设备的角色,负责地址转换,但不进行传统的路由计算
ICMP协议
ICMP(Internet Control Message Protocol,互联网控制消息协议) 主要用于在网络设备之间传递控制消息。这些消息涉及请求和响应操作,帮助诊断网络问题、报告错误情况等。比如ping命令使用ICMP回显请求和响应报文来测试网络连通性。
ICMP消息通常封装在IP数据包内,作为IP层的一个辅助协议。它包含多种类型的报文,每种都有特定的目的和格式。以下是一些常见的ICMP报文类型:
ICMP报文类型
Echo Request & Echo Reply(回声请求/回复):用于测试目的主机是否可达以及测量往返延迟时间。典型应用:
ping
命令就是基于这两种报文来检查网络连通性的。Destination Unreachable(目标不可达):当路由器或主机无法将数据包送达目的地时发送此消息。包括但不限于网络不可达、主机不可达、端口不可达等。
Time Exceeded(超时):当一个IP数据包的TTL(生存时间)字段减至零而未到达目的地时,中间路由器会丢弃该数据包并向源点发送一个时间超时报文。
traceroute
工具利用了这种机制来确定从源到目的地经过的所有路由器。Redirect(重定向):当路由器发现存在更优路径到达某个目的地时,它可以向发送方发送重定向消息以建议使用更好的下一跳地址。
ICMP常见使用场景:
网络诊断与故障排除
- Ping:通过发送ICMP Echo Request并等待Echo Reply来验证目标主机的可达性。
- Traceroute:通过设置不同的TTL值并观察ICMP Time Exceeded响应,确定数据包从源到目的地所经过的路由路径。
错误报告: 当发生诸如网络不通、主机不在线或者服务端口关闭等问题时,ICMP可以提供详细的错误信息给源主机,以便进行相应的调整或修复。
流量控制:在某些情况下,如网络拥塞时,ICMP Source Quench(源抑制)曾被用来通知发送方降低发送速率,不过这一特性已被废弃,因为有更好的方法来管理流量。
安全策略实施:防火墙和其他网络安全设备可能会根据ICMP消息的内容来决定是否允许或阻止特定类型的通信。例如,禁止外部网络对内部主机发起的ICMP Echo Requests(即禁用ping)作为一种简单的防护措施。
路径MTU发现:为了找到一条路径上支持的最大传输单元(MTU),系统可能依赖于ICMP Fragmentation Needed(需要分片)消息,这有助于避免不必要的IP分片,提高传输效率。
虽然ICMP并不是直接负责用户数据传输的协议,但它在网络管理和维护中扮演着不可或缺的角色。
IGMP协议
虽然ICMP与IGMP看起来有些像,但它们的功能和服务对象完全不同
IGMP(Internet Group Management Protocol,互联网组管理协议) 是用于管理组播成员资格的协议。它允许主机表达对特定组播组的兴趣,并让路由器知道哪些主机希望接收特定组播流量。IGMP主要用于支持IP组播,这是一种允许一个发送者向多个接收者同时发送数据的技术。
IGMP的工作原理
加入组播组:当一台主机想要加入某个组播组时,它会发送一个IGMP成员报告消息给其直连的路由器,表明自己希望接收该组播组的数据流。
维护成员关系:路由器定期发送IGMP查询消息以确认当前活跃的组播组成员。如果主机仍然对该组播组感兴趣,则会在接收到查询后回复成员报告。
离开组播组:在某些版本的IGMP中(如IGMPv2及以上),当主机不再需要接收特定组播组的数据时,它可以主动发送离开组的消息通知路由器。
路由更新:基于从主机收到的信息,路由器构建并更新自己的组播转发表,以便正确地转发组播数据到感兴趣的接收者。
尽管单播(Unicast)和广播(Broadcast)仍然是常见的数据传输方式,但它们各有局限性:单播对于大规模分发效率不高,而广播则会占用过多带宽且不适合跨网段传输。相比之下,组播(Multicast)能够有效地将信息从一个发送者传递给多个接收者,同时减少了不必要的带宽消耗。
IPv6地址及数据报
IPv6(Internet Protocol version 6)是下一代互联网协议,用于替代 IPv4,解决 IPv4 地址耗尽问题,并提供更高效的网络传输能力。
IPv6 地址是 128 位(16 字节),常使用 十六进制 表示,分成 8 组,每组 16 位(4 个十六进制数),以 冒号(:) 分隔:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
IPv6 地址简化规则
- 去掉前导 0(每组前面的 0 可以省略):
2001:db8:85a3:0:0:8a2e:370:7334
- 连续的 0 可以用
::
代替(仅可使用一次):例如:2001:db8:85a3::8a2e:370:7334
fe80:0000:0000:0000:1a2b:3c4d:5e6f:7g8h → fe80::1a2b:3c4d:5e6f:7g8h
IPv6 的好处:
- 地址充足:全球唯一地址,无需 NAT。
- 简化路由:固定 40 字节头部,提升转发效率。
- 自动配置:支持 SLAAC,无需手动配置 IP。
- 安全性增强:原生支持 IPSec 加密通信。
IPv6 地址类型:
地址类型 | 范围 | 说明 |
---|---|---|
单播地址 | 唯一地址 | 直接指向某个设备 |
组播地址 | ff00::/8 | 发送给多个设备 |
任播地址 | - | 发送给最近的一个设备 |
链路本地地址 | fe80::/10 | 仅限本地网络,不可路由 |
站点本地地址 | fc00::/7 | 内部网络使用 |
回环地址 | ::1 | 本机地址(类似 IPv4 127.0.0.1 ) |
IPv6数据报
IPv6 基础头部(Fixed Header) 固定 40 字节,相比 IPv4 头部更简单,提升了转发效率。

IPv6 头部关键字段:
字段 | 长度 | 作用 |
---|---|---|
版本(Version) | 4bit | 固定为 6 ,表示 IPv6 |
流量分类(Traffic Class) | 8bit | 用于 QoS(流量优先级) |
流标签(Flow Label) | 20bit | 标记特定数据流,提高传输效率 |
负载长度(Payload Length) | 16bit | 指定数据部分的大小(不包括头部) |
下一头部(Next Header) | 8bit | 指定下一个协议(如 TCP/UDP) |
跳数限制(Hop Limit) | 8bit | 类似 IPv4 TTL(防止环路) |
源地址(Source Address) | 128bit | 发送方 IPv6 地址 |
目的地址(Destination Address) | 128bit | 接收方 IPv6 地址 |
扩展头部(Extension Headers) | 可变 | 额外的控制信息,如 IPSec |
扩展头部 位于 IPv6 基础头部之后,在负载数据(如 TCP/UDP)之前。一般情况下,IPv6 普通数据包不会携带扩展头部,只有在 需要特定功能(如 IPSec、分片)时,才会使用扩展头部
- IPv6 默认只解析基础头部,路由器无需处理扩展头部,减少计算量
- 只在特定情况下由特定设备解析,如端到端的额外信息(如 IPSec、分片),不像 IPv4 那样 所有路由器都要解析变长选项
一些的 IPv6 扩展头部介绍:
扩展头部类型 | Next Header 值 | 作用 |
---|---|---|
Hop-by-Hop Options | 0 | 路由器逐跳处理,如 Jumbogram |
Routing Header | 43 | 规定路径(类似源路由) |
Fragment Header | 44 | 处理 IPv6 分片 |
Authentication Header (AH) | 51 | IPSec 认证 |
Encapsulating Security Payload (ESP) | 50 | IPSec 加密 |
Destination Options | 60 | 仅目的端处理的信息 |
与IPv4的区别
对比项 | IPv4 | IPv6 |
---|---|---|
地址长度 | 32 位 | 128 位 |
地址数量 | 约 43 亿个 | 约 |
常用地址表示方式 | 点分十进制(192.168.1.1) | 冒号十六进制(2001:db8::1) |
地址分配 | 需要 NAT(网络地址转换) | 无需 NAT,全球唯一 |
自动配置 | DHCP 分配 | SLAAC(自动地址配置) |
广播 | 有广播(Broadcast) | 无广播,改为组播(Multicast) |
头部结构 | 复杂,变长选项 | 固定 40 字节头部,性能更好 |
安全性 | 需要额外加密 | IPSec 内置支持 |
IPv6 的变化和改进
- 头部简化:IPv6 固定 40 字节,路由器转发更快。
- 无 NAT:IPv6 设备可直接通信,无需 NAT 转换。
- 无广播:IPv6 仅支持组播,减少网络负担。
- IPSec 强制支持:默认支持端到端加密通信。
- 分片和重组:IPv6不允许在路由器上进行分片和重组,只能在源与目的地执行
IPv6 数据报与 IPv4 数据报的区别
对比项 | IPv4 | IPv6 |
---|---|---|
头部长度 | 变长,不固定(20-60 字节) | 固定 40 字节 |
地址长度 | 32 位 | 128 位 |
选项字段 | 头部有选项 | 选项移入扩展头部 |
广播支持 | 有广播 | 仅支持组播 |
生存时间(TTL) | TTL 计数 | 直接改为 跳数限制(Hop Limit) |
下一协议 | Protocol 字段 | Next Header 取代 |
安全性 | IPSec 可选 | IPSec 强制支持 |
IPv6 迁移注意事项
是否支持 IPv6?
- 运营商、路由器、操作系统是否支持 IPv6?
- 使用
ping6
或ip -6 addr show
检查 IPv6 连接。
IPv6 地址配置
- 自动配置(SLAAC):设备可自动获取 IPv6 地址。
- DHCPv6:类似 IPv4 DHCP,但需要路由器支持。
IPv6 防火墙
- 由于 IPv6 无 NAT,需要配置防火墙 防止公网 IP 暴露设备。
IPv6 过渡机制
- 双栈(Dual Stack):同时运行 IPv4 和 IPv6(推荐)。
- 隧道(Teredo、6to4):让 IPv6 运行在 IPv4 之上。
总结
- IPv6 解决 IPv4 地址耗尽问题,提供更大的地址空间。
- IPv6 头部固定 40 字节,更简洁高效,路由转发性能更好。
- IPv6 原生支持自动配置(SLAAC)、IPSec 加密、安全性更强。
- IPv6 需要企业和运营商支持,部署时需注意防火墙和过渡机制。