☰
计算机网络试题库PDF清洗与协议分层刷题实战指南
2026/9/30 5:13:29 网站建设 项目流程

简介:这份《计算机网络-试题库(含答案)》PDF面向计算机专业学生、考研备考者及网络技术初学者,用于系统梳理计算机网络各层次的核心概念与典型题型。内容覆盖物理层、数据链路层、网络层、传输层及局域网技术,涉及IP地址与子网划分、MAC地址与ARP协议、ICMP与TCP/UDP端口、CSMA/CD、FDDI、路由选择协议等高频考点,并配有参考答案便于自测。资源包内含1个PDF文件,大小约658KB,轻量便携,适合打印或移动端随时刷题。目前已有896人学习下载,说明其在同类资料中具有一定认可度。通过逐题练习,读者可巩固子网掩码计算、协议层次归属、设备工作层级等易错知识点,同时借助答案快速定位薄弱环节,提升解题与应试能力,适合作为期末复习或考研初试的辅助题库使用。

1. 从一份被“编辑过”的试题库说起:它到底能帮你解决什么

如果你正在准备计算机网络期末、考研 408,或者单纯想找一份能直接刷的题库,这份《(完整)计算机网络-试题库(含答案).pdf》大概率已经在你的候选清单里了。它覆盖了物理层到应用层的核心考点,题型以单选为主,答案直接跟在题干后面,省去了翻页对答案的麻烦。但我要先说一个反直觉的结论:这份 PDF 的正文里混入了“下载后请自行对内容编辑修改删除,上传更多的专业资料给更多有需要的学习者们”这类水印文字,部分题目和选项被水印截断,直接拿来刷会踩坑。所以它的正确用法不是“打开就刷”,而是先做一次文本清洗和题目校验,再配合协议分层的主线去用。适合谁?适合已经过了一遍教材、需要大量题目来暴露知识盲区的人;不适合零基础直接靠它入门,因为它的解析极少,很多题只给答案不给推导。

2. 先看清这份题库的骨架:协议分层与题目分布

2.1 题目覆盖的层次结构

这份题库的题目编号从 1.1 一直排到 1.172 左右,虽然编号连续,但知识点并不是按 OSI 七层严格顺序排列的。我把它拆开看了一遍,大致分布是这样的:

知识板块典型题号占比感受
物理层与传输介质1.1、1.12、1.47、1.49、1.92、1.93约 10%
数据链路层与 MAC1.2、1.4、1.10、1.18、1.43、1.75约 15%
网络层与 IP 编址1.14、1.15、1.19、1.22、1.31、1.132、1.133约 30%
传输层与端口1.6、1.8、1.20、1.33、1.36、1.37约 12%
应用层与协议1.23、1.26、1.45、1.63、1.90、1.110约 15%
网络设备与拓扑1.41、1.66、1.67、1.72、1.73、1.138、1.144约 18%

网络层占比最高,这跟实际考试里 IP 编址和子网划分是重头戏是一致的。数据链路层和网络设备加起来也接近三分之一,说明这份题库对“设备工作在那一层”这类题给得很多。

2.2 答案标注方式与解析缺失问题

题库的答案标注有两种形式:一种是直接在题干括号里写字母,比如“以下属于物理层的设备是(A)”;另一种是在选项后面跟一个括号写答案,比如“A. 中继器 B. 以太网交换机 C. 桥 D. 网关”后面没有额外标注,答案在题干里。这种混排方式在 PDF 转文本后容易错位。更麻烦的是,像 1.60 这种题给了计算过程:“C=2×H×log2N=2×6×log28=36Mbps”,但绝大多数题只有答案没有推导。这意味着你刷题时如果做错了,光看答案是不知道为什么错的,必须自己回教材或搜协议细节。我一般会建议把错题按“协议层 + 具体协议名”打标签,比如“网络层-子网掩码”“数据链路层-CSMA/CD”,这样错题积累到一定量后能看出自己到底是哪一层没学透。

2.3 水印污染与文本清洗的必要性

原始 PDF 里反复出现“下载后请自行对内容编辑修改删除,上传更多的专业资料给更多有需要的学习者们”这句话,而且它经常插在题目中间。比如 1.15 的题干“某公司申请到一个C类IP地址,但要连接6个的子公司,最大的一个子公司有26台计算机,每个子公司在一个网段中,则子网掩码应设为”后面直接跟了水印,然后才是选项。如果你用 PDF 阅读器直接看,可能还能分辨;但如果复制文本去搜索或做笔记,水印会严重干扰。常见做法是先把 PDF 转成纯文本,然后用正则把这段固定水印删掉,再按题号重新分段。下面这段 Python 就是我当时用的清洗脚本的核心逻辑:

