考研复习 Day 27 | 习题--计算机网络第四章(网络层 上)、数据结构(树与二叉树 上)

注:以下习题参考 计算机网络(第八版)谢希仁 编著,数据结构与算法 王曙燕 主编。

一、计算机网络第4章 网络层 习题与解答

4-01 网络层向上提供的服务有哪两种?试比较其优缺点。

答案:

两种服务:面向连接的虚电路服务无连接的数据报服务

对比项 虚电路服务 数据报服务
连接建立 需要 不需要
目的地址 仅在连接建立时使用 每个分组都有完整目的地址
路由选择 固定路径 每个分组独立选择
分组顺序 按序到达 可能乱序
差错处理 由网络层负责 由运输层负责
优点 时延小、按序到达 健壮、灵活、无连接开销
缺点 需建立连接、故障时通信中断 可能乱序、每个分组开销大

4-02 网络互连有何实际意义?进行网络互连时,有哪些共同的问题需要解决?

答案:

实际意义

  • 扩大通信范围

  • 实现资源共享

  • 提高网络可靠性

  • 便于网络管理

共同问题

  • 不同网络的寻址方式

  • 不同网络的最大分组长度(MTU)

  • 不同网络的接入控制方式

  • 不同网络的差错处理

  • 不同网络的路由选择

  • 不同网络的计时机制


4-03 作为中间设备,转发器、网桥、路由器和网关有何区别?

答案:

设备 工作层次 功能
转发器 物理层 放大、整形信号,扩展物理距离
网桥 数据链路层 过滤、转发帧,隔离冲突域
路由器 网络层 路由选择、分组转发,隔离广播域
网关 运输层及以上 协议转换,连接异构网络

4-04 试简单说明下列协议的作用:IP、ARP 和 ICMP。

答案:

  • IP(网际协议):提供无连接的、不可靠的数据报传输服务,实现异构网络的互连。

  • ARP(地址解析协议):将 IP 地址解析为对应的 MAC 地址。

  • ICMP(互联网控制报文协议):传递差错报告和控制信息(如 ping、traceroute)。


4-05 IP 地址如何表示?

答案:

IP 地址由 32 位二进制数组成,采用点分十进制表示,每 8 位一组转换为十进制,用点分隔。

例如:128.96.39.10


4-06 IP 地址的主要特点是什么?

答案:

  1. 每个 IP 地址唯一标识一台主机(或路由器接口)

  2. 由网络号 + 主机号组成

  3. 分为 A、B、C、D、E 五类

  4. 由 ICANN 统一分配

  5. 具有层次性(便于路由聚合)


4-07 试说明 IP 地址与 MAC 地址的区别。为什么要使用这两种不同的地址?

答案:

IP 地址 MAC 地址
层次 网络层 数据链路层
长度 32 位(IPv4) 48 位
分配 软件配置 硬件固化
范围 逻辑地址,可跨网络 物理地址,仅在本地网络有效
变化 可随网络变化 固定不变

原因:IP 地址用于跨网络寻址,MAC 地址用于同一链路内通信,两者分工明确,实现网络层与数据链路层的解耦。


4-08 IP 地址方案与我国电话号码体制的主要不同点是什么?

答案:

IP 地址 电话号码
结构 网络号 + 主机号 区号 + 用户号
长度 固定 32 位 可变长度
管理 全球统一分配 各国自行管理
移动性 支持(移动 IP) 一般不支持

4-09 IP 数据报中的首部检验和并不检验数据报中的数据。这样做的最大好处是什么?坏处是什么?

答案:

好处

  • 提高转发效率(路由器只需检验首部)

  • 减少计算开销

坏处

  • 数据部分出错无法在 IP 层检测,需依赖上层(如 TCP)校验

4-10 当某个路由器发现一个 IP 数据报的检验和有差错时,为什么采取丢弃的办法而不是要求源站重传此数据报?计算首部检验和为什么不采用 CRC 检验码?

答案:

丢弃而非重传的原因

  • IP 协议是无连接的,不维护状态信息

  • 路由器不知道源站地址(可能已被 NAT 转换)

  • 重传应由端到端的 TCP 负责

不用 CRC 而用反码求和的原因

  • CRC 计算复杂,不适合硬件快速处理

  • 反码求和简单高效,便于路由器快速校验


4-11 设IP数据报使用固定首部,其各字段的具体数值如图4-76所示(除IP地址外,均为十进制形式表示)。试用二进制运算方法计算应当写入到首部检验和字段中的数值(用二进制形式表示)。

