第四章:网络层

一.网络层概述

主要任务:实现网络互连,进而实现数据包在各网络之间的传输

解决的问题:

1.网络层向运输层提供的是怎样的服务(可靠性服务or不可靠性服务)

2.网络层寻址问题

3.路由选择问题

二.网络层提供的两种服务

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

2.无连接的数据报服务

三.IPV4

3.1ipv4地址概述

IPv4地址就是因特网上的每一台主机(或路由器)的每一个接口 分配一个在全世界范围内是唯一的32比特的标识符。

3.2分类编址的ipv4

我们在上一章节讲过ipv4的地址分类其中:

A类地址网络号第1位固定为0,网络号后面部分不能全0,也不能全1,所以网络号范围是1~126

B类地址网络号前2位固定为10,网络号后面部分可以全取0或1,所以网络号范围是128.0~191.255

C类地址网络号前3位固定为110,网络后后面部分可以全取0或1,所以网络号范围是192.0.0~223.255.255

D类地址为多播地址,IP地址为224.0.0.0~239.255.255.255

一般不适用的ip地址:

3.3划分子网的ipv4

为什么要划分子网:

  1. 节省 IP 地址:比如一个大网络(如 B 类地址)直接用会浪费大量主机位,子网划分能把大网段拆成小网段,按需分配。
  2. 简化网络管理:按部门、区域等划分不同子网,方便隔离故障、控制流量,提升网络安全性和稳定性。
  3. 减少广播风暴:广播包只在子网内传播,缩小广播域范围,避免整个大网络被广播流量占用。
    如何换分子网的ipv4地址:

32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号

子网掩码使用连续的比特1来对应网络号和子网号(子网号来自原先的一部分主机号)

子网掩码使用连续的比特0来对应主机号

将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算【即掩码是1的部分】就可得到IPv4地址所在子网的网络地址

给定一个分类的ip地址和其相对应的子网掩码,就知道子网换分的细节:

1.划分出子网数量

2.每个子网可分配的ip地址数量

3.每个子网的网络地址和广播地址

4.每个子网可分配的最小和最大地址

默认的子网掩码:

定义:指在未划分子网的情况系是用的子网掩码。

A类:255.0.0.0

B类:255.255.0.0

C类:255.255.255.0

3.4无分类编址的ipv4

为什么需要无分类编址的ipv4?

划分子网在一定程度上缓解了因特网发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用 ,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁

无分类域间路由选择CIDR

CLDR消除了传统的ABC类地址和划分子网的概念,能够更加有效的分配IPV4地址,他使用的是斜线法来划分,例如:

192.168.0.1/28 就是32比特的前28比特作为网络号,其余的作为主机号。

路由聚合

如路由器A上连接同一网络的多台主机,路由器B与A相连。若A将所有主机的具体IP地址都报给B,则路由器B中会增加多项路由条目。可实际上B向A中任意一个主机转发数据的时都是走同一个端口,因此我们可以将这些网络的共同前缀提取出来成为新的网络号,同时将剩余主机号置0放入路由器B中

3.5ipv4地址的应用规划

四.IP数据报的发送和转发过程

同一个网络之间的主机可以直接通信,不同网络之间的主机通信需要路由器中转。

源主机如何判断目的主机是否和自己在同一个网络中?

将自身的IP地址与子网掩码相与 得到自身的网络号1,再将目的IP地址与自身子网掩码相与得到网络号2。若两个网络号相等,则说明处在同一个网络

主机如何知道应该把IP数据报交给哪个路由器进行转发呢?

通过设置默认网关。所谓默认网关,即当路由表中查不到数据时会将数据发往的路由器端口IP地址

五.静态路由配置及其可能产生的路由环路问题

静态路由配置:是指用户或者网络管理员使用路由器的相关命令给路由器人工配置路由表

这种人工配置方式简单、开销小。但不能及时适应网络状态的变化。一般只在小规模网络中采用

可能由于:①配置错误 ②聚合了不存在的网络 ③网络故障 而出现路由环路错误