import re # 读取从 PDF 提取出来的原始文本 with open("raw_questions.txt", "r", encoding="utf-8") as f: text = f.read() # 水印的几种变体,用正则统一匹配 watermark_patterns = [ r"下载后请自行对内容编辑修改删除,上传更多的专业资料给更多有需要的学习者们。?", r"本文下载后请自行对内容编辑修改删除,上传更多的专业资料给更多有需要的学习者们。?", r"下载后请自行对内容编辑修改删除,?上传更多的专业资料给更多有需要的学习者们。?", ] for p in watermark_patterns: text = re.sub(p, "", text) # 按题号切分,题号形如 1.1、1.14、1.172 # 注意题号后面可能紧跟题干,也可能有空格 questions = re.split(r"(?=\b1\.\d{1,3}\b)", text) questions = [q.strip() for q in questions if q.strip()] # 写回清洗后的文件 with open("cleaned_questions.txt", "w", encoding="utf-8") as f: f.write("\n\n".join(questions)) print(f"清洗后共得到 {len(questions)} 个题目块")

这段脚本的关键点有三个:第一,水印不是完全固定不变的,我列了三种常见变体,实际跑的时候如果发现漏网之鱼,就往watermark_patterns里加;第二,re.split用了零宽断言(?=...),这样切分时题号本身会保留在下一块的开头,不会丢;第三,题号匹配用了\b1\.\d{1,3}\b,能覆盖 1.1 到 1.172 这种范围,但如果你发现题号有 1.172 之后的内容,把{1,3}改成{1,4}就行。清洗完之后,你得到的是一题一块的文本,后面无论是导入 Anki 还是自己写脚本抽题,都干净得多。

3. 把题库用起来:从 IP 编址到协议分析的实操路径

3.1 IP 地址与子网掩码类题目的手算验证

题库里网络层的题最多,其中子网划分又是最容易出错的一类。比如 1.14:“与 10.110.12.29 mask 255.255.255.224 属于同一网段的主机 IP 地址是”。这道题的答案给的是 B、10.110.12.30。很多人会直接背“掩码 224 就是 /27,每个子网 32 个地址”,但真到算的时候容易把网络地址和广播地址搞混。我一般会强制自己走一遍二进制:

import ipaddress # 题目给定的 IP 和掩码 ip = "10.110.12.29" mask = "255.255.255.224" # 用 ipaddress 模块直接算网络地址 interface = ipaddress.IPv4Interface(f"{ip}/{mask}") network = interface.network print(f"网络地址: {network.network_address}") print(f"广播地址: {network.broadcast_address}") print(f"可用主机范围: {network.network_address + 1} ~ {network.broadcast_address - 1}") print(f"可用主机数: {network.num_addresses - 2}") # 验证候选答案是否在同一网段 candidates = ["10.110.12.0", "10.110.12.30", "10.110.12.31", "10.110.12.32"] for c in candidates: c_if = ipaddress.IPv4Interface(f"{c}/{mask}") print(f"{c} 是否同网段: {c_if.network == network}")

跑出来你会看到网络地址是 10.110.12.0,广播地址是 10.110.12.31,可用范围是 10.110.12.1 到 10.110.12.30。所以 10.110.12.30 是最后一个可用主机地址,10.110.12.31 是广播地址不能给主机用,10.110.12.32 已经是下一个子网了。这道题用代码验证一遍,比背十遍“/27 有 30 个可用地址”都管用。参数上唯一要注意的是ipaddress.IPv4Interface接受的是“地址/掩码”格式,掩码可以写点分十进制也可以写前缀长度,两种都支持。

3.2 协议归属层与设备工作层的对照表

题库里大量题目在问“某协议属于哪一层”“某设备工作在哪一层”,这类题看着简单,但选项里经常混入干扰项。比如 1.17 问“路由选择协议位于(C)”,答案是网络层;1.48 问“PPP 协议是哪一层的协议”,答案是数据链路层。我把题库里反复出现的协议和设备整理成了一张对照表,刷题时遇到不确定的就查这张表:

协议/设备所属层题库中的题号示例
中继器、集线器物理层1.1、1.59、1.72
网桥、交换机、网卡数据链路层1.2、1.18、1.73
ARP、RARP网络层(或链路层与网络层之间)1.11、1.135
IP、ICMP、RIP、OSPF网络层1.17、1.124、1.129、1.136
TCP、UDP传输层1.6、1.36、1.117
HTTP、FTP、SMTP、DNS、Telnet应用层1.23、1.26、1.63、1.90、1.110
路由器网络层1.41、1.144、1.154

