avatar

cindahy

A text-focused Halo theme

  • 首页
  • 文章分类
  • 项目
  • 关于
Home 计算机网络4-网络层
文章

计算机网络4-网络层

Posted 27 days ago Updated 27 days ago
By Administrator
85~110 min read

网络层的几个重要概念

网络层提供的两种服务

对比的方面

虚电路服务

数据报服务

思路

可靠通信应当由网络来保证

可靠通信应当由用户主机来保证

连接的建立

必须有

不需要

终点地址

仅在连接建立阶段使用,每个分组使用短的虚电路号

每个分组都有终点的完整地址

分组的转发

属于同一条虚电路的分组均按照同一路由进行转发

每个分组独立选择路由进行转发

当结点出故障时

所有通过出故障的结点的虚电路均不能工作

出故障的结点可能会丢失分组,一些路由可能会发生变化

分组的顺序

总是按发送顺序到达终点

到达终点时不一定按发送顺序

端到端的差错处理和流量控制

可以由网络负责,也可以由用户主机负责

由用户主机负责

网络层的两个层面

数据层/控制层

  • 数据层面:路由器根据本路由器生成的转发表,把收到的分组从查找到的对应接口转发出去。

  • 控制层面:根据路由选择协议所用的路由算法计算路由,创建出本路由器的路由表。

软件定义网络 SDN 中的数据层面和控制层面

网际协议IP

与 IP 协议配套使用的还有三个协议:

  • 地址解析协议 ARP(Address Resolution Protocol)

  • 网际控制报文协议 ICMP(Internet Control Message Protocol)

  • 网际组管理协议 IGMP(Internet Group Management Protocol)

虚拟互联网络

使用中间设备进行互连

使用转发器或网桥不称为网络互联,仅仅是把一个网络扩大了,仍然是一个网络。

IP 网的意义

  • 使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。

  • 如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)。

IP地址

IP 地址的编址方式经历了三个历史阶段:

  • 分类

  • 子网划分

  • 无分类

IP地址及其表达方式

IP 地址:32 位二进制代码,分为每 8 位为一组

IP地址采用二级结构

IP 地址 ::= {<net-id>, <host-id>}

分类的IP地址

各类 IP 地址的指派范围

  • 指派时要扣除全 0 和全 1 的主机号。

无分类编址CIDR

CIDR (Classless Inter-Domain Routing) :无分类域间路由选择。

无分类编址 CIDR 消除了传统 A 类、B 类和 C 类地址以及划分子网的概念,使用网络前缀和主机号来对 IP 地址进行编码,网络前缀的长度可以根据需要变化。

IP 地址 ::= {< 网络前缀号 >, < 主机号 >}

  • 网络前缀:前缀的位数 n 不固定,可以在 0 ~ 32 之间选取任意值

CIDR 记法:斜线记法 (slash notation)a.b.c.d / n:二进制 IP 地址的前 n 位是网络前缀。

例如128.14.35.7/20:前 20 位是网络前缀。

  • 地址块:CIDR 把网络前缀都相同的所有连续的 IP 地址组成一个 CIDR 地址块。

  • 地址掩码:又称为子网掩码 ,由一连串 1 和接着的一连串 0 组成,而 1 的个数就是网络前缀的长度。

/20 地址块的地址掩码:11111111 11111111 11110000 00000000

例题

13. (单选题, 2分)某网络的IP地址空间为192.168.5.0/24,采用定长子网划分,子网掩码为255.255.255.248,则该网络中的最大子网个数、每个子网内的最大可分配地址个数分别是

  • A. 32,8

  • B. 32,6

  • C. 8,32

  • D. 8,30

我的答案:B:32,6;正确答案:B:32,6;

网络地址 = (二进制的 IP 地址) AND (地址掩码)

把这种通过使用网络前缀来减少路由表项的方式称为路由聚合,也称为 构成超网 。

在路由表中的项目由“网络前缀”和“下一跳地址”组成,在查找时可能会得到不止一个匹配结果,应当采用最长前缀匹配来确定应该匹配哪一个。

三个特殊的CIDR地址块

网络前缀长度

点分十进制

说明

/32

255.255.255.255

就是一个 IP 地址。这个特殊地址用于主机路由

/31

255.255.255.254

只有两个 IP 地址,其主机号分别为 0 和 1。

这个地址块用于点对点链路

/0

0.0.0.0

同时 IP 地址也是全 0,即 0.0.0.0/0。用于默认路由。