默认路由为:0.0.0.0/0 。其作用是当路由表不知道往哪里转发时,就会往默认路由指定的下一跳位置转发,根据网络号最长匹配原理,默认路由网络号长度为0,因此一定是最后一个被匹配的条目

特定主机路由:具体主机IP/32。网络号前缀长度32保证了这是第一个被匹配的静态条目

使用静态路由配置可能出现以下导致产生路由环路的错误:

1.配置错误

2.聚合了不存在的网络

3.网络故障
路由条目的类型

直连网络

静态路由(人工配置)

动态路由(路由选择协议)

黑洞路由(下一跳为null0),下一跳 / 出接口指向 Null0(永不 Down 的逻辑丢弃口),匹配后静默丢弃,不产生回执或环路。

六.路由选择协议

因特网所采用的的路由选择协议主要特点

  • 自适应:动态路由选择,能较好地适应网络状态的变化
  • 分布式:路由器之间交换路由信息
  • 分层次 :将整个因特网划分为许多较小的自治系统AS

分类:

1.静态路由选择

由人工配置的网络路由、默认路由、特定主机路由、黑洞路由等都属于静态路由。

这种人工配置方式简单开销小、但不能及时适应网络状态(流量、拓扑等)的变化.

一般只在小规模网络中采用。

2.动态路由选择

路由器通过路由选择协议自动获取路由信息。

比较复杂、开销比较大。能较好地适应网络状态的变化。

适用于大规模的网络。

因特网采用分层次的路由选择协议。

6.2路由信息协议RIP的基本工作原理

路由信息协议RIP是内部网关协议IGP中最先得到并广泛使用的协议其相关标准是RFC 1058

RIP使用跳数 作为度量来衡量到达目的网络的距离。

路由器到直连网络的距离定义为1。

路由器到非直连网络的距离定义为所经过的路由器数加1。

允许一条路径最多只能包含15个路由器。

"距离"等于16时相当于不可达。因此,RIP只适用于小型互联网。

RIP认为好的路由就是"距离短"的路由,也就是所通过路由器数量最少的路由。

当到达同一目的网络有多条"距离相等"的路由时,可以进行等价负载均衡。

RIP包含以下三个要点:

仅和相邻路由器交换信息

交换的是各自路由表的信息

周期性交换信息

RIP的基本工作过程

1路由器刚开始工作时,只知道自己到直连网络的距离为1。

2每个路由器仅和相邻路由器周期性地交换并更新路由信息。

3若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址,称为收敛。
RIP的路由条目的更新规则

发现了新的网络,添加

到达目的网络,不同下一跳,新路由优势,更新

到达目的网络,不同下一跳,等价负载均衡

到达目的网络,相同下一跳,最新消息,更新

到达目的网络,不同下一跳,新路由劣势,不更新

RIP存在的问题:

存在"坏消息传播很慢"的问题,又称为路由环路(两个路由器相互学习错误路由,造成循环)或距离无穷计数问题,这是距离向量算法的一个固有问题,可以采取多种措施减少出现该问题的概率或减小该问题带来的危害。

如何解决:

限制最大路径距离为15(16表示不可达)

当路由表发生变化时就立即发送更新报文(即"触发更新"),而不仅是周期性发送