这张表里 ARP 的归属容易有争议,有的教材把它放在网络层,有的放在数据链路层和网络层之间。题库 1.11 的答案是“将 IP 地址映射到第二层地址”,没有明确说它属于哪一层,所以刷题时如果遇到“ARP 属于哪一层”的选项,优先看选项里有没有“网络层”或“链路层与网络层之间”,不要死记一个答案。RIP 和 OSPF 都是路由协议,工作在网际层,但 RIP 基于距离矢量,OSPF 基于链路状态,题库 1.140 专门考了“距离矢量路由协议是 RIP”,这种细节要单独记。

3.3 用 Anki 把清洗后的题目做成可检索卡片

清洗完的题目如果只是放在文本文件里,刷起来效率很低。我一般会把它们转成 Anki 能导入的格式。Anki 导入最简单的是“问题\t答案”这种制表符分隔的文本。下面这段脚本把清洗后的题目块拆成题干和答案两部分:

import re with open("cleaned_questions.txt", "r", encoding="utf-8") as f: blocks = f.read().split("\n\n") cards = [] for block in blocks: # 匹配题干末尾括号里的答案字母,如 (A) 或 ( B ) m = re.search(r"[((]\s*([A-F])\s*[))]\s*$", block.strip()) if not m: continue answer = m.group(1) # 题干就是去掉末尾答案括号的部分 question = block[:m.start()].strip() # 把换行替换成空格,避免 Anki 导入时断行 question = re.sub(r"\s+", " ", question) cards.append(f"{question}\t{answer}") with open("anki_import.txt", "w", encoding="utf-8") as f: f.write("\n".join(cards)) print(f"生成 {len(cards)} 张卡片")

这里的关键是答案匹配正则[((]\s*([A-F])\s*[))]\s*$,它要求答案括号出现在题目块的末尾。但题库里有些题的答案不在末尾,比如 1.60 的答案和解析混在一起,这种就会被跳过。跳过不是坏事,说明这些题需要你手动处理。导入 Anki 时,字段分隔符选 Tab,卡片模板用“基础”就行,正面放题干,背面放答案。这样你每天刷 50 张,错题会自动进入复习队列,比在 PDF 里来回翻页高效得多。

4. 避坑与排查:这份题库用起来最容易翻车的五个地方

4.1 水印截断导致题干或选项缺失

现象:复制某道题去搜索时,发现题干读不通,或者选项少了一个。
原因:PDF 里的水印文字插在题干和选项之间,复制时水印和正文混在一起,或者水印覆盖了部分文字导致 OCR 识别错误。
解决:不要直接复制 PDF 里的文本。先用第 2 章给的清洗脚本处理一遍,然后人工抽查题号连续的段落,看有没有题干突然断掉的情况。如果发现某题选项只有三个,回原 PDF 对照一下,大概率是被水印盖住了。

4.2 答案字母与选项错位

现象:明明算出来答案是 B,但题库标注的是 C。
原因:PDF 转文本时,选项的换行位置变了,导致答案字母对应的选项和你看到的选项不是同一个。比如 1.15 的选项在原文里是“A、255.255.255.0 B、255.255.255.128 C、255.255.255.192 D、255.255.255.224”,答案给的是 D,但如果你复制时选项顺序乱了,就可能对不上。
解决:对每道错题,不要只看答案字母,要把答案字母对应的选项内容读一遍,确认它确实是你算出来的那个值。如果选项内容对不上,以你手算的结果为准,同时标记这道题“答案存疑”。

4.3 协议归属层的教材差异

现象:ARP 的归属层,不同教材说法不一样,题库答案和你的教材冲突。
原因:OSI 模型和 TCP/IP 模型对某些协议的分层本来就有不同处理方式,ARP 是典型例子。
解决:考试时以你报考院校指定的教材为准。如果题库答案和教材冲突,优先信教材。刷题时遇到这类争议题,在错题本上单独开一栏“分层争议”,把不同说法都记下来,不要强行统一。

4.4 子网划分题目的掩码前缀混淆

