【计算机网络】王道考研笔记整理(4)网络层

发布于:2025-08-14 ⋅ 阅读:(13) ⋅ 点赞:(0)

目录

第四章 · 网络层

4.1 网络层的功能

4.2 IPv4 分组

4.3 IP地址的分类方案

4.4 子网划分和子网掩码

4.5 无分类编址 CIDR

4.6 路由聚合

4.7 网络地址转换 NAT

4.8 地址解析协议 ARP

4.9 动态主机配置协议 DHCP

4.10 网际控制报文协议 ICMP

4.11 IPv6 地址

4.12 路由算法和路由协议


第四章 · 网络层

4.1 网络层的功能

        网络层为传输层提供服务,将传输层的数据封装成“IP数据报”。网络中的路由器根据 IP 数据报首部中的源 IP 地址,目的 IP 地址进行“分组转发”。因此,网络层实现了“主机到主机”的传输。

        下图展示的是网络层的一些主要功能,仅作简单了解即可。

4.2 IPv4 分组

        IP 协议是互联网中最核心的协议。ARP 协议用于查询同一网络中的 <主机 IP 地址,MAC 地址> 之间的映射关系。ICMP 协议用于网络层实体之间相互通知“异常事件”。

        IP 分组又可以被称为 IP 数据报,下图是 IP 数据报的格式:

        一个数据报由首部和数据部分组成。我们需要知道首部中的每一小部分的具体功能是什么,至于首部的格式,一般题目都会给出。

  • 第一行:版本用于区分网络层使用的 IP 协议版本(v4,v6);首部长度用 4 bit 表示 0~15,以 *4B 为单位;区分服务部分不做要求;总长度表示首部和数据部分加在一起的长度,以 *1B 为单位。

        因为一个链路层数据帧所能承载的最大数据量是有限的,所以有时需要将 IP 数据报分片发送。例如:下图中的一个数据报在发送时就需要分成三片发送。

        还需要注意:IP 数据报的分片可能在源主机、或任何一个路由器中发生。只有目的主机才会对分片进行重组,而各分片可能以乱序到达目的主机。

  • 第二行:标识是由 IP 数据报的源主机生成,通常是自增序列;标志中的最低位是 MF,MF=1 表示后面还有分片,MF=0 表示这是最后一个分片,次低位是 DF,DF=1 表示不允许被分片,DF=0 表示允许被分片;片偏移以 *8B 为单位。
  • 第三行:生存时间是数据报在网络中可通过的路由器数的最大值,常记为 TTL;协议如果是 TCP 协议服务,设为 6,如果是 UDP 协议服务,设为 17;首部检验和是用来校验首部,如果全为 0,那么表示不用校验,校验的方法在之后会提及。

TTL 的初始值通常由源主机设置,每经过一个路由器,路由器就将 TTL 减 1,如果减到 0,就直接丢弃分组,并向源主机发送 ICMP 报文。(ICMP 报文用于报告异常)

4.3 IP地址的分类方案

        最初的 IP 地址因为时代原因只设置了 32bit,但是现在肯定是不够用的,也就是说有了新的分类方案,不过本节我们主要讨论最初的那一种分类方案。

        一个 IP 地址被分为 <网络号><主机号>。从上图中我们可以看到,网络号的长度是不定的,我们可以通过一个 IP 地址的前几位推断出类别,进而知道这个 IP 地址的类别。关于 IP 地址,我们还有几点需要注意:

  • 每台主机、每个路由器接口被分配的 IP 地址都是全球唯一的。
  • 路由器和路由器连接的接口可以不分配 IP 地址,但是路由器和其它节点连接的接口一定需要分配 IP 地址。
  • 对于同属于一个网络的主机或路由器,它们的 IP 地址网络号相同。
  • 当一个新主机接入网络时,需要给它分配一个新的 IP 地址,并配置默认网关。

        但是,并不是所有 IP 地址都可以被分配给一个主机的。存在一些特殊的 IP 地址,它们有另外的用途:

【解释】环回自检(Loopback Test)是一种通过将设备的输出信号 “环回” 到自身输入端口,以检测设备或通信链路是否正常工作的诊断方法。简单来说,就是让设备自己发送信号,再让信号原路返回,通过检查返回信号与发送信号是否一致,来判断硬件、软件或连接是否存在故障。