让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送(即"水平分割"。

6.3开放最短路径优先OSPF的基本工作原理

定义:OSPF 是基于链路状态的内部网关协议,核心是通过交换链路状态信息、计算最短路径来实现路由转发,且支持无类域间路由(CIDR)和认证机制。

  • 链路状态通告(LSA):路由器向自治系统(AS)内所有其他路由器广播自身的链路状态,包括直连网络、链路开销(如带宽、延迟)、邻居路由器等信息。
  • 链路状态数据库(LSDB):每个路由器接收所有 LSA 后,构建统一的 LSDB,相当于整个 AS 的拓扑结构图。
  • Dijkstra 算法:基于 LSDB 计算从自身到所有目的网络的最短路径,生成最短路径树(SPT),进而导出转发表。
  • OSPF是基于链路状态的,而不像RIP那样是基于距离向量的
  • OSPF采用SPF算法计算路由,而不像RIP那样是基于距离向量的
  • OSPF不限制网络规模,更新效率高,收敛速度快
  • 链路状态是指本路由器都和哪些路由器相邻,以及相应链路的"代价"
  • "代价"的意思是费用、距离、时延、带宽等
  • OSPF相邻路由器之间通过交互问候(Hello)分组,建立和维护邻居关系
  • Hello分组封装在IP数据报中,发往组播地址224.0.0.5
  • 发送周期为10秒
  • 40秒未收到来自邻居路由器的Hello分组,则认为该邻居路由器不可达
  • 使用OSPF的每个路由器都会产生链路状态通告LSA,包含以下内容
  • 直连网络的链路状态信息
  • 邻居路由器的链路状态信息
  • LSA被封装在链路状态更新分组LSU中,采用洪泛法发送
  • 使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA
  • 通过各路由器洪泛法发送封装有自己LSA的LSU分组,各路由器的LSDB最终达到一致
  • 使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各种到达其他各路由器的最短路径,即构建各自的路由表
    OSPF的物种分组类型:

问候分组:用来发现和维护邻居路由器的可达性

数据库描述分组:向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息

链路状态请求分组:向邻居路由器请求发送某些链路状态项目的详细信息

链路状态更新分组:路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态

链路状态确认分组:这是对链路状态更新分组的确认分组
OSPF基本工作过程

相邻路由器之间周期性发送问候分组(Hello),以便建立和维护邻居关系

建立邻居关系后,给邻居路由器发送数据库描述分组(DD),也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器

收到数据库描述分组后,若发现自己缺少其中某些链路状态项目,则会发送链路状态请求分组(LSR)。

对方收到链路状态请求分组后,则会将其所缺少的链路状态项目的详细信息封装在链路状态更新分组(LSU)中发送回去

收到链路状态更新分组后,将这些信息添加到自己的链路状态数据库中

邻居关系的建立

一条总线上有多台主机,则它们互为邻居,因此每个路由器都要向其他路由器发送问候分组和链路状态更新分组。为了减少所发送分组的数量,则需要用相应方法对邻居关系进行删减

OSPF采用选举指定路由器DR(Designated Router)和备用的指定路由器BDR(Backup Designated Router)的方法减少邻居数目

所有的非DR/BDR只与DR/BDR建立邻居关系

非DR/BDR之间通过DR/BDR交换信息

当DR失效时由BDR顶上

6.4边界网关协议BGP的基本工作原理

外部网关协议EGP(例如边界网关协议BGP)

在不同自治系统内,度量路由的"代价"(距离,带宽,费用等)可能不同。因此,对于自治系统之间的路由选择,使用"代价"作为度量来寻找最佳路由是不行的。自治系统之间的路由选择必须考虑相关策略(政治,经济,安全等)

BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由

在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的"BGP发言人"

BGP发言人:

  1. BGP 发言人是自治系统的 "路由代言人",负责在 AS 之间传递路由信息,帮助构建跨 AS 的全局路由表。
  2. 其核心作用是与其他 AS 的 BGP 发言人建立邻居关系,交换可达路由(包括目的网络、AS 路径、下一跳等信息),并根据策略筛选最优路由

不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179

在此TCP连接上交换BGP报文以建立BGP会话

利用BGP会话交换路由信息(例如,增加新的路由,或撤销过时的路由,以及报告出错的情况等)使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站(neighbor)或对等站(peer)

BGP-4的4中报文

OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化

UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的多条路由

KEEPALIVE(保活)报文:用来周期性地证实邻站的连通性

NOTIFICATION(通知)报文:用来发送检测到的差错

七.IPV4数据报的首部格式

ipv4数据报的首部是由固定部分的20个字节和可变部分的40个字节组成的。

版本:标识ip协议的版本,比如ipv4对应的值是4

首部长度:4个字节,表示ip数据报的首部长度,若他的值是5说明首部只有固定长度,若大于5说明包含可变长度。

区分服务:占8比特,用来获得更好的服务。1998年,因特网工程任务组IETF把这个字段改名为区分服务。利用该字段的不同数值可提供不同等级的服务质量。只有在使用区分服务时,该字段才起作用。一般情况下都不使用该字段。

总长度:占16比特,表示IP数据报的总长度(首部+数据载荷)。最大取值为十进制的65535,以字节为单位

标识:占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段

标志:占3比特,各比特含义如下:DF位:1表示不允许分片;0表示允许分片:MF位:1表示"后面还有分片";0表示"这是最后一个分片";保留位:必须为0.

片偏移:占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位。片偏移以8个字节为单位。

生存时间(TTL):占8比特,表示IP数据报的生存时间

最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP數据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃。

现在以"跳数"为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。

IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志、片偏移等)的取值可能发生变化,