二进制运算方法

  1. 将首部按16位一组分组

  2. 所有组进行反码求和

  3. 将和取反码,填入首部检验和字段

**答案:**1000 1011 1011 0001


4-12 使用十六进制运算方法

答案:与二进制方法等价,只是将每16位二进制转换为4位十六进制,按十六进制加法(带进位)计算,最后取反码。

结果: 8B B1


4-13 什么是最大传送单元 MTU?它和 IP 数据报首部中的哪个字段有关系?

答案:

MTU:数据链路层所能传送的最大数据帧长度(不含帧头尾)。

相关字段 :IP 首部中的总长度字段 (16位)和片偏移字段(13位)。


4-14 在互联网中将 IP 数据报分片传送的数据报在最后的目的主机进行组装。还可以有另一种做法,即数据报片通过一个网络就进行一次组装。试比较这两种方法的优劣。

答案:

方式 优点 缺点
目的主机组装 中间路由器简单、高效 可能有重复分片、增加端到端时延
逐网络组装 减少后续网络的分片 增加中间路由器负担、可能多次重装

实际采用:目的主机组装(因 IP 协议无连接,中间路由器不维护分片状态)。


4-15 一个 3200 位长的 TCP 报文传到 IP 层,加上 160 位的首部后成为数据报。下面的互连网由两个局域网通过路由器连接起来,但第二个局域网所能传送的最长数据帧中的数据部分只有 1200 位,因此数据报在路由器中必须进行分片。试问第二个局域网向其上层要传送多少比特的数据?(这里的"数据"当然指的是局域网看见的数据)

答案:

  • MTU = 1200 位(包含首部)

  • 每片数据最大长度 = 1200 - 160 = 1040 位

答案:3840 比特

  • 分片数 = ceil(3200 / 1040) = 4 片

  • 总传送比特 = 4 × 160 + 3200 = 3840 位


4-16 (1) 试解释为什么 ARP 高速缓存中存入一个项目就要设置 10~20 分钟的超时计时器。这个时间设置得太长或太短会出现什么问题?

(2) 举出至少两种不需要发送 ARP 请求分组的情况。

答案:

(1) 超时原因:

  • MAC 地址可能变化(如网卡更换、IP 地址迁移)

  • 及时删除无效条目,避免通信失败

太长 :ARP 表不更新,导致通信失败
太短:频繁发送 ARP 请求,增加网络开销

(2) 不需要 ARP 请求的情况:

  • 目的 IP 是本机 IP

  • 目的 IP 在 ARP 高速缓存中已有映射


4-17 主机 A 发送 IP 数据报给主机 B,途中经过了 5 个路由器。试问在 IP 数据报的发送过程中总共使用了几次 ARP?

答案:

  • 每段链路需要一次 ARP(源主机→路由器,路由器→路由器,路由器→目的主机)

  • 经过 5 个路由器 = 6 段链路

  • 总共 6 次 ARP


4-18 根据转发表计算下一跳

转发表:

前缀匹配 下一跳
192.4.153.0/26 R3
128.96.39.0/25 接口 m0
128.96.39.128/25 接口 m1
128.96.40.0/25 R2
*(默认) R4

计算(最长前缀匹配):

目的地址 匹配前缀 下一跳
128.96.39.10 128.96.39.0/25 m0
128.96.40.12 128.96.40.0/25 R2
128.96.40.151 默认(无其他匹配) R4
192.4.153.17 192.4.153.0/26 R3
192.4.153.90 192.4.153.0/26 R3

4-19 某单位分配到一个地址块 129.250/16,该单位有 4000 台计算机,平均分布在 16 个不同的地点。试给每一个地点分配一个地址块,并算出每个地址块中 IP 地址的最小值和最大值。

答案:

一、已知条件

  • 分配地址块:129.250.0.0/16

  • 总 IP 数:65536

  • 总计算机:4000 台

  • 地点数:16

  • 每个地点计算机数:4000 / 16 = 250 台

每个地点至少需要的 IP 数:

250+2=252(网络号+广播地址)250+2=252(网络号+广播地址)

取大于等于 252 的最小 2 的幂:256

因此每个地点分配 /24 子网


二、分配的地址块(16 个 /24)

129.250.0.0/24 开始,依次分配:

地点 地址块(CIDR)
1 129.250.0.0/24
2 129.250.1.0/24
3 129.250.2.0/24
... ...
16 129.250.15.0/24