IP地址的特点

  • 每个 IP 地址都由网络前缀和主机号两部分组成。

  • IP 地址是标志一台主机(或路由器)和一条链路的接口。

  • 转发器或交换机连接起来的若干个局域网仍为一个网络。

  • 在 IP 地址中,所有分配到网络前缀的网络都是平等的。

同一个局域网上的主机或路由器的IP 地址中的网络号必须一样。

路由器的每一个接口都有一个不同网络号的 IP 地址。

IP地址与MAC地址

  • IP地址:虚拟地址、软件地址、逻辑地址。网络层和以上各层使用。放在 IP 数据报的首部。

  • MAC地址:固化在网卡上的 ROM 中。硬件地址、物理地址。数据链路层使用。放在 MAC 帧的首部。

从协议栈的层次上看 IP 地址和 MAC 地址

地址解析协议APR

问题:已经知道了一个机器(主机或路由器)的 IP 地址,如何找出其相应的 MAC 地址?

ARP (Address Resolution Protocol ) 作用:从 IP 地址解析出 MAC 地址。

  • APR高速缓存

  • 存放 IP 地址到 MAC 地址的映射表。

  • 映射表动态更新(新增或超时删除):超过生存时间的项目都从高速缓存中删除,以适应网络适配器变化

  • APR工作

  • ARP 查找 IP 地址对应的 MAC地址

  • 在局域网上广播发送 ARP 请求(路由器不转发 ARP 请求)。

  • ARP 请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知时填 0) / 目标方 IP 地址。

  • 单播 ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址。

  • ARP 分组封装在以太网帧中传输。

如果两台主机不在同一个局域网上:

通信的路径:A → 经过 R1 转发 → B。因此主机 A 必须知道路由器 R1 的 IP 地址,解析出其 MAC 地址。然后把 IP 数据报传送到路由器 R1。

16. (单选题, 2分)位于不同子网中的主机之间相互通信时,下列说法中正确的是

A. 路由器在转发IP数据报时,重新封装源硬件地址和目的硬件地址

数据包到达路由器:
1. 检查目的IP地址,确定下一跳
2. 查询ARP表获取下一跳的MAC地址
3. 重新封装链路层帧头:
   源MAC地址 = 路由器出接口的MAC地址
   目的MAC地址 = 下一跳设备的MAC地址

为什么要使用两种地址:IP地址和MAC地址

MAC地址之间的转换非常复杂。IP编址把这个复杂问题解决了,连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,即使必须多次调用 ARP 来找到 MAC 地址,但这个过程都是由计算机软件自动进行的,对用户来说是看不见的。因此,在虚拟的 IP 网络上用 IP 地址进行通信非常方便。

