计算机网络实验报告汇总:Wireshark抓包与Python生成Word文档
简介计算机网络课程实验报告汇总包含七个典型网络实验覆盖数据链路层PPP协议配置、单台及跨交换机VLAN划分与互访、RIP/OSPF动态路由配置、NAT内部源地址转换、子网划分等核心内容面向高校计算机网络课程学习者可用于实验预习、复习和报告规范参考。压缩包内为1个doc文档大小3.18MB每个实验均按实验目的、设备拓扑、配置步骤、问题解决与收获的结构展开配置命令和验证细节记录得比较完整适合在Packet Tracer、GNS3等模拟器中复现练习。文档由链路层到网络层逐层递进知识点衔接紧密能帮助学习者快速建立网络实验整体思路也可直接作为课程实验报告模板。目前已有292人学习下载是计算机网络实践学习中性价比较高的一份参考材料。1. 一份实验报告汇总 .doc先想清楚它会被谁重新打开收到十几份散落的实验报告文件名从“新建文档(2).doc”到“最终版(1).doc”都有这是计算机网络课程里最常见的混乱现场。所谓“实验报告汇总 .doc”本质上不是把 doc 文件拼到一起而是把一学期的抓包结果、配置命令、协议状态变化整理成可追溯的证据链。期末复习、保研面试、软考网络工程师刷题甚至复试时被问到“你做过哪些实验”翻的就是这一份东西。所以这份汇总必须满足三个要求能按实验顺序快速检索每个结论都能找到对应的原始数据格式能让 Word、WPS 都正常打开。下面从实验类型和文档产出两个方向讲一套不用折腾电脑也能落地的做法。2. 抓包、配置与协议分析三类计算机网络实验的报告骨架2.1 抓包类实验用 Wireshark 时报告里要留哪些字段Wireshark 实验最容易犯的错是“截图很多解释很少”。期末老师要看的是你会不会从报文里读出结论而不是你有没有把界面截全。我一般要求报告里至少包含三样东西抓包环境描述、过滤器、关键帧的字段截图。环境描述写清主机 IP、网关、访问的目标域名过滤器写清为什么用这个条件关键帧截图上要能看到序号、源端口、目的端口和 Flags。如果需要从几十个 pcap 文件里提取固定字段命令行比图形界面更适合批量操作。tshark 是 Wireshark 自带的命令行工具可以直接把关注字段导成 CSV 或文本tshark -r http.pcap -Y http.request -T fields \ -e frame.time_delta_displayed \ -e ip.src -e ip.dst \ -e tcp.srcport -e tcp.dstport \ -e http.host -e http.request.uri \ -E headery -E separator, http_requests.csv这个命令的-Y是指定显示过滤器只保留 HTTP 请求报文-T fields表示按字段输出-e后面每个参数对应一个要导出的字段。输出 CSV 后用 Excel 打开就能看到每个请求的时间间隔、源目的地址和 URI。这个时间间隔字段特别有用它能直接反应出“HTTP 持久连接”和“非持久连接”的差别如果每个请求之间间隔明显说明浏览器在重新建 TCP 连接如果间隔短且连续多半用了 keep-alive。不同协议要保留的观察点不一样下面是常见网络实验报告的最小信息集协议过滤器示例报告必须出现的观察点TCP 握手tcp.flags.syn1三次握手的相对序号、窗口大小、SYN/SYN-ACK/ACK 时序TCP 重传tcp.analysis.retransmission发生重传的时间点、重传包序号、RTT 变化HTTPhttp.requestDNSdns.flags.response1查询域名、响应 IP、响应时间ICMPicmp类型、序号、TTL、往返时间写报告时不要直接把 CSV 全部贴进去那样信息量太大反而难读。我的习惯是贴一个原始字段表格然后在下面用两句话解释“这里能看到什么”。例如看到 SYN 包序号为 0SYN-ACK 序号为 0ACK 序号为 1说明是在同一连接里完成的握手这是教科书里“序号从 0 开始相对值”的实例。2.2 配置类实验的命令回显与网桥转发表记录方式路由与交换实验用的是 Cisco Packet Tracer 或华为 eNSP报告主体不是配置过程截图而是验证性命令的回显。老师问“VLAN 配成功了吗”不是看你在 CLI 里输入了什么而是看display vlan的输出。配置类实验报告至少要保留三份信息网络拓扑、关键配置片段、验证命令输出。以划分 VLAN 为例在华为模拟器上的验证命令可以这样整理display vlan summary display vlan 10 display mac-address vlan 10第一条命令看 VLAN 总数和状态第二条看 VLAN 10 的接口成员第三条查看 MAC 地址表。很多同学在做“网桥转发表”练习时只写到上面的前两条忽略了display mac-address但这恰是数据链路层学习过程的核心证据。转发表题目喜欢问“主机 A 发送帧到主机 B 后交换机里新增了哪条表项”实验报告里把display mac-address前后的表项贴出来就能直接对应教科书结论。拓扑图不要用画笔软件重新画直接在 Packet Tracer 里截图重点标注每个设备的 IP 和掩码。如果需要批量展示配置先导出文本show running-config | include vlan在华为设备上对应的是display current-configuration | include vlan报告里贴命令回显后必须补一段“预期结果对照”。例如 VLAN 创建失败常见原因是接口没有先从 Access 模式切到 Trunk 模式。用这种写法报告汇总时就变成了一份排错记录而不是命令粘贴板。2.3 HTTP、DNS 与 TCP 状态迁移协议分析实验的时序是灵魂协议分析类实验比抓包更近一步要求把观测到的报文序列映射到教科书里的状态图上。最典型的是 TCP 连接关闭的 FIN 序列以及 HTTP 请求的串行与并发。这类报告最好的呈现方式是时间线表格而不是一张满屏截图。从 pcap 中提取 TCP 连接建立和关闭的完整时间线tshark -r tcp.pcap -Y tcp.flags.syn1 || tcp.flags.fin1 \ -T fields -e frame.number -e frame.time \ -e ip.src -e ip.dst -e tcp.flags \ -e tcp.seq_raw -e tcp.ack_raw \ -E headery -E separator,这里用tcp.flags.syn1和tcp.flags.fin1抓的是握手和挥手包。tcp.seq_raw和tcp.ack_raw是原始序列号和确认号比相对序号更适合用来对状态迁移图。报告里我应该画一个表每一列分别放“时间、源端、方向、标志位、序列号、确认号”然后下面一行加粗标注这是哪一步握手或挥手。这样无论是复习还是被答辩提问都能一眼定位到自己想找的那一步。DNS 实验相对简单但要写清楚“递归查询”和“迭代查询”的区别。打开抓包文件先看 DNS 查询的源端口是不是 53再看响应里的flags字段。如果flags里的Recursion available为 1说明响应来自递归解析器。实验报告里不要把 DNS 信息直接写成“解析到了 www.example.com”而要写“客户端发出了 A 记录查询响应中 Answer RRs 为 3对应多个 A 记录说明目标域名做了多 IP 负载均衡”。这种表述才是“计算机网络自顶向下”视角里真正有用的观察结论。3. 用 Python 把分散的实验报告汇总成 .doc 文档而不是手动复制粘贴3.1 为什么汇总工作不应该在 Word 里完成很多人做汇总的方式是开一个新 doc把以前的报告一段段复制粘贴进去。过程不算复杂但后果很常见图片丢失、标题编号错乱、目录无法更新、不同报告的样式互相覆盖。用 python-docx 生成汇总最大的价值是让“标题层级、正文样式、表格格式”完全一致。尤其是计算机网络这类实验报告里必然包含大量协议表格和代码块统一编码和缩进后后期想转 PDF 或按章节拆分都不会乱。需要说明的是python-docx 默认保存的是 .docx而课程作业上传时经常要求 .doc 后缀。Word 打开 .docx 后另存为 .doc 即可Linux 环境的用户可以用 LibreOffice 批量转换后面第 5 章会专门讲验证方法。这里先解决怎样把多个实验内容组合成一个 docx。3.2 一段可复用的 python-docx 脚本标题、表格、图片都能落位下面这个脚本演示了最常用的四个操作加一级标题、加正文段落、加表格、加图片。跑通后可以把它做成一个函数由主脚本循环处理各个实验目录。from docx import Document from docx.shared import Pt, Cm from docx.enum.text import WD_ALIGN_PARAGRAPH doc Document() # 设置默认正文字体避免不同机器上字体回退造成乱码 style doc.styles[Normal] style.font.name SimSun style.font.size Pt(12) # 一级标题 doc.add_heading(实验二 TCP 三次握手抓包分析, level1) # 正文段落写清实验目的 doc.add_paragraph(抓取本机访问 HTTP 服务器时建立的 TCP 连接验证三次握手的序号变化。) # 表格时序观察点 table doc.add_table(rows2, cols4) table.style Light Grid Accent 1 hdr table.rows[0].cells hdr[0].text 步骤 hdr[1].text 方向 hdr[2].text 标志位 hdr[3].text 关键字段 row table.rows[1].cells row[0].text 第一次握手 row[1].text 客户端 - 服务端 row[2].text SYN row[3].text seq0 # 插入截图 doc.add_picture(tcp_handshake.png, widthCm(14)) doc.paragraphs[-1].alignment WD_ALIGN_PARAGRAPH.CENTER doc.save(lab_summary.docx)这段脚本里值得注意的参数有三个style.font.name决定了整篇文档中文字体如果不在styles[Normal]上设置而只在具体段落里设置标题和表格的字体仍然是默认值table.style用了内置样式保证表格边框统一add_picture的widthCm(14)把图片限制在页面宽度内避免截图太大跨页。如果每个实验已经单独写过 .md 或 .txt也可以用 pandoc 做快速合并效果是自动生成标题层级pandoc lab1.md lab2.md lab3.md -o summary.docxpandoc 的优点是支持引用和代码块缺点是表格样式自定义能力偏弱。所以我的建议是简单实验用 pandoc需要大量格式化图片的报告用 python-docx。3.3 多份 .doc/.docx 合并时的顺序控制和去重课程报告最终要按实验时间或章节顺序排列。如果直接合并文档经常会出现“同一份代码在实验二和实验四各出现一次”的情况。用脚本合并前先做一个简单的“清单文件”列出每个实验的文件名和是否已纳入汇总。每一行一个实验用制表符分隔脚本读取这个清单后按顺序组装。处理 .docx 合并时如果不想配置 python-docx 且只需要纯追加可以使用 docxcompose 库pip install docxcomposefrom docxcompose.composer import Composer from docx import Document master Document(lab1.docx) composer Composer(master) for path in [lab2.docx, lab3.docx]: doc Document(path) composer.append(doc) composer.save(summary.docx)Composer.append会把另一个文档的正文内容和样式合并进来同时保留页眉页脚。要注意的是合并后的目录不会自动更新需要打开 Word 后全选段落按 F9 刷新域。合并前最好把每个子文档里嵌入了相同图片的情况先处理掉因为图片会在新文档里被复制多份导致文件体积膨胀到几十 MB上传学习通或 BB 平台时可能出现“无法预览 doc”的情况。4. 从实验汇总到期末复习让报告按计算机网络知识体系重新组织4.1 按谢希仁《计算机网络》章节给实验报告打标签实验内容是按课堂进度做的但复习通常按教材结构走。我在汇总时会在每个实验标题后面加一个“知识域”标签例如“数据链路层”“传输层”“应用层”。这样到期末周看目录就知道哪个章节的实验还没补齐。实验内容教材章节目录谢希仁版复习关键词交换机自学习与转发表第3章 数据链路层网桥、MAC地址表、泛洪IP 分片与 ICMP第4章 网络层TTL、偏移量、数据报格式TCP 三次握手与重传第5章 传输层序号、确认、窗口、超时重传HTTP/DNS 请求流程第6章 应用层递归查询、RTT、缓存这个映射表同时适用于计算机网络基础课程的期末复习以及“计算机网络第八版答案”这类刷题资料对照使用。如果目标方向是考研 408我会额外关注“湖科大教书匠”系列视频里对章节的划分逻辑把实验报告挂在相应的考点下面。对应“计算机网络自顶向下”教材的读者则应该多关注每章末的“实验套件”环节报告中要补上“应用层数据流向传输层”的衔接描述。4.2 每段实验结论都写成“现象 原因 影响”三行很多人的实验报告只有“实验完成结果正确”这样写对复习毫无帮助。从期末复习的角度报告里每一段结论都应该能被当作一个简答题答案。我习惯用三行结构现象抓包发现 DNS 响应返回了 3 个 A 记录。原因请求域名指向多台服务器负载均衡机制生效。影响客户端随机选择其中一个 IP 建立连接下次请求可能落点不同。如果只是照抄“计算机网络第八版答案”里的结论不写出自己的观察字段汇总时就会缺乏可信度。我的做法是“先截图再填表格最后写三行结论”这样报告自然形成可检索的内容块。尤其在复习的冲刺阶段你只需要扫三行结论就能回忆整个实验而不是重新阅读大段描述。4.3 两种会被当成实验结论的“伪现象”要提前剔除做抓包实验时网络上会有很多来自后台进程的背景流量。比如 Windows 更新、网卡探测、软件激活服务都会产生 TCP 连接这些不属于本实验范围。过滤它们的方法是先获取本机到目标服务器之间的过滤器例如ip.addr 目标IP tcp.port 目标端口。同时浏览器页面有时会出现“系统检测到您的计算机网络中存在异常流量”的安全验证页这是网站反爬机制对出口 IP 的临时限制与本地链路层现象无关绝不能写进实验报告当论据。遇到这种情况换一个实验目标域名或者等验证页自动解除就行。另一个伪现象是时间戳漂移。如果电脑操作系统时间被自动校时抓包文件里的绝对时间可能跳动几百毫秒导致你算出的 RTT 异常。报告里统一使用frame.time_relative即相对时间戳从抓包开始到当前包的秒数就不会被系统时间调整干扰。5. 汇总成 .doc 后用命令行做一次文档体检避免打开报错5.1 用 LibreOffice 批量转换格式并确认 .doc 可打开汇总脚本生成的是 .docx需要转换成 .doc可以在命令行完成soffice --headless --convert-to doc summary.docx --outdir ./output命令里--convert-to doc对应旧格式--outdir指定输出目录。转换完成后检查summary.doc的文件大小如果只有几千字节大概率是转换过程出错了。此时用file命令看真实类型file summary.doc正常输出应该是“Composite Document File V2 Document”如果显示“Microsoft Word 2007”或“Zip archive”说明后缀是 .doc 但内容仍是 .docx。WPS 和 Word 虽能自动打开但某些老系统只认 OLE 复合文档所以必须保证后缀和真实格式一致。5.2 检查图片引用是否完整避免显示“无法预览 doc”docx 本质上是一个 zip 包里面的图片文件如果失联Word 打开时会报“找不到图片”或直接提示文档损坏。解压检查是最直接的方法unzip -l summary.docx | grep -E word/media/|word/embeddings/如果word/media/下图片数量明显少于报告中截图数量说明图片在保存前已经被移动或删除。另一个常见问题是word/media/下存在 0 字节文件用ls -l查看文件大小即可发现。修复方式是把缺失图片重新插入原位而不是直接改扩展名。5.3 自动生成“实验完成度检索表”的小技巧给汇总文档加一页表格作为整个报告的索引也就是实验完成的“checklist”。用 python-docx 写一个循环读入目录里所有实验文件夹名自动生成两列一列是实验编号一列是是否包含结果截图和命令回显标志检查项是“是否存在 pcap/截图”“是否包含命令输出”“是否有三行结论”。达到全部标记为“可复习”否则标记为“待补”。import os lab_dirs [lab1_tcp, lab2_http, lab3_vlan] with open(checklist.txt, w, encodingutf-8) as f: for lab in lab_dirs: has_pic any(x.endswith(.png) for x in os.listdir(lab)) has_cmd config.txt in os.listdir(lab) status OK if has_pic and has_cmd else MISSING f.write(f{lab}\t{status}\n)执行后得到的 checklist 可以直接粘贴到汇总文档的最后作为复习时的导航。把这份清单和目录放在一起期末复习时先翻它再决定要看哪段抓包截图还是哪段命令回显。那个旧格式 .doc 的“文件格式和实际格式不一致”问题也会在使用旧版教学软件时提前暴露而不是等到提交前一刻才发现上传失败。本文还有配套的精品资源点击获取