三、每个地址块中的 IP 最小值、最大值(部分示例)

地点 地址块 最小 IP 最大 IP
1 129.250.0/24 129.250.0.1 129.250.0.254
2 129.250.1/24 129.250.1.1 129.250.1.254
3 129.250.2/24 129.250.2.1 129.250.2.254
... ... ... ...
16 129.250.15/24 129.250.15.1 129.250.15.254

4-20 一个数据报长度为 4000 字节(固定首部长度)。现在经过一个网络传送,但此网络能够传送的最大数据长度为 1500 字节。试问应当划分为几个短的数据报片?各数据报片的数据字段长度、片偏移字段和 MF 标志应为何数值?

答案:

  • IP 首部固定 20 字节

  • 每片最大数据长度 = 1500 - 20 = 1480 字节

  • 原始数据长度 = 4000 - 20 = 3980 字节

分片数 = ceil(3980 / 1480) = 3 片

数据长度 片偏移(/8) MF
1 1480 0 1
2 1480 185 1
3 1020 370 0

4-21 写出互联网的 IP 层查找路由的算法。

答案:

  1. 从 IP 数据报提取目的 IP 地址 D
  2. 对转发表中每条路由项(前缀、掩码、下一跳):
    if (D & mask == 前缀) 记录匹配(最长匹配)
  3. 若有匹配,转发到对应下一跳
  4. 若无匹配但有默认路由,转发到默认路由
  5. 否则丢弃,发送 ICMP 差错报文

4-22 有如下的 4 个/24 地址块,试进行最大可能的聚合。

212.56.132.0/24
212.56.133.0/24
212.56.134.0/24
212.56.135.0/24

答案:

  • 二进制:
    132 = 10000100
    133 = 10000101
    134 = 10000110
    135 = 10000111

  • 前 6 位相同(132~135 前 6 位都是 100001)

  • 掩码 = 24 - 2 = 22 位

聚合结果:212.56.132.0/22


4-23 有两个 CIDR 地址块 208.128/11 和 208.130.28/22。是否有哪一个地址块包含了另一个的地址块?如果有,请指出,并说明理由。

答案:

  • 208.128/11 范围:208.128.0.0 ~ 208.159.255.255

  • 208.130.28/22 范围:208.130.28.0 ~ 208.130.31.255

  • 后者的范围完全在前者范围内

结论:208.128/11 包含 208.130.28/22


4-24 路由器 R₁ 的转发表如表 4-10 所示。试画出各网络和必要的路由器的连接拓扑,标注出必要的 IP 地址和接口。对不能确定的情况应当指明。

答案:


4-25 一个自治系统分配到的 IP 地址块为 30.138.118/23,包括 5 个局域网,其连接图如图 4-77 所示,每个局域网上的主机数标注在图 4-77 上。试给出每一个局域网的地址块(包括前缀)。

已知:

  • 总地址块:30.138.118.0/23

  • 地址范围:30.138.118.0 ~ 30.138.119.255(共 512 个地址)

  • 各 LAN 主机数:

    • LAN₁:未说明,但至少要留三个地址给三个路由器

    • LAN₂:91 台

    • LAN₃:150 台

    • LAN₄:3 台

    • LAN₅:15台


答案(以下给出两组参考答案,均符合主机数要求):

第一组答案

局域网 地址块 前缀
LAN₁ 30.138.119.192/29 /29
LAN₂ 30.138.119.0/25 /25
LAN₃ 30.138.118.0/24 /24
LAN₄ 30.138.119.200/29 /29
LAN₅ 30.138.119.128/26 /26

第二组答案

局域网 地址块 前缀
LAN₁ 30.138.118.192/27 /27
LAN₂ 30.138.118.0/25 /25
LAN₃ 30.138.119.0/24 /24
LAN₄ 30.138.118.224/27 /27
LAN₅ 30.138.118.128/27 /27

二、数据结构 树 习题与解答

一、单项选择题

(1) 树最适合用来表示的结构是______。

A. 元素间的有序结构
B. 元素间具有分支及层次关系的结构
C. 元素间的无序结构
D. 元素间无联系的结构

答案:B


(2) 设一棵二叉树的结点个数为18,则它的高度至少为______。

A. 4
B. 5
C. 6
D. 18

答案:B