IP数据报的格式

  • 版本:有4(IPv4)和6(IPv6)两个值;

  • 首部长度:占4位,因此最大值为15。值为1表示的是1个32位字的长度,也就是4字节。因为固定部分长度为20字节,因此该值最小为5。如果可选字段的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。

  • 区分服务:用来获得更好的服务,一般情况下不使用

  • 总长度:包括首部长度和数据部分长度

  • 生存时间:TTL,它的存在是为了防止无法交付的数据报在互联网不断兜圈子。以路由器跳数为单位,当TTL为0时就丢弃数据报。 ;

  • 协议:指出携带的数据应该上交给哪个协议进行处理,例如ICMP、TCP、UDP等

  • 首部检验和:因为数据报每经过一个路由器,都要重新计算校验和,因此校验和不包含数据部分可以减少计算的工作量。

  • 标识:占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF=1 表示后面还有分片,MF=0 表示最后一个分片。标志字段中间的一位是 DF (Don't Fragment) 。只有当 DF=0 时才允许分片。

  • 片偏移:和标识符一起,用于发生分片的情况。片偏移的单位为8字节。

IP层转发分组的过程

基于终点的转发

  • 分组在互联网中是逐跳转发的。

  • 基于终点的转发:基于分组首部中的目的地址传送和转发。

为了压缩转发表的大小,转发表中最主要的路由是(目的网络地址,下一跳地址) ,而不是(目的地址,下一跳地址)。查找转发表的过程就是逐行寻找前缀匹配。

最长前缀匹配

  • 使用 CIDR 时,在查找转发表时可能会得到不止一个匹配结果。

  • 最长前缀匹配 (longest-prefix matching) 原则:选择前缀最长的一个作为匹配的前缀。

转发表中两种特殊的路由

  • 主机路由:

  • 是对特定目的主机的 IP 地址专门指明的一个路由。

  • 网络前缀就是 a.b.c.d/32放在转发表的最前面。

  • 默认路由

  • 不管分组的最终目的网络在哪里都由指定的路由器 R 来处理

  • 用特殊前缀 0.0.0.0/0 表示。

路由分组转发算法

使用二叉线索查找转发表

网际控制报文协议ICMP

ICMP (Internet Control Message Protocol) 允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP 是互联网的标准协议。但 ICMP 不是高层协议,而是 IP 层的协议。

ICMP报文的种类

  • 差错查询报文

  • 询问报文

ICMP的应用举例

ping

Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。

Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。

Traceroute

Traceroute 是 ICMP 的另一个应用,用来跟踪一个分组从源点到终点的路径。

Traceroute 发送的 IP 数据报封装的是无法交付的 UDP 用户数据报,并由目的主机发送终点不可达差错报告报文。它利用 IP 数据报中的 TTL 字段、ICMP 时间超过差错报告报文和ICMP 终点不可达差错报告报文实现对从源点到终点的路径的跟踪。

  • 源主机向目的主机发送一连串的 IP 数据报。第一个数据报 P1 的生存时间 TTL 设置为 1,当 P1 到达路径上的第一个路由器 R1 时,R1 收下它并把 TTL 减 1,此时 TTL 等于 0,R1 就把 P1 丢弃,并向源主机发送一个 ICMP 时间超过差错报告报文;

  • 源主机接着发送第二个数据报 P2,并把 TTL 设置为 2。P2 先到达 R1,R1 收下后把 TTL 减 1 再转发给 R2,R2 收下后也把 TTL 减 1,由于此时 TTL 等于 0,R2 就丢弃 P2,并向源主机发送一个 ICMP 时间超过差错报文。

  • 不断执行这样的步骤,直到最后一个数据报刚刚到达目的主机,主机不转发数据报,也不把 TTL 值减 1。但是因为数据报封装的是无法交付的 UDP,因此目的主机要向源主机发送 ICMP 终点不可达差错报告报文。

  • 之后源主机知道了到达目的主机所经过的路由器 IP 地址以及到达每个路由器的往返时间。

IPv6

IPv4 地址耗尽问题促使了具有更大地址空间的新版本IP的出现。、

IPv6的基本首部

IPv6 仍支持无连接的传送。将协议数据单元 PDU 称为分组 (packet) 。

主要变化有:

  • 更大的地址空间。 将地址从 IPv4 的 32 位 增大到了 128 位。

  • 扩展的地址层次结构。可以划分为更多的层次。

  • 灵活的首部格式。定义了许多可选的扩展首部。

  • 改进的选项。允许数据报包含有选项的控制信息,其选项放在有效载荷中

  • 允许协议继续扩充。更好地适应新的应用。

  • 支持即插即用(即自动配置)。不需要使用 DHCP。支持资源的预分配。

  • 支持实时视像等要求保证一定的带宽和时延的应用。

  • IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍。

IPv6数据报的一般形式

两大部分:基本首部/有效载荷:

有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部 (extension header),再后面是数据部分。

  • 版本:对 IPv6 该字段总是 6。

  • 通信量类: 8 位。这是为了区分不同的 IPv6 数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。

  • 流标号:20 位。 “流”是互联网络上从特定源点到特定终点的一系列数据报, “流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标号。

  • 有效载荷长度(payload length):16 位。它指明 IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),其最大值是 64 KB。

  • 下一个首部:8 位。相当于 IPv4 的协议字段或可选字段。

  • 跳数限制: 8 位。源站在数据报发出时即设定跳数限制。路由器在转发数据报时将跳数限制字段中的值减 1。当跳数限制的值为零时,就要将此数据报丢弃。

  • 源地址:128 位。是数据报的发送站的 IP 地址。

  • 目的地址: 128 位。是数据报的接收站的 IP 地址。

IPv6的地址

三种基本类型:

  • 单播 (unicast):传统的点对点通信。

  • 多播 (multicast):一点对多点的通信。

  • 任播 (anycast):IPv6 增加的一种类型。任播的终点是一组计算机,但数据报在交付时只交付其中的一个。通常是按照路由算法得出的距离最近的一个。

冒号十六进制记法:在 IPv6 中,每个地址占 128 位,16 位的值用十六进制值表示,各值之间用冒号分隔。

零压缩,点分十进制记法的后缀

从IPv4向Ipv6过渡

两种过渡策略:使用双协议栈和隧道技术

ICMPv6

IPv6 也需要使用 ICMP 来反馈一些差错信息。新的版本称为 ICMPv6

互联网的路由选择协议

路由选择协议都是自适应的,能随着网络通信量和拓扑结构的变化而自适应地进行调整。