协议:标识数据部分对应的上层协议,比如:6对应 TCP,17对应 UDP,1对应 ICMP。

首部检验和:仅对 IPv4 首部进行校验(不包含数据部分),用于检测首部在传输过程中是否出错。

源ip地址,目的ip地址:发送方主机的ipv4地址和接收方主机的ipv4地址

可选字段:长度可变(0~40 字节),用于扩展 IPv4 功能,比如:

记录路由(让数据报经过的路由器记录自身 IP);

时间戳(记录数据报经过路由器的时间);

源路由(指定数据报必须经过的路径)

填充:由于首部长度必须是 4 字节的整数倍,若可选字段长度不足,则用0填充补位。

八.网际控制报文协议ICMP

ICMP的目的:为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP。

主机或者是路由器使用icmp来发送差错报告报文和询问报文。

ICMP报文被封装在ip数据报中发送。

ICMP 报文的两大类型:

1. 差错报告报文(5 种)

用于告知 IP 数据报传输中的问题:

  • 终点不可达:目标地址无法到达(如端口未开放、路由不存在)
  • 源点抑制:接收方缓存满了,让发送方降低发送速率
  • 时间超过:数据报 TTL 耗尽(跳数超限),或分片重组超时
  • 参数问题:IP 数据报头部字段错误
  • 改变路由(重定向):告诉发送方更优的下一跳路由

2. 查询报文(2 种)

用于主动获取网络信息:

  • 回送请求 / 回答 :比如PING命令(发送请求,接收方回复)
  • 时间戳请求 / 回答:同步两台设备的时间

不发送ICMP报告报文:

对ICMP差错报告报文不再发送ICMP差错报告报文

对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文

对具有多播地址的数据报都不发送ICMP差错报告报文

对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文

ICMP应用举例:

1.分组网间探测PING

用来测试主机或路由器间的连通性:ping命令

应用层直接使用网际层的ICMP(没有通过运输层的TCP或UDP)

使用ICMP回送请求和回答报文

跟踪路由tracerouce

用来测试IP数据报从源主机到达目的主机要经过哪些路由器

1.Windows版本

tracert命令

应用层直接使用网际层ICMP

使用了ICMP回送请求和回答报文以及差错报告报文

实现方法

由主机发送出去的数据包中的生存时间字段TTL由1开始逐渐增加,每个路由器都会返回一个时间超过报文,由此达到跟踪路由器的目的

九.虚拟专用VPN与网络地址转换NAT

一、虚拟专用网(VPN):跨公网的 "安全专用通道"

  1. 核心定义

