网络模块小结与自测¶
高频速记¶
- OSI 七层从物理层到应用层;IP 负责寻址与路由,TCP/UDP 负责端到端传输。
- TCP 可靠有序,UDP 低开销但不保证可靠;握手三次,挥手通常四次。
/28主机位 4 位,块大小 16,通常可用主机 14 个。- DNS:A=IPv4,AAAA=IPv6,CNAME=别名,MX=邮件,PTR=反向解析。
- ICMP 做差错与诊断,ARP 做 IP 到 MAC,NAT 做地址转换,DHCP 做动态配置。
- RIP 是距离向量,15 跳可达、16 跳不可达;OSPF 是链路状态,以 Cost 选路。
- CSMA/CD 用于传统有线以太网,CSMA/CA 用于无线局域网。
自测题¶
- TCP 三次握手的三个报文分别是什么?
192.168.1.100/28的网络地址和广播地址是什么?- A、AAAA、PTR、MX 记录分别做什么?
- ping、ARP、NAT、DHCP 各自对应什么功能?
- RIP 与 OSPF 的度量和适用规模有什么差异?
- 为什么无线局域网主要使用 CSMA/CA 而不是 CSMA/CD?
参考答案¶
SYN、SYN+ACK、ACK。- 网络地址
192.168.1.96,广播地址192.168.1.111。 - IPv4、IPv6、IP 到域名、邮件服务器。
- ICMP 连通性诊断、ARP IP 到 MAC、NAT 地址转换、DHCP 动态分配地址。
- RIP 按跳数且 16 跳不可达,适合小型网络;OSPF 按 Cost、收敛快,适合中大型网络。
- 无线环境难以可靠检测冲突,采用避免冲突的机制。
具体协议版本、默认参数和考试教材口径待核验。
批次2正式验收补充自测(独立题号 B2-Q01~B2-Q16)
以下每题只设一个主归属,覆盖 I-1~I-6、II-1~II-5、III-1~III-2、IV-1~IV-3。原有 1~6 题及答案保持不变;本组每题均包含显式题干、答案和解析,不把教学段落或子问重复计题。题目用于学习自测,不代表官方试题或整批验收已通过。
B2-Q01|主归属 I-1:系统组成与性能
题干: 同一程序在两台相同 ISA 的机器上均执行 2×10⁸ 条指令。A 的 CPI=1.5、主频=3 GHz,B 的 CPI=1、主频=2.5 GHz。忽略 I/O,分别计算 CPU 时间、判断哪台更快及加速比,并说明相同 ISA 为什么不保证相同性能。
答案: A 为 0.10 s,B 为 0.08 s;B 更快,B 相对 A 的加速比为 1.25。相同 ISA 仅保证指令语义等软件可见约定相容,不保证微体系结构、CPI 或主频相同。
解析: T=IC×CPI/f,所以 A=2×10⁸×1.5/(3×10⁹),B=2×10⁸/(2.5×10⁹);时间比 0.10/0.08=1.25,不能只按 A 主频较高判胜。CPU 中控制器组织执行、ALU 执行运算,存储系统等实现差异也影响指令平均周期;CPU 时间不包含题设排除的 I/O 等待。
B2-Q02|主归属 I-2:浮点表示与运算
题干: 用 binary32 表示正数 6.5,写出符号位、8 位阶码及 23 位小数字段;再对 6.5+0.75 写出对阶、相加和规格化过程,并判断结果是否必须丢弃非零精度位。
答案: 6.5 的字段为 0 | 10000001 | 10100000000000000000000。和为 7.25=(1.1101)₂×2²,本次运算无需丢弃非零精度位。
解析: 6.5=110.1₂=1.101₂×2²,阶码为 2+127=129。0.75=1.1₂×2⁻¹=0.0011₂×2²,尾数相加 1.1010+0.0011=1.1101,指数保持 2,已规格化。结果只需 5 位有效二进制数字,少于 binary32 的 24 位有效精度,可精确表示;字段中的隐含首位 1 不再存储,不能把存储阶码直接相加。
B2-Q03|主归属 I-3:Cache 替换
题干: 一个 2 路组相联 Cache 的目标组初始为空,块 A/B/C 均映射到此组,访问顺序为 A、B、A、C、A,读未命中总会装入。分别按 FIFO 与 LRU 写出每次命中/缺失、装满后的淘汰对象及缺失次数;命中时 FIFO 是否重排?
答案: FIFO:缺、缺、命、缺(淘汰 A)、缺(淘汰 B),共 4 次缺失;LRU:缺、缺、命、缺(淘汰 B)、命,共 3 次缺失。FIFO 命中不重排。
解析: 前两步填满 A/B;第三步访问 A 后,FIFO 仍认为 A 最早装入,LRU 则认为 B 最久未用。因此第四步装 C 时两算法分歧;第五步 A 在 FIFO 中已被淘汰而在 LRU 中仍驻留。替换只在映射到的组内发生;初次装入空路不是淘汰。
B2-Q04|主归属 I-4:指令寻址
题干: 按字节编址,指令地址字段 A=40,寄存器 R=100,M[40]=200、M[200]=9、M[140]=7。分别求直接寻址、间接寻址、以 R 为基址且 A 为字节位移时的有效地址与操作数;若采用立即寻址,操作数是多少?
答案: 直接:EA=40、操作数 200;间接:EA=200、操作数 9;基址:EA=140、操作数 7;立即数为 40。
解析: 直接用字段作地址,间接先取 M[A] 作最终地址,基址求 R+A=140 后取数。立即寻址直接使用字段值,不读取 M[40] 作为操作数。这里不计取指访问,不能把有效地址与其内容混为一谈。
B2-Q05|主归属 I-5:CPU 结构与执行
题干: 简化 CPU 按字节编址,指令长 4 B,PC=800,内存该处指令为 LOAD R2,[1200],且 M[1200]=25。写出从取指到完成加载的主要微操作,并指出 PC、IR、MAR、MDR 与控制器各起什么作用。
答案: MAR←PC,读指令到 MDR,再 IR←MDR、顺序 PC←804;译码得到 EA=1200,MAR←1200,读数到 MDR,最后 R2←MDR=25。PC 指向取指位置,IR 保存指令,MAR 提供访存地址,MDR 缓冲所读数据,控制器发出相应读写与通路控制信号。
解析: 第一次逻辑读取是取指,第二次是取操作数;IR 的指令译码后才能决定数据访问。寄存器承接地址和内容,控制器协调次序,ALU 可参与地址形成但不是存放所有指令的部件。这是功能模型,不据这些步骤断言恰好消耗同样数量的时钟周期。
B2-Q06|主归属 I-6:流水线与 DMA
题干: 理想 5 段流水线每段 2 ns,连续执行 8 条指令,无停顿。求非流水及流水耗时和加速比。单条 LOAD 经多个流水阶段完成,指令周期是否等于一个时钟周期?另有 DMA 传输:CPU 已设置缓冲区和长度,是否还必须用 CPU 指令搬运每个字节?完成后能否通知 CPU?
答案: 非流水 80 ns,流水 24 ns,加速比 10/3≈3.33;指令周期不等于一个时钟周期;DMA 不要求 CPU 逐字节搬运,完成后可通过中断通知 CPU。
解析: 非流水 8×5×2=80,流水 (5+8−1)×2=24,装入和排空使加速比未达到 5;流水线重叠多个指令的阶段,提升吞吐率,但一条指令本身仍经历多个时钟周期,指令周期不可与时钟周期混为一谈。DMA 引擎通过总线/互连在设备与内存间搬运,CPU 仍参与初始化和完成处理;无需逐字节搬运不等于整个 I/O 不占用总线、不花时间或永不中断。
B2-Q07|主归属 II-1:时间与辅助空间
题干: n 为正整数,下列伪代码以机器字常数时间完成加法,且所有计数器均能容纳结果:s=0; for i=1..n: for j=1..i: s=s+1。求 s 最终值、时间复杂度紧界和辅助空间复杂度,并解释逻辑结构是否必然决定物理存储地址连续。
答案: s=n(n+1)/2,时间 Θ(n²),辅助空间 Θ(1);逻辑相邻不保证物理地址连续。
解析: 内层次数依次为 1、2、…、n,求和得到二次量级,不能把外层循环次数当总次数。仅 i、j、s 等固定数量计数器同时存在,未分配随 n 增长的数组或递归栈,因此辅助空间常数。线性逻辑关系既可由连续数组也可由非连续链表实现;若改用任意精度整数,还需另计位运算成本。
B2-Q08|主归属 II-2:循环队列操作
题干: 长度为 5 的循环数组队列保留一个空单元,front 指向队头、rear 指向下一入队位置,初始二者均为 0。依次入 A/B/C,出队两次,再入 D/E/F。求出队序列、最终逻辑队列、front、rear、长度及是否已满。
答案: 出队 A、B;最终队列 C/D/E/F;front=2,rear=1,长度 4,已满。
解析: 三次入队 rear 变为 3;两次出队 front 变为 2;随后 rear 按模 5 依次变为 4、0、1。长度 (rear−front+5)%5=4,满条件 (rear+1)%5=front 成立。物理槽按环绕存储,逻辑顺序仍为 FIFO;保留一个空单元使有效容量为 4,而非 5。
B2-Q09|主归属 II-3:二分搜索
题干: 升序数组 [3,7,11,18,24,30,42],下标从 0 开始。以闭区间二分、mid=floor((low+high)/2) 搜索 24,逐轮给出 low/high/mid、比较值及结果下标;这套对数时间结论能否不加条件地套在普通单链表上?
答案: (0,6,3) 比 18,转至 [4,6];(4,6,5) 比 30,转至 [4,4];(4,4,4) 比 24,返回下标 4,共 3 次关键字比较。不能直接套在单链表上。
解析: 每次根据有序性排除不可能的一半;等值即成功,区间 low>high 才失败。数组支持常数时间访问中点,普通单链表定位中点需沿指针遍历,不能仅凭每次折半就断言总时间 O(log n)。未排序数据也不能按本规则排除半区。
B2-Q10|主归属 II-4:图拓扑排序
题干: 有向图顶点 A/B/C/D,边为 A→C、B→C、C→D。采用 Kahn 算法,每次在当前入度为 0 的顶点中选字母最小者,给出初始入度及完整拓扑序。若再加入 D→B,算法能输出全部顶点吗?请展示停止原因。
答案: 原入度 A0/B0/C2/D1,拓扑序 A/B/C/D。加边后入度 A0/B1/C2/D1,只能输出 A,随后 B/C/D 入度均为 1,不能完成。
解析: 原图先删 A→C 使 C 入度降为 1,再删 B→C 使 C 归零,最后 C 后输出 D。加边后存在 B→C→D→B 环,输出 A 后没有新的零入度顶点,输出数 1 小于总数 4,判有环。图即使最初有零入度顶点也仍可能含环;拓扑排序适用于 DAG,不是按顶点字母直接排序。
B2-Q11|主归属 II-5:散列冲突与删除
题干: 长度为 7 的空散列表下标 0~6,h(k)=k mod 7,线性探测且步长为 1。依次插入 10、17、24,写出位置;删除 17 后搜索 24 要经过哪些槽?删除槽能否直接标成从未使用的空槽?
答案: 10/17/24 分别放槽 3/4/5。删 17 后搜索 24 依次探测槽 3、4、5,在槽 5 命中;槽 4 应保留删除标记,不能直接视为从未使用。
解析: 三键模 7 均为 3,冲突后逐槽向后寻找空位。查找遇删除标记仍继续,遇从未使用的空槽才能按本协议判不存在;若槽 4 被错误清为空,查询会提前停止并漏掉 24。探测须限制最多一轮,满表不能无限循环;链地址法的删除不采用这套墓碑规则。
B2-Q12|主归属 III-1:协议接口服务与时延
题干: 两台主机以一条链路相连,发送长度 1250 B 的分组,速率 20 Mbit/s,距离 200 km,传播速度 2×10⁸ m/s;忽略处理排队,求末比特到达时间。另将同层实体约定报文格式、同机相邻层的交互约定、下层向上层提供的能力分别归为协议、接口还是服务。
答案: 发送时延 0.5 ms,传播时延 1 ms,末比特到达需 1.5 ms;三种描述依次为协议、接口、服务。
解析: L/R=1250×8/(20×10⁶)=0.0005 s,d/v=200000/(2×10⁸)=0.001 s,末比特需先等整包发送完再传播。提高发送速率不改变本题传播速度。协议是对等实体共同遵守的规则,接口规定层间如何交互,服务表达提供什么能力,三者不是同一个报文或同一种连接。
B2-Q13|主归属 III-2:TCP 与 HTTP 分层机制
题干: 已建立 TCP 连接,应用使用普通 HTTP/1.1(不考虑 TLS)。发送方依次发送字节 100~199、200~299;接收方先收到后一段,约定 ACK 表示下一个期望字节,且接收方缓存乱序段。此时应确认多少?前段经重传到达后应确认多少,应用交付顺序如何?再说明 HTTP 请求与响应的主要组成,以及 TCP、IP、以太网分别负责哪一层职责。
答案: 先 ACK=100;缺失前段补齐后 ACK=300,按 100~299 顺序交付且不重复。HTTP 请求含方法/目标/版本、头部及可选消息体;响应含版本/状态码、头部及可选消息体。TCP 属传输层,IP 属网络层,以太网帧属于链路层。
解析: 累计 ACK 停在连续数据的边界,收到 200~299 不能跳过 100~199 向应用有序交付;发送方可因超时或满足相应快速重传条件补发,接收方利用序号重排和去重,随后累计确认推进到 300。TCP 确认字节流,不保留应用消息边界;HTTP 以请求—响应语义和消息定界规则解释该字节流,不能把一个 TCP 段视为固定一条 HTTP 消息。IP 提供跨网络寻址转发,链路帧完成本跳交付,物理层再承载比特;本题未建立 QUIC/HTTP/3 模型,也不能把 HTTP 状态码当成 TCP ACK。
B2-Q14|主归属 IV-1:操作系统与模式切换
题干: 单核系统交替执行两个进程,其中一个调用 read,所需数据已在缓存,内核检查后立即返回且未调度其他线程。判断:两个进程是否属于并发而非必然并行?此次 read 是否发生用户态/内核态切换?是否必然发生进程上下文切换?说明理由及 OS 在此提供的管理功能。
答案: 属于并发,不是两个进程在该单核上同一时刻并行;read 系统调用发生模式切换,但不必发生进程上下文切换。OS 提供文件访问、权限保护及缓存/I/O 等资源管理服务。
解析: 单核通过时间交替推进多个任务,符合并发;模式切换改变执行权限,上下文切换改变正在执行的线程/进程。题设缓存命中且无需阻塞,可由同一线程进入内核完成检查后返回用户态,不能由系统调用推出必调度其他进程。普通库函数调用也不必全部进入内核。
B2-Q15|主归属 IV-2:请求分页与容器管理
题干: 某进程仅有 2 个空页框,采用 LRU 请求分页,无预取,引用页号 1、2、1、3、2。逐次给出页框状态及缺页情况,求总缺页数和置换数;另说明容器的 namespaces 和 cgroups 分别主要解决可见性隔离还是资源计量/限制,是否各有独立宿主内核。
答案: 页框 F1/F2 依次为 (1,—) 缺、(1,2) 缺、(1,2) 命、(1,3) 缺且换出 2、(2,3) 缺且换出 1;共 4 次缺页、2 次置换。namespaces 主要隔离可见对象,cgroups 主要计量/限制资源;常见 Linux 容器共享宿主内核。
解析: 第三步把页 1 更新为最近访问,第四步因此淘汰页 2;第五步页 2 已不驻留,而页 1 比页 3 更久未用,故换出页 1。初始装入空页框也是缺页,但不换出;缺页处理属于 OS 虚拟内存管理,不能与 Cache 缺失混计。容器的可见性隔离不自动给出 CPU/内存配额,配额也不意味着独占核心或独立内核,持久数据仍需另行管理。
B2-Q16|主归属 IV-3:文件分配与设备管理
题干: 块大小为 4 KiB,普通非稀疏文件长 9000 B,忽略元数据,求所需块数及尾块内部碎片。另有打印服务将多个用户作业先存磁盘再顺序送给一台打印机:这是 SPOOLing 还是让打印机物理并行?write 返回成功是否一定说明数据已写到稳定介质?
答案: 需 3 块,内部碎片 3288 B;属于 SPOOLing,打印机仍顺序工作;write 成功不一定已经持久化。
解析: ceil(9000/4096)=3,分配 3×4096=12288 B,未用 12288−9000=3288 B,浪费发生在已分配尾块内部。SPOOLing 用磁盘队列解耦用户提交和独占设备执行,并非增加打印机数量。缓冲写可先进入内存后回写,需按文件系统约定使用同步与持久化接口;日志一致性或 RAID 不能代替独立备份。