互联网可以划分为许多较小的自治系统 AS,一个 AS 可以使用一种和别的 AS 不同的路由选择协议。

可以把路由选择协议划分为两大类:

  • 自治系统内部的路由选择(域内路由选择IGP):RIP(距离向量) 和 OSPF(链路状态)

  • 自治系统间的路由选择(域间路由选择EGP):BGP(路径向量)

内部网关协议RIP

路由信息协议 RIP (Routing Information Protocol) 是一种分布式的、基于距离向量的路由选择协议。

跳数(hop count):每经过一个路由器,跳数就加 1。

特点:

  • 仅和相邻路由器交换信息。

  • 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。

  • 按固定时间间隔交换路由信息

路由表主要信息:目的网络 距离(最短) 下一跳地址

路由表更新原则:使用距离向量算法找出到达每个目的网络的最短距离。

距离向量算法

对每个相邻路由器(假设其地址为 X)发送过来的 RIP 报文,路由器:

(1) 修改 RIP 报文中的所有项目(即路由):把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。

(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:

若路由表中没有目的网络N,则把该项目添加到路由表中。否则

若路由表中网络 N 的下一跳路由器为 X,则用收到的项目替换原路由表中的项目。否则

若收到项目中的距离小于路由表中的距离,则用收到项目更新原路由表中的项目。否则

什么也不做。

(3) 若 3 分钟还未收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16(表示不可达)。

(4) 返回。

例:

RIP 协议实现简单,开销小。但是 RIP 能使用的最大距离为 15,限制了网络的规模。并且当网络出现故障时,要经过比较长的时间才能将此消息传送到所有路由器。

内部网关协议OSPF

开放最短路径优先 OSPF (Open Shortest Path First)是为了克服 RIP 的缺点而开发出来的。使用了 Dijkstra 提出的最短路径算法 SPF,采用分布式的链路状态协议 (link state protocol)。 现在使用 OSPFv2。

OSPF 具有以下特点:

  • 向本自治系统中的所有路由器发送信息,这种方法是洪泛法。

  • 发送的信息就是与相邻路由器的链路状态,链路状态包括与哪些路由器相连以及链路的度量,度量用费用、距离、时延、带宽等来表示。

  • 只有当链路状态发生变化时,路由器才会发送信息。

所有路由器都具有全网的拓扑结构图,并且是一致的。相比于 RIP,OSPF 的更新过程收敛的很快。

工作过程

  • 确定邻站可达。相邻路由器每隔 10 秒钟要交换一次问候分组。若有 40 秒钟没有收到某个相邻路由器发来的问候分组,则可认为该相邻路由器是不可达的

  • 同步链路状态数据库。

  • 同步:指不同路由器的链路状态数据库的内容是一样的。

  • 两个同步的路由器叫做完全邻接的 (fully adjacent) 路由器

  • 更新链路状态:只要链路状态发生变化,路由器就使用链路状态更新分组,采用可靠的洪泛法向全网更新链路状态。

路由器角色

内部路由器(IR):所有接口都在同一区域
区域边界路由器(ABR):连接多个区域,汇总路由
骨干路由器(BR):至少一个接口在Area 0
自治系统边界路由器(ASBR):连接其他AS,引入外部路由

外部网关协议BGP

BGP(Border Gateway Protocol,边界网关协议)是不同自治系统的路由器之间交换路由信息的协议。

AS 之间的路由选择很困难,主要是由于:

  • 互联网规模很大;

  • 各个 AS 内部使用不同的路由选择协议,无法准确定义路径的度量;

  • AS 之间的路由选择必须考虑有关的策略,比如有些 AS 不愿意让其它 AS 经过。

BGP 只能寻找一条比较好的路由,而不是最佳路由。采用了路径向量 (path vector) 路由选择协议。

每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。

BGP 路由 = [ 前缀, BGP属性 ] = [ 前缀, AS-PATH, NEXT-HOP ]

前缀:指明到哪一个子网(用 CIDR 记法表示)。

BGP 属性:最重要的两个属性是

  • 自治系统路径 AS-PATH

  • 下一跳 NEXT-HOP。

在属性 AS-PATH 中,不允许出现相同的 AS 号。

BGP的路由选择

  • 本地偏好 (local preference) 值最高的路由 (默认值=100)

  • AS 跳数最小的路由

  • 使用热土豆路由选择算法(分组在 AS 内的转发次数最少)

  • 路由器 BGP ID 数值最小的路由。具有多个接口的路由器有多个 IP 地址,BGP ID 就使用该路由器的 IP 地址中数值最大的一个

25. (单选题, 2分)直接封装RIP、OSPF、BGP报文的协议分别是( D )。

  • A. TCP、UDP、IP

  • B. TCP、IP、UDP

  • C. UDP、TCP、IP

  • D. UDP、IP、TCP

路由器的构成

路由器工作在网络层,用于互连网络,用于转发分组。

常用交换方法有三种:通过存储器、通过总线、通过纵横交换结构

IP多播

一对多通信:一个源点发送到许多个终点。

在 IP 多播数据报的目的地址需要写入多播组的标识符。多播组的标识符就是 IP 地址中的 D 类地址(多播地址)。 地址范围:224.0.0.0 ~ 239.255.255.255每一个 D 类地址标志一个多播组。

多播地址只能用于目的地址,不能用于源地址。

多播数据报

多播数据报和一般的 IP 数据报的区别:目的地址:使用 D 类 IP 地址。协议字段 = 2,表明使用网际组管理协议 IGMP。

尽最大努力交付,不保证一定能够交付多播组内的所有成员。

对多播数据报不产生 ICMP 差错报文。在 PING 命令后面键入多播地址,将永远不会收到响应

网际组管理协议 IGMP (Internet Group Management Protocol)使多播路由器知道多播组成员信息(有无成员)。

多播路由选择协议使多播路由器协同工作,把多播数据报用最小代价传送给多播组的所有成员。

多播路由选择:

转发多播数据报时使用三种方法:

  • 洪泛与剪除

  • 隧道技术 (tunneling)

  • 基于核心的发现技术

虚拟专用网VPN和网络地址转换NAT

虚拟专用地址VPN

由于 IP 地址的紧缺,一个机构能申请到的 IP 地址数往往远小于本机构所拥有的主机数。并且一个机构并不需要把所有的主机接入到外部的互联网中,机构内的计算机可以使用仅在本机构有效的 IP 地址(专用地址)。

有三个专用地址块:

  • 10.0.0.0 ~ 10.255.255.255

  • 172.16.0.0 ~ 172.31.255.255

  • 192.168.0.0 ~ 192.168.255.255

VPN 使用公用的互联网作为本机构各专用网之间的通信载体。专用指机构内的主机只与本机构内的其它主机通信;虚拟指好像是,而实际上并不是,它有经过公用的互联网。

下图中,场所 A 和 B 的通信经过互联网,如果场所 A 的主机 X 要和另一个场所 B 的主机 Y 通信,IP 数据报的源地址是 10.1.0.1,目的地址是 10.2.0.3。数据报先发送到与互联网相连的路由器 R1,R1 对内部数据进行加密,然后重新加上数据报的首部,源地址是路由器 R1 的全球地址 125.1.2.3,目的地址是路由器 R2 的全球地址 194.4.5.6。路由器 R2 收到数据报后将数据部分进行解密,恢复原来的数据报,此时目的地址为 10.2.0.3,就交付给 Y。

网络地址转换NAT

专用网内部的主机使用本地 IP 地址又想和互联网上的主机通信时,可以使用 NAT 来将本地 IP 转换为全球 IP。

在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把传输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。

多协议标记交换MPLS

软件定义网络SDN简介

计算机网络
计算机网络
License:  CC BY 4.0
Share

Further Reading

Jan 7, 2026

计算机网络核心考点整理总结

这一块拖得太久,现在都有点不知道从何下手了。 这一篇主要包括核心概念的总结,核心考点,实验以及一些例题。主要针对我们的考试内容 TCP/IP 五层模型(实际应用) 对应OSI七层模型(理论参考) 核心功能 数据单元(PDU)

Dec 15, 2025

计算机网络6-应用层

域名系统DNS DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转换的服务。这里的分布式数据库是指,每个站点只保留它自己的那部分数据。 域名具有层次结构

Dec 14, 2025

计算机网络5-运输层

概述 网络层指把分组发送到目标主机,但真正通信的并不是主机而是主机中的进程。传输层提供了进程之间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输实体之间有一条端到端的逻辑通信信道。 传输层的两个重要协议为 用户数据报协议 UDP (User Datagram P

OLDER

计算机网络3-数据链路层

NEWER

计算机网络5-运输层

Recently Updated

  • 计算机网络核心考点整理总结
  • 仿晋江小说阅读器的鸿蒙app
  • 计算机网络6-应用层
  • 计算机网络5-运输层
  • 计算机网络4-网络层

Trending Tags

计算机网络 面试 src 安全运营 文件上传 php反序列化 xss csrf ssrf xxe

Contents

©2026 cindahy. Some rights reserved.

Using the Halo theme Chirpy