VPN 是在公共互联网(如互联网) 之上,通过加密、隧道技术构建的 "虚拟专用网络",让地理上分散的私有网络(如企业分支、远程办公设备)能像在同一私有网络中一样安全通信。

  1. 核心需求(解决的问题)
  • 企业分支与总部跨公网通信时,避免数据被窃听、篡改(公网是开放环境,安全无保障);

  • 远程办公设备(如员工笔记本)接入企业内网,需隔离公网风险;

  • 节省专线成本(传统私有网络靠物理专线连接,费用高昂,VPN 复用公网线路)。

  1. 核心技术原理
  • 隧道技术:将私有网络的 IP 数据报(如企业内网的 192.168.0.0/24 网段数据)封装在公网可传输的数据包中(如 IPsec 隧道、GRE 隧道),形成 "隧道",公网仅负责转发隧道数据包,无法识别内部私有数据;

  • 加密与认证:对隧道内的私有数据进行加密(如 AES 加密),并对通信双方进行身份认证(如预共享密钥、数字证书),确保数据不被窃听、篡改或伪造;

  • 私有地址复用:VPN 连接的多个私有网络可使用相同的私有地址段(如均用 192.168.1.0/24),隧道技术会通过 "隧道标识" 区分不同网络的数据包,避免地址冲突。

  1. 常见类型与应用场景
  • 远程访问 VPN:员工居家办公时,通过 VPN 客户端接入企业内网,访问内网服务器(如文件服务器、OA 系统);

  • 站点到站点 VPN(Site-to-Site):企业总部与异地分支之间建立 VPN 隧道,分支内网设备可直接与总部内网设备通信(如分支员工访问总部数据库);

  • 典型协议:IPsec(最常用,工作在网络层,支持加密、认证)、PPTP(早期协议,安全性较弱)、L2TP(需配合 IPsec 实现加密)。

  1. 关键特点
  • 安全性:核心优势,依赖加密、认证、隧道三重保障;

  • 虚拟性:无物理专线,复用公网资源,降低成本;

  • 专用性:仅授权设备可接入,逻辑上隔离其他公网用户。

二、网络地址转换(NAT):内网地址与公网地址的 "翻译官"

  1. 核心定义

NAT 是部署在私有网络与公网边界设备(如路由器、防火墙) 上的技术,负责将私有网络的 "私有 IP 地址" 与公网的 "公有 IP 地址" 相互转换,实现多个内网设备共享少量公有 IP 访问公网。

  1. 核心需求(解决的问题)
  • IPv4 地址枯竭:公有 IPv4 地址数量有限,无法给每个内网设备分配独立公有 IP;

  • 内网地址隔离:私有 IP 地址(如 192.168.0.0/16、10.0.0.0/8、172.16.0.0/12)仅在私有网络内有效,不占用公有 IP 资源,且能隔离公网风险(公网无法直接访问内网设备)。

  1. 核心技术原理
  • 地址转换规则:

    • 内网→公网:内网设备发送数据包时,NAT 设备将 "源 IP(私有 IP)" 转换为 "公有 IP",同时记录 "私有 IP + 端口" 与 "公有 IP + 端口" 的映射关系(端口地址转换 PAT,最常用);

    • 公网→内网:公网返回的数据包到达 NAT 设备时,设备根据之前记录的映射关系,将 "目的 IP(公有 IP)" 转换为对应的 "私有 IP",并转发到内网设备;

  • NAT 映射表:存储映射关系的核心,包含 "内网私有 IP、内网端口、公网公有 IP、公网端口、协议类型(TCP/UDP)",确保数据能正确转发。

  1. 常见类型与应用场景
  • 静态 NAT:私有 IP 与公有 IP 一对一固定映射(如内网服务器需对外提供服务,固定映射一个公有 IP);

  • 动态 NAT:从公有 IP 地址池动态分配一个公有 IP 给内网设备,会话结束后释放;

  • 端口地址转换(PAT):多个内网设备共享一个公有 IP,通过不同的 "端口号" 区分(如内网 10 台设备同时上网,均使用公有 IP 203.0.113.5,靠端口号 1024、1025... 区分不同设备的会话);

  • 典型应用:家庭路由器(将家庭内网的 192.168.1.0/24 地址转换为运营商分配的公有 IP)、企业网关(内网多设备共享企业的公有 IP 访问互联网)

相关推荐
承渊政道5 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
讯捷蓝达7 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
数字新视界9 小时前
动环监控信创适配在智能机房管理中的应用价值与未来展望
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
爱和冰阔落9 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
lisanmengmeng10 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
严肃小白兔10 小时前
Cloudflare 更新 API Token 管理:从最小权限到自动化凭据安全
网络·安全·自动化
Android系统攻城狮11 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
上火的金鱼妹11 小时前
k8s生产实际问题排查(网关,数据库读写等)
运维·服务器
孙克旭_11 小时前
k8s基础组件与创建资源
运维·docker·容器·kubernetes
孙克旭_11 小时前
云原生基础之Containerd容器运行时
运维·云原生