CN——网络层(上)

4.1 网络层概述

4.1.1 网络层核心任务

网络层的核心作用:将分组从源主机,经过多个网络、多条链路、多台路由器,最终传输到目的主机

网络层包含两大核心功能:路由选择分组转发

4.1.2 两大核心功能详解

1. 分组转发

每一台路由器都会维护一张转发表

路由器从某个接口收到分组后,读取分组首部的标识信息,查询转发表,根据查表结果,将分组从合适的接口转发至下一跳路由器或直接交付给目的主机。

|---------------|-----------------|--------------|------|
| 目的网络前缀 | 子网掩码 | 下一跳 IP | 出接口 |
| (192.168.1.0) | (255.255.255.0) | 直接交付 | eth0 |
| (172.16.2.0) | (255.255.255.0) | (10.0.0.2) | eth1 |
| (172.16.0.0) | (255.255.0.0) | (10.0.0.5) | eth2 |
| (0.0.0.0) | (0.0.0.0) | [(10.0.0.2) | eth1 |

转发过程只负责查表转发,不负责计算路径。

2. 路由选择

源主机与目的主机之间通常存在多条可达路径,网络层需要通过算法选择最优路径传输分组。路由选择负责计算、生成最优路径

路由选择分为三种方式:

  1. 人工路由选择(静态路由)

  2. 分布式路由选择

  3. 集中式路由选择

4.1.3 网络层提供的两种服务模型

网络层向上层提供两类截然不同的服务:面向连接的虚电路服务无连接的数据报服务

1. 面向连接:虚电路服务

核心思想 :可靠通信由网络层 保证。

工作流程三步:先建连接 → 沿虚电路传输分组 → 通信结束释放连接

通信前,源主机与目的主机之间在网络层建立一条逻辑虚电路(VC) ,全程所有分组沿这条虚电路传输,网络提前预留资源。

关键区分

  • 电路交换:建立物理真实连接,属于物理层;

  • 虚电路交换:建立逻辑虚拟连接,属于网络层。

地址使用规则 :仅在虚电路建立阶段使用完整目的地址;数据传输阶段,分组首部仅携带虚电路编号(VCID),无需完整IP地址。

2. 无连接:数据报服务(Internet 真实采用)

核心思想 :可靠通信由用户主机(运输层) 保证,网络层只负责尽力交付。

核心特点:

  1. 通信前无需建立网络层连接,通信结束也无需释放连接;

  2. 每个分组独立选路、独立转发,不同分组可走不同路径;

  3. 每个分组首部必须携带完整目的IP地址

  4. 网络层尽最大努力交付,不可靠:分组可能丢失、出错、重复、失序。

将复杂的可靠处理功能放在网络边缘(主机、运输层) ;将简单、灵活、尽力交付的不可靠分组交付放在**网络核心(路由器、网络层),**大幅降低组网成本、提升网络灵活性、容错性极强。

虚电路服务、数据报服务对比

4.2 网际协议 IP 与 IPv4 编址体系

4.2.1 IP 协议核心作用

核心功能:异构网络互联

异构网络:指拓扑结构、传输性能、底层协议各不相同的网络,由用户多样化需求产生。

所有异构网络通过路由器互联,且统一使用IP协议 。从网络层视角,所有异构网络被统一成一个逻辑整体------IP网

主机通信时,无需感知底层网络的异构差异,如同在同一个网络中通信。

4.2.2 IPv4 地址定义

IPv4 地址:为 IP 网中每一个主机、每一个路由器接口 分配的全球唯一的 32bit 标识符

表示方式:点分十进制

4.2.3 IPv4 三大编址发展阶段

IPv4 编址方式历经三代演进:

  1. 第一阶段:分类编址(A、B、C、D、E类)

  2. 第二阶段:划分子网编址(在分类编址基础上延伸,引入子网号)

  3. 第三阶段:无分类编址 CIDR(当前互联网主流,彻底取消ABC类分类概念)

4.2.4 分类编址

分类编址将32位IPv4地址划分为两部分:网络号 + 主机号

只有 A、B、C 类地址可分配给主机、路由器接口使用;D类多播、E类保留不可用。

两个特殊地址

  1. 主机号全0 :代表本网络的网络地址,用于标识网段本身,不分配设备。

  2. 主机号全1 :代表本网段广播地址,用于全网段广播,不分配设备。

A、B、C类地址可指派规则与特殊限制

A类地址详细规则

A类地址网络号占8比特,最高位固定为0,剩余7位自由分配。

A类网络特殊保留网络号(不可指派)

  1. 网络号全0(0.0.0.0):A类最小网络,该网络号保留,不能分配使用。

  2. 网络号127.0.0.0 :A类最大网络(剩余7位全1,十进制127),专门用作本地环回测试网络,禁止指派给外网设备。

环回地址功能 :用于本地主机内部进程之间通信。主机发送目的地址为环回地址的IPv4数据包时,仅由本机协议软件处理数据,不会将数据包发送到任何外部网络

B类、C类地址指派规则

B类地址、C类地址无全网保留的特殊网络号 ,所有合规网段均可正常指派使用,无需扣除保留网络数量。

分类编址的缺点

分类编址严格按照A、B、C三类固定网段分配,分配方式僵硬、不灵活,极易造成IP地址资源浪费。

典型举例:若某网络需要300个主机地址,单个C类网段仅包含256个地址,无法满足需求;只能分配一个B类网段,而一个B类网段拥有65536个地址,大量地址闲置,造成严重的IPv4地址资源浪费。

4.2.5 划分子网编址

1. 核心原理

在原有分类编址(A、B、C类)的基础上,从主机号部分借用若干比特作为子网号 ,将一个大的标准网段,划分为多个更小的子网,解决分类编址地址浪费问题。

2. 子网掩码作用与规则

子网掩码 用于 区分 IP 地址的「网络位」和「主机位」

  1. 子网掩码中连续的比特1 :对应IPv4地址的网络号 + 子网号部分;

  2. 子网掩码中连续的比特0 :对应IPv4地址的主机号部分。

4.2.6 无分类编址 CIDR

1. 基本概念

CIDR 全称无分类域间路由选择,是目前因特网唯一使用的编址方式,彻底取消A、B、C类地址分类限制,完全基于网络前缀划分网段。

2. 斜线记法

CIDR 采用斜线记法 :在IPv4地址后加「/」,斜杠后数字代表网络前缀占用的比特位数,该位数对应原分类编址的「网络号+子网号」总位数。

3. CIDR 地址块聚合特性

CIDR 支持路由聚合(超网):将多个网络前缀相同、地址连续的网段,合并为一个大的CIDR地址块,有效缩减路由表规模。

4.3 IPv4 地址应用规划:子网划分

IPv4地址应用规划,本质是将一个大的IP地址块,合理切分为若干更小的子网块 ,适配不同规模局域网,提升地址利用率。主要分为定长子网划分变长子网划分两种方式。

4.3.1 定长子网划分(FLSM)

使用固定长度子网掩码 进行划分,划分得到的所有子网,子网位数、主机位数、地址总数完全一致。划分规则统一、计算简单,但无法适配差异化网络规模,仍存在少量地址浪费。

4.3.2 变长子网划分(VLSM)

使用不同长度的子网掩码划分子网,可根据网络实际主机数量,分配大小适配的子网块。灵活性极强,最大限度节约IPv4地址资源,是工程与考研计算题主流方式,存在多种合法划分方案。

4.3.3 基于二叉树的子网划分方法

二叉树划分法可同时适用于定长、变长子网划分 ,是子网计算题的通用核心思路,配套通俗记忆的堵水法 逻辑:

  1. 以完整地址块为二叉树根节点,从根开始逐层划分;

  2. 每一个需要的子网对应一个「堵水点」,占用对应二叉树分支;

  3. 已占用的分支不可重复划分、重复占用;

  4. 划分结束后保证二叉树末端无空闲泄漏地址,划分精准无浪费。

CIDR 节约地址案例(点对点链路)

路由器之间的点对点专线链路,仅需2个可用IP地址(两端路由器接口各一个),CIDR可精准适配:

  • /30 地址块 :共4个IP地址,包含1个网络地址、1个广播地址,剩余2个可用主机地址,完美适配点对点链路;

4.4 MAC地址 与 IPv4地址 对比

4.4.1 层级归属与作用

  1. MAC地址 :数据链路层地址,用于同一局域网内设备帧识别与交付;

  2. IPv4地址 :网络层地址,用于跨网络、跨路由 的分组寻址与交付;

  3. 端口号 :传输层及上层地址,用于主机内部进程间通信区分。

4.4.2 传输过程变化规则

  1. IP地址 :IPv4数据报首部的源IP、目的IP,全程保持不变 (不考虑NAT网络地址转换),保证端到端通信标识唯一。

  2. MAC地址 :以太网帧首部的源MAC、目的MAC,每经过一跳路由器就会刷新变化,仅用于当前链路的帧交付。

因特网为什么不能只用MAC地址?

因特网必须同时使用IP地址与MAC地址,仅靠MAC地址无法实现全网通信,核心原因两点:

  1. 地址结构差异 :MAC地址是无平面结构 的硬件地址,无法路由、无法跨网寻址 ;IP地址是层次化结构 (网络号+主机号),支持路由聚合、跨网络寻址,适配大规模互联网。

  2. 路由开销巨大:若仅使用MAC寻址,路由器路由表需要记录全网所有主机、所有接口的MAC地址,条目数量爆炸式增长,极大占用存储空间、增加查表时延、占用大量网络传输资源,完全无法实现。

总结 :IP地址负责跨网络宏观选路 (只记录网络条目),大幅精简路由表;MAC地址负责局域网内部微观交付,完成单链路帧转发,二者分层协作实现全网通信。

4.5 地址解析协议 ARP

网络通信依靠IP地址选路,局域网帧交付依靠MAC地址,因此主机需要建立IP地址与本机/局域网设备MAC地址的映射关系

地址解析协议ARP 的核心功能:根据已知的目标IP地址,动态查询获取对应的MAC地址,完成网络层IP地址到数据链路层MAC地址的解析,实现跨层协同通信。

4.5.1 ARP 核心机制与高速缓存

每一台主机、路由器接口都维护一张ARP高速缓存表,用于临时存储「IP地址---MAC地址」映射条目,避免每次通信都重复发送ARP广播,提升通信效率。

4.5.2 ARP 完整工作流程

场景:同一局域网内,主机A想要获取主机B的MAC地址

  1. 查询缓存:主机A先查找自身ARP高速缓存,若无主机B的IP-MAC映射,则发起ARP请求。

  2. 发送ARP广播请求 :主机A构造ARP请求报文,封装在以太网帧中发送。 帧特征:源MAC=主机A MAC,目的MAC=全F广播地址。 报文内容:我(A的IP、A的MAC)想要查询「B的IP」对应的MAC地址。

  3. 交换机广播转发:广播帧被交换机接收,向本网段所有端口广播,局域网内所有主机(B、X、Y、Z等)均收到该帧。

  4. 非目标主机(主机 X、Y、Z**)处理规则** : 主机X、Y、Z剥帧取出ARP请求,解析发现请求查询的IP不是本机IP,不响应、不回复 。 但会主动缓存主机A的IP+MAC映射 到自身ARP表中。

  5. 目标主机(主机B)处理规则 : 主机B解析ARP请求,发现查询IP为本机IP,立即记录缓存主机A的IP、MAC。 构造ARP响应报文,封装为单播帧回复主机A。

  6. ARP单播响应报文 : 帧特征:目的MAC=主机A的MAC(单播) 。 响应内容:我(B的IP、B的MAC)就是你要查询的主机。

  7. 主机A接收更新缓存:主机A收到单播帧,验证目的MAC匹配本机,接收报文并将「B的IP-MAC」写入自身ARP高速缓存。

4.5.3 ARP 高速缓存的两种条目类型

1. 动态ARP条目(默认主流)

自动通过ARP请求/响应学习生成,具有时效性、生命周期

生命周期内无通信触发更新,则自动超时删除

超时机制原因:IP与MAC映射并非永久固定。例如主机更换网卡,IP不变但MAC改变,旧映射失效,必须通过超时更新保证准确性。

补充:交换机MAC地址表的接口-MAC映射同样具有时效性,动态老化。

2. 静态ARP条目

由管理员手动配置 的永久映射条目,无过期时间、不会自动覆盖、不会超时删除,可手动删除。

用途:绑定网关、服务器等关键设备映射,防止动态ARP更新出错、防止ARP欺骗攻击,保障网络稳定安全。

4.5.4 跨网段 ARP 工作规则

ARP 只能在同一局域网(同一广播域)生效,无法跨网络直接解析

  1. 源主机与目的主机跨网段通信时,源主机不会解析远端目的主机MAC

  2. 源主机仅通过ARP解析默认网关的MAC地址,将数据发给网关;

  3. 数据每经过一台路由器、进入一段新链路,新链路都会重新执行ARP解析

  4. 只有最后一跳路由器,会通过ARP解析真正的目的主机MAC地址,完成最终交付。

4.5.5 ARP 协议缺陷

ARP协议无任何安全校验机制 ,极易被伪造,存在ARP欺骗、ARP中毒、中间人攻击等安全漏洞。

4.5.6 ARP 终极总结

ARP协议用于解决同一广播域内IP地址到MAC地址的映射。

主机通过广播ARP请求、单播ARP响应完成地址解析;所有收到广播的主机均会缓存源端映射,仅目标主机回复响应。

ARP缓存分为动态时效条目与静态永久条目。

ARP不可跨网络通信,跨网段仅解析网关MAC,最后一跳解析目的主机MAC。

4.6 IPv4 数据报的发送与转发过程

4.6.1 直接交付 与 间接交付

主机发送IPv4数据报分为两种交付方式:

  1. 直接交付 :源主机与目的主机处于同一个网络(同一网段),无需经过路由器,主机之间直接通信交付数据报。

  2. 间接交付 :源主机与目的主机处于不同网络 ,无法直接通信,必须交由默认网关(路由器) 中转转发。

4.6.2 主机判断同网段/异网段的核心算法

源主机判断依据:用自身子网掩码,分别对自身IP、目的IP做逐比特逻辑与运算,对比网络号是否一致

实战举例

主机A:IP=10.1.1.1,子网掩码=255.255.255.0

  1. 计算自身网络号:A的IP & 子网掩码 = 10.1.1.0

  2. 判断主机B(同网段) :B的IP & A的掩码 = 10.1.1.0,网络号一致 → 直接交付

  3. 判断主机C(异网段) :C的IP=10.2.2.1,C的IP & A的掩码 = 10.2.2.0,网络号不一致 → 间接交付,发往网关

与本机网络号相同 → 同网直接交付;不同 → 跨网间接交付。

4.6.3 路由器对单播IPv4数据报的转发规则

1. 先校验:正确接收的条件

路由器收到数据报后,必须先校验,满足以下条件才会处理转发:

  1. IPv4首部无校验误码、字段无差错、无非法值、字段完整

  2. 生存时间TTL未递减至0,数据报未超时报废。

不满足条件则直接丢弃该数据报。

2. 查表转发:最长前缀匹配原则

路由器根据数据报首部的目的IP地址查询转发表。

转发表核心条目:目的网络、地址掩码、下一跳

当目的IP同时匹配多条路由条目时,严格执行最长前缀匹配

子网掩码越长、网络前缀越长,网段越具体、优先级越高,优先匹配转发

3. 路由器对广播数据报的处理

路由器隔离广播域 :路由器正确收到广播IPv4数据报 后,直接丢弃、不转发,有效限制广播风暴跨网络扩散。

4.7 IPv4 数据报首部格式

IPv4数据报首部结构:固定20字节 + 可变选项字段(最大40字节) ,因此IPv4首部总长度范围:20~60字节

4.7.1 首部核心字段

1. 版本字段(4bit)

标识IP协议版本,当前全网统一使用 版本号4(IPv4)。通信双方IP版本号必须一致,否则无法通信。

2. 首部长度字段(4bit)

用于标识IPv4首部的总长度,以4字节为单位 计数。

4bit字段最大取值15,对应最大首部长度 15×4=60字节,与IPv4首部最大长度一致。

若无选项字段,首部长度固定为20字节,该字段值为5(5×4=20)。

口诀:一总八片首四

释义:总长度(1字节为单位)、片偏移(8字节为单位)、首部长度(4字节为单位)。

3. 首部长度字段取值范围

首部长度字段为4bit,以4字节为单位:

  • 最小值 0101(十进制5) :5×4 = 20字节,对应无选项的固定首部

  • 最大值 1111(十进制15):15×4 = 60字节,对应固定20字节 + 最大40字节可变选项填充部分。

填充字段规则:若添加选项后,首部长度无法凑成4字节整数倍,则用全0填充字段 补齐,强制保证首部4字节对齐。

4. 总长度字段(16bit)

1字节 为单位,表示IPv4首部 + 数据载荷 的总长度。

16bit字段最大取值65535字节,即IPv4数据报理论最大长度为65535字节。

实际受限:以太网帧 MTU=1500字节(最大传输单元),因此网络中几乎不会出现65535字节的超大IP数据报,超长数据报必须分片传输。

5. 标识、标志、片偏移(分片三大核心字段)

三个字段配合完成IPv4数据报分片与重组,解决IP数据报长度超过链路MTU无法封装的问题。

(1)标识字段(16bit)

源主机每发送一个新IP数据报,分配一个唯一标识号。同一个原始数据报拆分出的所有分片,标识字段完全相同,目的主机依靠该字段区分哪些分片属于同一个原始数据报。

(2)标志字段(3bit)

三位结构:最高位保留位 + DF位 + MF位

  • 保留位:固定为0,协议保留,不可更改;

  • DF位(不允许分片位) :DF=1 禁止分片 ,数据报超长直接丢弃;DF=0 允许分片

  • MF位(更多分片位) :MF=1 代表后续还有分片 ;MF=0 代表当前是最后一个分片,无后续分片

(3)片偏移字段(13bit)

8字节为单位,标识当前分片的数据载荷,相对于原始IP数据报数据起始位置的偏移量。

硬性规则 :除最后一个分片外,所有前置分片的数据长度必须是8字节的整数倍

分片重组规则

目的主机收到所有分片后,通过相同标识字段判定同源分片 ,再根据片偏移字段从小到大排序,最终完整重组为原始IPv4数据报。

6. TTL 生存时间字段(8bit)

TTL(Time To Live,生存时间)字段占8bit,用于限制数据报最大转发跳数、防止环路死循环

路由器转发规则 :路由器每收到一个可转发的IP数据报,先将首部TTL字段自动减1 ;再判断

  • 减1后 TTL > 0:正常查表转发;

  • 减1后 TTL = 0:直接丢弃数据报,不再转发。

完整转发规则补充 :路由器将TTL减1后,仅当TTL≠0时,查表正常转发 ;若TTL=0,直接丢弃该IPv4数据报,同时向数据报源主机发送ICMP差错报告报文 ,错误类型为时间超过

TTL核心作用 :防止因路由错误、路由环路导致IPv4数据报在互联网中无限循环兜圈。若无TTL机制,环路数据包会永久占用链路带宽、消耗设备资源,造成严重网络资源浪费。

TTL拓展应用

  1. 实现**路由跟踪(tracert)**功能,利用每跳TTL自动减1、超时报错的特性,探测源主机到目的主机的完整转发路径;

  2. 限制IP多播数据报的传播范围;

  3. 用于网络监控、操作系统识别:主流系统默认TTL固定,Windows默认TTL=128,Linux默认TTL=64

7. 协议字段(8bit)

标识IPv4数据报的数据载荷部分采用的传输层协议PDU类型,用于告知目的主机网络层交付数据给上层哪种协议处理。

核心固定取值:

8. 首部检验和字段(16bit)

用于校验IPv4数据报首部 在传输过程中是否发生误码、字段出错,仅校验首部、不校验数据载荷

只校验首部的原因 :每经过一台路由器,TTL、标志位、片偏移等首部字段大概率会发生改变,需要重新计算检验和;仅校验首部可大幅减少路由器计算开销,提升转发效率。

4.7.2 校验算法:因特网检验和

IPv4不采用复杂的CRC循环冗余校验,使用简易反码求和校验,运算速度更快、开销更低,该算法同样适用于TCP、UDP报文段。

1.发送方计算流程
  1. 将IPv4首部的「首部检验和」字段置全0

  2. 把整个IPv4首部划分为若干个16比特二进制序列

  3. 对所有16比特序列执行反码求和运算

  4. 将最终求和结果按位取反 ,写入首部检验和字段,完成封装发送。

2.接收方校验流程
  1. 将接收的IPv4首部再次划分为若干16比特序列;

  2. 统一执行反码求和运算;

  3. 运算结果为全0:首部无传输误码,数据合法;

  4. 运算结果非0:首部出现差错、数据损坏,直接丢弃该数据报。

3.实例
4.算法特点
  1. 因特网检验和校验精度弱于CRC,但运算速度更快、处理效率更高,适配路由器高速转发场景;

  2. IPv6重大优化:IPv6取消了路由器首部检验和计算,进一步降低转发开销、提升转发速率;

相关推荐
莫浅子2 小时前
Day 4:USB 2.0 时序与带宽预算
linux·运维·网络
_Narcissus_2 小时前
排序算法总结表格
c语言·数据结构·c++·笔记·算法·排序算法·总结
新手unity自用笔记2 小时前
unity基于Socket的网络学习
网络·网络协议·学习·unity·c#·游戏引擎
XUEYUAN52122 小时前
Cloudflare 防护机制深度剖析与跨境数据采集工程化实践
服务器·网络·网络协议·tcp/ip·http
青瓦梦滋2 小时前
IP/MAC帧/ARP协议
运维·服务器·网络·网络协议·tcp/ip
嵌入式阿蔡4 小时前
传感器_02:MPU6050 六轴 IMU 姿态入门——从一串看不懂的数,到一个不漂的角度
网络·stm32·单片机·嵌入式硬件·嵌入式实时数据库
阿 才4 小时前
Matlab(Simulink)使用详解
运维·网络·matlab
MartinYeung54 小时前
[论文学习]δ-STEAL:基于本地差分隐私的大语言模型窃取攻击
网络·学习·语言模型
wWYy.4 小时前
Linux怎么接受数据包
linux·网络