解析:高度最小的二叉树是完全二叉树。结点数 n 与最小高度 h 满足:2^(h-1) ≤ n ≤ 2^h - 1。2^4=16,2^5=32,18≤32,高度至少为5。


(3) 任意一棵二叉树的叶子结点在其先序、中序、后序序列中的相对位置是______。

A. 肯定发生变化
B. 有时发生变化
C. 肯定不发生变化
D. 无法确定

答案:C

解析:叶子结点的相对位置在三种遍历中保持不变(按从左到右的顺序)。


(4) 判断线索二叉树中某结点 P 有左孩子的条件是______。

A. p != NULL
B. p->lchild != NULL
C. p->lTag = 0
D. p->lTag = 1

答案:C

解析:lTag=0 表示指向左孩子,lTag=1 表示指向线索前驱。


(5) 二叉树在线索化后,仍不能有效求解的问题是______。

A. 先序线索二叉树中求后继
B. 中序线索二叉树中求后继
C. 中序线索二叉树中求前驱
D. 后序线索二叉树中求后继

答案:D

解析:后序线索二叉树中,求后继需要知道父结点信息,线索化无法直接提供。


(6) 设森林中有4棵树,其结点个数分别为 n₁, n₂, n₃, n₄,那么当森林转换成一棵二叉树时,则根结点的右子树上有______个结点。

A. n₁ - 1
B. n₁
C. n₁ + n₂ + n₃
D. n₂ + n₃ + n₄

答案:D

解析:森林转二叉树规则:第一棵树为根,其余树为根结点的右子树。


(7) 由权值分别为9, 2, 5, 7的4个叶子结点构造一棵哈夫曼树,则该树的带权路径长度WPL为______。

A. 23
B. 37
C. 44
D. 46

答案:C

解析:构造哈夫曼树:

  • 2+5=7,新结点7

  • 7+7=14,新结点14

  • 14+9=23
    WPL = 2×3 + 5×3 + 7×2 + 9×2 = 6+15+14+18 = 44


(8) 设T是一棵哈夫曼树,有8个叶结点,则树T的高度最可以是______。

A. 4
B. 6
C. 8
D. 10

答案:C

解析:哈夫曼树不一定是完全二叉树,8个叶结点时高度最小为4(完全),最大可能为8。


二、填空题

(1) 树形结构中,树根结点没有______结点,其余每个结点有且仅有一个______结点;树的叶子结点没有______结点,其余每个结点的子结点数不受限制。

答案:前驱(父);父;后继(子)


(2) 对于一棵具有n个结点的树,树中所有结点的度之和为______。

答案:n - 1

解析:树的边数 = 结点数 - 1,而度之和 = 边数


(3) 在二叉树的顺序存储中,下标为5的结点,它的双亲结点的下标为______。若它存在左孩子,则左孩子结点的下标为______;若它存在右孩子,则右孩子结点的下标为______。

答案:2;10;11

解析:双亲下标 = floor(i/2) = 2,左孩子 = 2i = 10,右孩子 = 2i+1 = 11


(4) 若某叶子结点是二叉树中序遍历序列中的最后一个结点,则它必定是该二叉树的先序遍历序列中的______。

答案:最后一个结点

解析:中序最后右子树最右结点,也是先序最后访问的结点。


(5) 一棵完全二叉树按层次遍历的序列为 ABCDEFG,则在先序遍历中结点E的直接前驱是______,后序遍历中结点B的直接后继是______。

答案:D;E

解析

  • 先序:A B D E C F G → E的前驱是D

  • 后序:D E B F G C A → B的后继是E


(6) 已知某二叉树的中序序列为 ABCDEFG,后序序列为 BDCAFEG,则该二叉树的前序序列为______,该二叉树对应的森林包括______棵树。

答案

后序最后为G,中序G在最后 → G为根,右子树空

构建的二叉树如下

前序序列:G E A C B D F

森林棵树:1棵(根有右孩子时才有多棵树)


(7) 把由树转化得到的二叉树称为该树对应的二叉树,则树的先根遍历序列与该树对应的二叉树的______遍历序列相同,树的后根遍历序列与该树对应的二叉树的______遍历序列相同。

答案:先序;中序


(8) 在哈夫曼树中,若编码长度只允许小于等于4,则除了已确定两个字符的编码为0和10外,还可以最多对______个字符进行编码。

答案:4

解析:编码长度≤4,已用0和10,剩余可用:11,100,101,110,111,1000等,但需满足前缀码,最多4个。


三、完成题