4.4 子网划分和子网掩码

        本节的主要任务在于学会分析网络中如何传输数据报。在上一节中,某学校的所有主机都处在同一个网络中,但往往一个学校的主机并没有多到能用完该网络中的所有主机号,因此存在浪费的现象。

        基于此,我们尝试将 IP 地址的主机号的一部分拿出来用作子网号。如下图所示,拿出了一位用作子网号。

        上图中,某学校就将自己网络中的主机划分为了两个子网,这就是子网划分。具体的内容见下面的思维导图:

        在子网划分后,数据报都是怎么传递的呢?这里我们以上面的学校和公司为例,作简要地分析。   

  1.  H3-H6:首先,H3 会将目的 IP 地址和 H3 的子网掩码以及自己的 IP 地址作与运算,发现处在同一个子网中,那么直接将这个数据报封装成 MAC 帧,接着指明目的地址 H6 的 MAC 地址,由链路层发送到 H6。经过集线器时,因为 H5 的 MAC 地址不等于目的 MAC 地址,所以不会接收这个数据帧,最终 H6 会接收这个数据帧,并得到数据报。
  2.  H1-H8:首先,同样的过程,H1 会发现不和 H8 在同一个子网中。接着,它会把 MAC 帧发送到路由器上,路由器再根据目的网络前缀,和自己的转发表,确定要从 B0 口将数据传输出去。某公司的路由器接收到 MAC 帧之后,同样的方式会确定从 C2 口将数据传输出去。最后通过集线器到达 H8。

        概括来说:

4.5 无分类编址 CIDR

        由于传统的分类方案导致 IP 地址的使用收到很大局限,并且随着互联网的发展,IP 地址的数量逐渐短缺。我们需要新的编址方案,也就是无分类编址 CIDR。

        无分类编址的特点是其网络前缀的长度是可变的。这样,当一个单位获得 CIDR 地址块后,可以将其划分为多个子网。子网的划分方式分为定长子网和不定长子网

  • 定长子网划分:在一个 CIDR 地址块中,把主机号前 k bit 抠出来作为定长子网号,这样就能划分出 2^k 个子网。
  • 变长子网划分:在一个 CIDR 地址块中,子网号长度不固定。

        定长子网的缺点在于每个子网的大小相同,可能存在浪费资源的现象。变长子网的划分,如下图所示,就很好地解决了这个问题:

        我们要注意的是一个子网中至少需要有 2 bit,因为主机号全为 0,或全为 1 的数字是不能分配给主机的。包括在题目中要求我们计算该子网中可能包含的最大主机数量,我们也不能忘记减去这 2 个。

        对于变长子网的划分,我们一般可以类比哈夫曼树的构造方式,在保证所有子网的前缀不同的情况下进行划分。

  • 原始 CIDR 地址块作为根节点(假设可自由分配的主机号数量有 h bit)
  • 每个分支节点必须同时拥有左孩子和右孩子
  • 每个叶子结点对应一个子网,根据根节点到达叶子节点的路径来判断子网对应的 IP 地址的范围
  • 整棵树的高度不能超过 h-1

4.6 路由聚合

        在有些时候可能存在下图所示的情况。

        图中县里目的网络的前 27 位都是相同的,并且转发接口也相同,那么此时就可以将这三个表项合并成同一个表项。这种地址的聚合称为路由聚合,也构成超网

        这样形成的转发表会比之前占用的空间更少,同时查表所需的时间也会更少。

        另外,由于路由聚合的原因,可能存在转发表中有多个项均能和目的地址前缀匹配,此时就需要遵循最长前缀匹配原则。最长前缀匹配原则(Longest Prefix Match)是计算机网络中路由选择的核心规则,用于在路由器的路由表中为目标 IP 地址找到最合适的转发路径。其核心思想是:将目标 IP 地址与路由表中各条路由的前缀(网络地址)进行逐位比对,选择前缀最长且匹配的路由作为转发依据

        具体的练习可以参考上图思考。

4.7 网络地址转换 NAT

        随着 IP 地址越来越短缺,人们又发明了网络地址转换 NAT。对于网络地址转换 NAT 的要点如下:

        人们将网络分为了外网和内网,内网 IP 允许复用,这样就极大程度地增加了 IP 地址的可用数量。不过,NAT 路由器包含了传输层的功能,因为端口号是传输层的概念

        如上图所示,NAT 表实现了外网和内网中地址和端口号的转换。我们要注意,假设手机 1 在向手机 2 发送消息时,它所知道的手机 2 的 IP 地址和端口号均为外网下的 IP 地址和端口号,而不是内网中的 IP 地址和端口号

4.8 地址解析协议 ARP

        ARP 协议是用来查询某一个网络中 IP 地址和 MAC 地址之间的映射关系。

        假设一个结点 H1 需要发送数据报到 Internet 上,那么首先它需要将数据报发送到该节点的默认网关上。但是它在将数据报封装成 MAC 帧时,目的 MAC 地址一开始并不知道,只知道默认网关的 IP 地址。

        于是,结点 H1 会先发送一个广播帧,在整个网络中查找默认网关。这就是 ARP 请求分组。

        接着,当默认网关收到这个广播帧后,它会响应这个广播帧,向结点 H1 发送一个单播帧回复自己的 MAC 地址。这就是 ARP 响应分组。

        然后,结点 H1 就可以根据得到的 MAC 地址,将数据报封装成一个 MAC 帧并发送到 Internet 上。