现象:题目说“分成 8 个子网”,你按 /27 算,但答案是 /28。
原因:有些题问的是“子网数”包括全 0 和全 1 子网,有些题问的是“可用子网数”不包括。题库 1.28 问“C 类网络用掩码 255.255.255.192 划分子网,会有几个可用的子网”,答案是 2,因为 /26 借了 2 位,2^2=4,减去全 0 和全 1 剩 2 个可用。但 1.39 问“分成 8 个子网,掩码应为”,答案是 255.255.255.224,因为 /27 借 3 位,2^3=8,这里没有减 2。
解决:读题时盯住“可用”两个字。有“可用”就减 2,没有“可用”就不减。这个规则在题库里反复出现,错一次就要记牢。

4.5 计算题只给答案不给过程

现象:1.60 这种奈奎斯特计算题,答案给了 36×10^6,但你不清楚 8 种状态对应 log2(8)=3 是怎么来的。
原因:题库定位是“试题库”不是“教材”,解析极少。
解决:遇到计算题,不要只看答案,把公式和代入过程自己写一遍。奈奎斯特公式 C=2H×log2(N),H 是带宽 6MHz,N 是离散状态数 8,log2(8)=3,所以 C=2×6×10^6×3=36Mbps。写一遍之后,这类题就再也不会错了。

5. 进阶用法:把题库变成协议分析训练集

刷完一遍题库之后,如果只是对答案,价值其实有限。我后来发现一个更狠的用法:把题库里的题目按协议层重新分组,然后针对每一层写一段“协议分析笔记”,把题目里出现的协议字段、设备行为、典型场景串起来。比如数据链路层,题库里反复考 MAC 地址、CSMA/CD、以太网帧、交换机端口隔离,我就把这些题号列在一起,然后自己画一张以太网帧结构图,标出目的 MAC、源 MAC、类型字段的位置,再对照题库里“以太帧头部的目的地址是什么”这类题,确认自己真的理解帧结构而不是背答案。

网络层我会重点做子网划分的变式训练。题库里给了 1.14、1.15、1.22、1.28、1.39、1.133 这些题,我把它们改一改:把 /27 改成 /28,把 C 类改成 B 类,把“分成 8 个子网”改成“每个子网至少 50 台主机”,然后自己算一遍。下面这个脚本就是用来批量生成子网划分变式题的:

import ipaddress import random def generate_subnet_question(base_net, new_prefix, required_hosts=None): """ 根据给定网络和前缀长度,生成一道子网划分题 base_net: 如 '192.168.1.0/24' new_prefix: 如 27 required_hosts: 如果指定,则反推需要的前缀长度 """ net = ipaddress.IPv4Network(base_net, strict=False) if required_hosts: # 计算满足主机数所需的最小前缀 host_bits = 0 while (2 ** host_bits - 2) < required_hosts: host_bits += 1 new_prefix = 32 - host_bits subnets = list(net.subnets(new_prefix=new_prefix)) print(f"网络 {base_net} 划分为 /{new_prefix} 后,共 {len(subnets)} 个子网") for i, s in enumerate(subnets[:4]): print(f" 子网{i+1}: {s} 可用主机: {s.num_addresses - 2}") return subnets # 示例:C 类网络分成 /27 generate_subnet_question("192.168.1.0/24", 27) # 示例:每个子网至少 50 台主机,反推前缀 generate_subnet_question("172.16.0.0/16", None, required_hosts=50)

这个脚本的核心是ipaddress.IPv4Network.subnets(new_prefix=...),它直接返回划分后的子网列表。required_hosts参数用来反推前缀:主机位每加 1,可用主机数大约翻倍,所以从 0 开始累加直到2^host_bits - 2 >= required_hosts。跑一遍你就能看到,50 台主机需要 6 位主机位(2^6-2=62),所以前缀是 /26。这种变式训练做上二十道,子网划分就变成肌肉记忆了。

传输层和应用层我会用题库里的端口号题做一张端口对照表,然后自己补充每个端口对应的协议行为。比如 1.37 考 FTP 默认 TCP 端口 21,1.63 考 telnet 命令,1.90 考 DNS 做域名到 IP 的转换。把这些串起来,就是一条“用户输入网址到网页显示”的完整链路:DNS 解析域名到 IP,TCP 三次握手建立连接,HTTP 请求网页,服务器返回 HTML。题库里 1.33 考三次握手用于传输层连接建立,1.23 考浏览器和 WWW 服务器之间用 HTTP,这些题单独看是知识点,串起来就是一次完整的网络访问过程。

从那以后我每次拿到一份题库,都强制自己先做三件事:清洗文本、按协议层分组、把计算题手算一遍。这三步走完,题库才真正变成自己的东西,而不是一堆带答案的选择题。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询