
简介这份计算机网络习题文档面向高校计算机及相关专业学生用于课程复习、期末备考与考研自测。内容以选择题为主覆盖网络定义、资源共享、ARPANET与分组交换、网络拓扑、OSI参考模型、TCP/IP协议、传输介质及端口号等核心考点并附有逐题解析便于对照理解易错概念。资源包内含1个doc文件大小约611KB可直接打开练习或打印成纸质题册。目前已有291人学习下载适合作为章节自测与考前查漏补缺的练习材料。通过逐题作答与解析对照读者能快速定位知识盲区理清网络分层、协议特性与介质选型等高频考点的判断依据也可作为课堂测验或小组讨论的题库使用。1. 一份 09 级计网习题 doc 的实战打开方式从“刷题”到“查漏补缺”如果你手头正好有一份《09 级计算机等专业计算机网络习题.doc》别急着把它当成一次性刷完就丢的题库。这份文档覆盖了从网络定义、ARPANET、OSI 参考模型、TCP/IP 协议栈到传输介质、数据链路层、网络层、传输层、应用层DNS、FTP、SMTP、HTTP、P2P的完整知识链条59 道选择题加 59 道填空题基本把谢希仁版教材前六章的核心考点扫了一遍。它适合三类人正在准备计算机网络期末复习的在校生、跨考 408 需要快速定位薄弱章节的考生、以及想用一套结构化题目反向梳理协议栈知识体系的 DevOps 或后端工程师。问题在于很多人拿到 .doc 文件后只是从头到尾做一遍对完答案就结束了既没有把错题映射回知识点也没有利用填空题去检验自己是否真的能“默写”出关键概念。下面我按实际拆解这份资源的思路把怎么用、怎么改、怎么避坑讲清楚。2. 拆解习题结构从 59 道选择到 59 道填空的知识点映射2.1 选择题的五大知识板块划分这份文档的选择题部分第 1 到 59 题并不是随机排列的它大致按教材章节顺序推进。我把它拆成五个板块题号范围知识板块核心考点1–12网络概述与体系结构网络定义、ARPANET、分组交换、拓扑结构、MAN/WAN 区分13–20OSI 与 TCP/IP 协议七层模型、协议三要素、面向连接 vs 无连接21–31物理层与传输介质双绞线/同轴/光纤特性、RS232C、抗干扰与传输距离32–42数据链路层与传输层PPP/SLIP、TCP/UDP 端口号、校验和、三次握手、滑动窗口43–59应用层C/S 与 P2P、DNS 解析、FTP 工作模型、电子邮件、Web 与 HTTP这个划分的意义在于如果你做错了一道题不要只记答案而是先定位它属于哪个板块然后回到教材对应章节去补。比如第 33 题考 TCP 熟知端口号你错了说明传输层端口号记忆不牢第 51 题考 FTP 控制连接和数据连接的端口号区别你错了说明应用层协议的具体工作模型没吃透。2.2 填空题的“默写检验”价值填空题部分第 1 到 59 题比选择题更能暴露真实水平。选择题有选项提示蒙对的概率不低填空题要求你从零回忆术语写不出来就是真不会。比如第 3 题“______ 是控制两个对等实体进行通信的规则的结合。”答案协议。如果你写不出来说明协议的定义没有内化。第 12 题“TCP/IP 体系共有四个层次它们是 ______、______、______ 和 ______。”答案网络接口层、网际层、传输层、应用层。这题看起来简单但很多人会把 OSI 的七层和 TCP/IP 的四层搞混。第 38 题“物理层要解决 ______ 同步的问题数据链路层要解决 ______ 同步的问题。”答案位、帧。这题考的是两层职责的边界答错说明层次划分不清。我一般建议的做法是先做选择题对完答案后把错题编号记下来然后隔一天再做填空题把写不出来的题目标红。两轮下来你的薄弱知识点就非常清晰了。2.3 用 Python 脚本自动提取题目做错题统计如果你想把这份 .doc 里的题目导入到一个可检索、可统计的格式手动复制粘贴太慢。常见做法是用 python-docx 读取 .doc 文件注意python-docx 只支持 .docx.doc 需要先另存为 .docx然后用正则提取题号和选项。下面是一个可复用的脚本框架from docx import Document import re import json def extract_questions(docx_path): 从 docx 文件中提取选择题和填空题 doc Document(docx_path) full_text \n.join([para.text for para in doc.paragraphs]) # 匹配选择题以数字开头包含 A、B、C、D 选项 choice_pattern re.compile( r(\d)\.\s*(.*?)\s*A[、](.*?)\s*B[、](.*?)\s*C[、](.*?)\s*D[、](.*?)(?\n\d\.|\Z), re.DOTALL ) choices [] for match in choice_pattern.finditer(full_text): choices.append({ id: int(match.group(1)), stem: match.group(2).strip(), options: { A: match.group(3).strip(), B: match.group(4).strip(), C: match.group(5).strip(), D: match.group(6).strip() } }) # 匹配填空题包含连续下划线 fill_pattern re.compile(r(\d)\.\s*(.*?_{3,}.*?)(?\n\d\.|\Z), re.DOTALL) fills [] for match in fill_pattern.finditer(full_text): fills.append({ id: int(match.group(1)), text: match.group(2).strip() }) return {choices: choices, fills: fills} if __name__ __main__: result extract_questions(计算机网络习题.docx) print(f提取到选择题 {len(result[choices])} 道) print(f提取到填空题 {len(result[fills])} 道) # 保存为 JSON 方便后续统计 with open(questions.json, w, encodingutf-8) as f: json.dump(result, f, ensure_asciiFalse, indent2)这段脚本的逻辑说明先用Document加载 .docx 文件把所有段落拼成一个长字符串然后用正则匹配“数字 点 题干 A/B/C/D 选项”的模式。参数方面re.DOTALL让.能匹配换行符因为题干和选项可能跨行(?\n\d\.|\Z)是前瞻断言确保匹配在下一题开始或文件结束时停止。提取结果存成 JSON 后你可以自己加一个wrong_ids列表统计每个板块的错题数。提示如果你的文件是 .doc 格式先用 Word 或 LibreOffice 另存为 .docxpython-docx 不支持旧版二进制格式。3. 按协议栈逐层刷题从物理层到应用层的参数与易错点3.1 物理层与传输介质光纤、双绞线、同轴电缆的选型逻辑第 21 到 31 题集中考传输介质。这几道题看似简单但容易混淆的点不少。比如第 21 题问“哪种传输介质抗电磁干扰性最好”答案是光缆第 23 题问“哪种传输介质典型传输速率最高”答案也是光缆第 30 题问“哪种传输距离最远”答案还是光缆。三道题都指向光纤但考的角度不同抗干扰、速率、距离。如果你只记“光纤最好”遇到具体场景题可能还是会犹豫。第 22 题考电缆屏蔽的好处答案是 (2) 减少电磁干扰辐射和对外界干扰的灵敏度。注意 (1) 减少信号衰减并不是屏蔽的主要好处屏蔽层主要作用是抗干扰不是放大信号。这个点很多人会选错。第 26 题问“哪种电缆支持最大的电缆长度”答案是粗同轴电缆。这里要注意区分粗同轴电缆传输距离长但安装困难细同轴电缆传输距离短但安装方便。第 28 题问“哪种电缆安装费用大”答案是光纤因为光纤熔接需要专用设备和技术。我一般会把这些参数整理成一张对比表方便记忆介质类型抗干扰传输速率传输距离安装成本无屏蔽双绞线差中短100m低屏蔽双绞线中中短中粗同轴电缆中中长500m中细同轴电缆中中较短185m低光缆最好最高最远几十公里高3.2 数据链路层与传输层PPP、TCP 端口号与校验和计算第 32 题考 SLIP 和 PPP 属于哪一层答案是数据链路层。这两个协议都是串行链路上的封装协议SLIP 只支持 IPPPP 支持多种协议且支持认证和错误检测。第 33 题考 TCP 熟知端口号问哪个是错误的。选项 A 说“FTP 控制连接20”这是错的。FTP 的控制连接用端口 21数据连接用端口 20。这个点非常容易搞混因为两个端口号都和 FTP 有关但角色不同。第 34 题考 UDP 熟知端口号选项 B 说“TFTP56”这是错的TFTP 用的是 69。DNS 用 53NTP 用 123SNMP 用 161这些都要记牢。第 37 和 38 题考 UDP 校验和的计算细节。第 37 题选项 D 说“IP 分组报头的协议号为 10 表示传输层采用 UDP”这是错的。IP 报头中协议号 17 表示 UDP6 表示 TCP。第 38 题选项 D 说“将每列 16bit 为单位将二进制位按低位到高位逐列进行计算”这个描述有问题校验和计算是按 16 位字进行反码求和不是“按低位到高位逐列”。第 39 到 42 题考 TCP 可靠传输、报文格式、三次握手和拥塞控制。第 40 题选项 D 说“确认号字段长度为 16bit”这是错的TCP 确认号字段是 32bit。第 42 题选项 D 说“慢启动过程中收到 3 个报文段的确认窗口大小增长到 8”这个描述需要结合具体初始窗口值判断但慢启动的指数增长规律是每收到一个 ACK 窗口翻倍不是固定增长到 8。3.3 应用层DNS 解析、FTP 双连接与 HTTP 协议细节第 47 到 49 题考 DNS。第 47 题选项 D 说“DNS 域名服务的处理依赖于所使用的传输系统”这个描述是错误的DNS 的设计目标之一就是独立于底层传输系统。第 49 题考递归解析和反复解析的区别选项 D 说“递归解析的任务主要是由域名解析器软件完成的”这是错的递归解析的任务主要由名字服务器完成解析器只是发起请求。第 50 和 51 题考 FTP。第 50 题选项 D 说“使用 FTP 命令行程序下载文件时出现网络连接意外中断客户程序通过断点续传功能可以继续”这是错的传统 FTP 命令行不支持断点续传需要用 FTP 下载工具如 FileZilla才支持。第 51 题选项 C 说“用于控制连接的 TCP 连接在客户端使用的端口号为 20”这是错的客户端端口号是随机分配的20 是服务器端数据连接的端口。第 53 和 54 题考 Web 服务。第 53 题选项 D 说“标准的 URL 由 3 部分组成服务器类型、主机 IP 地址、路径及文件名”这个描述不准确URL 的第二部分是主机域名或 IP 地址但更常见的说法是“协议类型、主机名、路径及文件名”。第 54 题选项 C 说“浏览器在客户端计算机中运行程序产生动态文档”这是错的动态文档是由服务器端程序生成的浏览器端运行的是活动文档如 JavaScript。4. 避坑与排查做这份习题时最容易翻车的五个点4.1 把 OSI 七层和 TCP/IP 四层搞混现象第 17 题问“哪个不属于 OSI 参考模型结构定义的层次结构术语”选项 B 是“主机-网络层”很多人会犹豫因为 TCP/IP 里确实有网络接口层也叫主机-网络层。原因OSI 是七层物理、数据链路、网络、传输、会话、表示、应用TCP/IP 是四层网络接口、网际、传输、应用。解决做题时先确认题目问的是哪个模型OSI 里没有“主机-网络层”这个术语。4.2 FTP 控制连接和数据连接的端口号记反现象第 33 题选项 A 说“FTP 控制连接20”第 51 题选项 C 说“控制连接在客户端使用的端口号为 20”。原因FTP 用两个 TCP 连接控制连接用 21数据连接用 20但 20 是服务器端数据连接的端口客户端端口是随机的。解决记住“控制 21数据 2020 是服务器端”。4.3 UDP 校验和计算中伪报头的作用搞不清现象第 37 和 38 题连续考 UDP 校验和涉及伪报头、协议号、计算顺序。原因UDP 校验和计算时会临时加一个 12 字节的伪报头包含源 IP、目的 IP、协议号等信息但这个伪报头不传输。解决记住伪报头“只用于计算不传输”协议号 17 表示 UDP6 表示 TCP。4.4 TCP 确认号和序号的关系算错现象第 40 题选项 C 说“确认号字段的值为 501表示已经正确地接收序号为 500 的字节”。原因TCP 的确认号表示“期望收到的下一个字节的序号”所以确认号 501 表示 500 及之前的字节都已收到。解决记住“确认号 已收到最后一个字节序号 1”。4.5 填空题里“服务”和“协议”两个概念混用现象第 4 题问“上层使用下层所提供的服务必须与下层交换一些命令这些命令在 OSI 中称为什么”答案是“原语”。第 5 题问“在同一系统中相邻两层的实体进行交互的地方通常称为什么”答案是“接口”。原因服务、协议、原语、接口这四个概念容易混。解决服务是下层向上层提供的功能协议是对等层之间的通信规则原语是层间交换的命令接口是相邻层交互的地方。5. 进阶用法把这份习题改造成可检索的知识库5.1 用 JSON 简单查询脚本做错题回顾把第 2 章提取出来的questions.json进一步加工给每道题打上章节标签和难度标签然后用一个简单的 Python 脚本做查询。比如我想看所有传输层的错题import json # 加载题目和你的错题记录 with open(questions.json, r, encodingutf-8) as f: data json.load(f) # 手动维护的错题 ID 和章节映射 wrong_ids [33, 34, 37, 40, 42, 51] chapter_map { 物理层: list(range(21, 32)), 数据链路层: [32], 传输层: list(range(33, 43)), 应用层: list(range(43, 60)), 网络概述: list(range(1, 13)), 体系结构: list(range(13, 21)) } def find_chapter(qid): for chapter, ids in chapter_map.items(): if qid in ids: return chapter return 未分类 # 输出错题按章节分组 from collections import defaultdict grouped defaultdict(list) for qid in wrong_ids: grouped[find_chapter(qid)].append(qid) for chapter, ids in grouped.items(): print(f\n{chapter}错题 {ids}) for q in data[choices]: if q[id] in ids: print(f 第{q[id]}题{q[stem][:50]}...)这段脚本的逻辑说明chapter_map是手动维护的题号到章节的映射你可以根据自己的教材版本调整find_chapter函数遍历映射找到题目所属章节最后用defaultdict按章节分组输出。参数方面wrong_ids需要你每次做完题后手动更新这是最笨但最可靠的方法。5.2 用 Anki 或类似工具做间隔重复如果你不想写脚本更省事的做法是把错题和填空题导入 Anki。具体步骤先把 .doc 内容复制到 Excel两列分别是“问题”和“答案”然后导出为 CSV最后在 Anki 里选择“导入文件”映射字段即可。填空题可以做成“挖空”卡片比如“TCP/IP 体系共有四个层次它们是 ______、______、______ 和 ______。”正面是这句话背面是答案。我自己的习惯是每做完一遍习题把错题和写不出来的填空题整理成 Anki 卡片设置间隔重复。一周后再做一遍原题如果还有错说明这个知识点需要回到教材重新看而不是继续刷题。5.3 一个具体技巧用“反向出题”检验掌握程度最后分享一个我常用的技巧不要只做题试着反过来出题。比如第 33 题考 FTP 端口号你可以自己出一道题“FTP 数据连接在服务器端使用的端口号是多少控制连接呢”如果你能流畅地出题并给出正确答案和干扰项说明这个知识点你真的掌握了。这份习题里的 59 道选择题和 59 道填空题每一道都可以作为反向出题的素材。我一般会挑 10 道错题自己重新写题干和选项然后隔一天再做一遍自己出的题。从那以后我每次复习计算机网络都强制走一遍“做题 → 整理错题 → 反向出题 → 间隔重复”的流程比单纯刷三遍题效果好得多。希望帮到你。本文还有配套的精品资源点击获取