(1) 已知一棵二叉树的后序遍历序列为 ABCDEFG,中序序列为 ACBGEDF。试完成下列操作。

① 画出该二叉树的树形图。

推导过程:

  1. 确定根节点
    后序序列最后一个元素是 G → 根节点为 G

  2. 分割中序序列
    中序序列 ACBGEDF,根节点 G 左边为 ACB (左子树),右边为 EDF(右子树)

  3. 确定右子树

    • 右子树中序:EDF,后序(从整体后序中分离):DEF

    • 后序最后 = F → 右子树根为 F

    • F 在中序 EDF 中,左为 ED,右为空

    • 右子树的左子树:中序 ED,后序 DE

    • 后序最后 = E → 该子树根为 E

    • E 在中序 ED 中,左为空,右为 D

    • D 无左右子树

    右子树结构:

    F
    /
    E
    \
    D

  4. 确定左子树

    • 左子树中序:ACB,后序:ABC

    • 后序最后 = C → 左子树根为 C

    • C 在中序 ACB 中,左为 A ,右为 B

    • A、B 无左右子树

    左子树结构:

    C
    / \
    A B

  5. 合并为完整二叉树

    G
    / \
    C F
    / \ /
    A B E
    \
    D

② 先序序列

先序遍历顺序:根 → 左 → 右

遍历过程:

  • 访问 G

  • 访问左子树 C:访问 C → 左 A → 右 B

  • 访问右子树 F:访问 F → 左子树 E:访问 E → 右 D

先序序列:G C A B F E D

③ 顺序存储结构(编号从1开始):

|----|-------|-------|-------|-------|-------|-------|---|---|---|-------|----|----|----|----|----|
| 下标 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 结点 | G | C | F | A | B | E | ∅ | ∅ | ∅ | D | ∅ | ∅ | ∅ | ∅ | ∅ |


(2) 已知一棵树的层次表示法如下表,试完成下列操作。

data A B C D E F G H I J K L M N O
parent -1 1 1 1 2 2 3 3 4 4 5 6 6 7 8

① 画出该树的树形图。(上左)

② 孩子兄弟二叉链表存储结构(上右)

③ 对应二叉树的中序线索二叉树(下)


(3) 假设某通信报文的字符集由 A、B、C、D、E、F 共6个字符组成,它们在报文中出现的次数分别为16, 12, 9, 30, 3, 6。试构造一棵哈夫曼树。

① 带权路径长度 WPL

构造过程:

  • 3+6=9(新结点9)

  • 9+9=18(新结点18)

  • 12+16=28(新结点28)

  • 18+28=46

  • 30+46=76

WPL = 3×4 + 6×4 + 9×3 + 12×3 + 16×3 + 30×2 = 12+24+27+36+48+60 = 207

② 哈夫曼编码

字符 出现次数 编码
D 30 0
A 16 10
B 12 110
C 9 1110
F 6 11110
E 3 11111

注:以上习题的解答基于作者自己的理解和计算,如果有任何错误,希望各位读者和大佬指出改正,非常感谢!!!

相关推荐
苏渡苇7 小时前
Redis 核心数据结构(三)——Hash,把一堆字段塞进一个 Key
数据结构·redis·redis hash·redis hset
故事和你917 小时前
洛谷-算法2-4-字符串2
开发语言·数据结构·c++·算法·深度优先·动态规划·图论
cpp_25017 小时前
P3374 【模板】树状数组 1
数据结构·c++·算法·题解·洛谷·树状数组
郝学胜-神的一滴7 小时前
干货版《算法导论》 02 :算法效率核心解密
java·开发语言·数据结构·c++·python·算法
枕星而眠7 小时前
C语言数组专题:从一维到二维,吃透内存与指针
java·数据结构·算法
05候补工程师7 小时前
【408计网笔记】传输层与应用层高频考点:TCP/UDP特性、端口映射与交互逻辑
网络·经验分享·笔记·网络协议·tcp/ip·考研·udp
木木_王7 小时前
嵌入式Linux学习 | 数据结构 (Day04)链表升级(进阶优化 + 柔性数组原理 + 双向循环链表完整实现 + 高频面试深挖)
linux·数据结构·学习
papership16 小时前
【入门级-数据结构-3、特殊树:完全二叉树的数组表示法】
数据结构·算法·链表
smj2302_7968265216 小时前
解决leetcode第3911题.移除子数组元素后第k小偶数
数据结构·python·算法·leetcode