4.9 动态主机配置协议 DHCP

        关于 DHCP 的内容,我们用下面一张图就可以理解了。整个配置过程分为 4 步,只需要按照图中的顺序依次发送帧,即可完成新主机的配置。

4.10 网际控制报文协议 ICMP

        ICMP 协议主要用来返回异常情况。它的首 8 bit 用来指明 ICMP 的具体类型。当然,ICMP 也需要封装成 IP 数据报然后才能发送接收。具体的内容见下图所示,了解熟悉即可。

4.11 IPv6 地址

        如果说之前的 NAT 等方法都只是对 IPv4 地址不足问题的修补,那么 IPv6 地址的目的就是希望从根本上解决地址不够用的问题。

        IPv6 地址编码总计 128 bit,采用冒号十六进制记法(16位一段,段间冒号分隔)

        由于这样的记法非常长,为了方便记录,出现了压缩记法:

        对于这种 128 bit 的地址记录方式,采用的地址资源分配方法自然也有所不同。它将前 64 bit 作为网络地址块前缀,后 64 bit 作为接口标识符。由于这个接口标识符很长,因此:

  • IPv6 支持即插即用(IP 地址自动配置)。当一台主机接入网络后,只需向路由器确认本网络身份,就可以给自己分配 IP 地址(通常用主机自身的 MAC 地址作为接口标识符)。
  • IPv6 可以不使用 DHCP。当然一些安全性较高的地方也支持用 DHCP 来统一管理 IPv6。

        IPv6 地址可以分为以下几类:

        IPv6 数据报的目的地址可以分为以下三种类型:

1)单播:传统的点对点通信。

2)双播:一点对多点的通信,数据报发送到计算机中的任意一台计算机。

3)任播:任播的终点是一组计算机,但数据报只会交付给其中一台计算机,通常是距离最近的一台计算机。(例如多个 DNS 服务器共享一个任播地址)

4.12 路由算法和路由协议

        下图是路由算法和路由协议之间的关系:

        路由算法的本质就是图的最短路径问题。路由协议会制定一种规则,度量一条边的代价。当路由器转发数据报时,本质就是要找到一条由本路由器到目的网络的“最优路径”。

        路由算法可以根据能否随网络的通信量或拓扑自适应地进行调整变化来划分为:

  1. 静态路由算法:指由网络管理员手工配置每一条路由。
  2. 动态路由算法:路由器根据网络流量负载和拓扑结构的变化来动态调整自身的路由表。

        本节主要讨论两种路由算法:距离 - 向量路由算法和链路状态路由算法

        距离 - 向量路由算法是一种经典的动态路由算法,核心思想是通过路由器之间交换 “距离向量” 信息,动态更新路由表,从而找到到达目标网络的最短路径。典型代表是 RIP 协议

        距离 - 向量路由算法中,每个路由器维护一个路由表(Routing Table),也称为 “距离向量表”,表中记录了以下关键信息:

  • 目标网络(目的网络的 IP 地址及子网掩码);
  • 到达目标网络的距离(Cost)(即 “度量值”,如跳数、带宽、延迟等);
  • 下一跳路由器(通过该路由器可到达目标网络)。

        算法的核心逻辑是:每个路由器定期向相邻路由器发送自己的距离向量表,同时接收邻居的距离向量表,通过计算 “最短路径” 更新自身路由表

【举个例子】        

【题目解答】本题选 D。

        链路状态路由算法是另一种重要的动态路由算法,与距离 - 向量算法不同,它通过让每个路由器掌握整个网络的拓扑信息,独立计算最短路径。典型代表是OSPF(开放最短路径优先) 协议,广泛应用于中大型网络。

        当路由器拥有完整的网络拓扑图后,会以自身为起点,使用迪杰斯特拉算法(Dijkstra's Algorithm) 计算到所有其他网络的最短路径。

        算法的基本步骤(以路由器 A 为例):

  1. 初始化:将 A 到自身的距离设为 0,到其他所有网络的距离设为 “无穷大”,并标记 A 为 “已访问”。
  2. 迭代计算:
    • 从所有 “未访问” 的节点中,选择距离 A 最近的节点(记为 X),标记为 “已访问”。
    • 对于 X 的每个邻居节点 Y,若 A 到 Y 的当前距离 >(A 到 X 的距离 + X 到 Y 的链路开销),则更新 A 到 Y 的距离为后者,并记录 Y 的前一跳为 X。
  3. 重复步骤 2,直到所有节点都被访问,得到 A 到所有目标网络的最短路径。

网站公告

今日签到

点亮在社区的每一天
去签到