简介:计算机网络课程实验报告汇总是一份面向高校计算机网络课程学习者的实验报告合集,覆盖数据链路层PPP协议、单台交换机划分VLAN、跨交换机实现相同VLAN互访、RIP路由协议、OSPF路由协议、NAT内部源地址转换以及子网划分等核心实验。每个实验均按实验目的、设备与拓扑、配置步骤、问题解决与收获展开,部分实验还给出应用背景与拓展思路,既可作为实验报告撰写模板,也可作为期末复习与路由交换实验的参考提纲。整个压缩包仅含1个doc文件,大小约3.18MB,内容结构完整,打开即可按目录快速定位到对应实验。目前已有292人学习下载,对于正在完成同类网络实验或准备相关技能考证的同学,可对照实验现象、配置流程与排错思路,大幅提升实验操作与报告整理效率。
1. 一份“.doc 实验报告汇总”为什么是期末复习的最快入口
期末前一周,你从 U 盘里翻出“计算机网络课程实验报告汇总.doc”,里面是抓包截图、路由配置命令、CSMA/CD 时序图。它不像教材那样有完整的推导,也没有网课里“放心,这里不考”的安慰,但它是你亲手做过一遍的知识切片。这份文档的价值不在排版,而在它把“计算机网络自顶向下”那套抽象分层固化成了可回放的现象:TCP 三次握手的 seq/ack 变化、DNS 的请求-响应配对。对要应付期末、408 或者刚转行做 DevOps 的人来说,把实验报告整理好,等于有了一本带参数的个人题库。下面直接讲怎么整理、怎么分析、怎么避坑。
2. 报告汇总里该装哪些实验:按自顶向下五层把实验清单和验收标准列全
很多人的“实验报告汇总”其实是按时间顺序堆的:实验一、实验二、实验三一直到期末。这种顺序适合提交,不适合复习。真正能当复习资产用的汇总,必须按 TCP/IP 五层重新组织,因为考试和面试都按层出题。
2.1 自顶向下分层:把 TCP/IP 五层和课程实验一一对上
“计算机网络自顶向下”这本书的叙事方式是先讲你能感知的应用层,再顺着协议栈往底层挖。国内多数课程采用谢希仁《计算机网络》的脉络,实验安排也基本遵循这个顺序,只是不同学校的实验编号不一样,比如 HNU 的计算机网络实验一是 Wireshark 入门,而另一所学校实验一可能就是 HTTP 抓包。
无论编号怎么变,实验内容最终都能落回五层:
- 应用层:HTTP、DNS、FTP、SMTP,用 Wireshark 抓包验证请求-响应模型和各个字段的语义。
- 传输层:TCP 三次握手与四次挥手、UDP 数据报,重点在序号、确认号、窗口和连接状态迁移。
- 网络层:IP 数据报格式与分片、ICMP 差错报告、ARP 地址解析、路由表与 RIP/OSPF 配置。
- 数据链路层:以太网帧格式、MAC 地址学习、VLAN 隔离、生成树协议,实验通常在 eNSP 或 Packet Tracer 里做。
- 物理层:单独做实验很少,多数和数据链路层合并,比如观察网线线序、集线器冲突域。
按层归档的价值在于复习路径清晰。计算机网络期末复习的典型顺序就是“从上往下过”:应用层的 HTTP 状态码和 DNS 递归/迭代查询,传输层的 TCP 画图题,网络层的 IP 分片偏移计算,数据链路层的 MAC 帧结构。如果报告按时间堆着,你复习到传输层时还要在十几个实验里翻找哪一个是 TCP 的,效率很低。
2.2 一份“能过审”的实验报告的五段骨架
很多学校的实验报告模板只给“实验目的、实验原理、实验步骤、实验结果、思考题”五个空,但真正让报告在答辩时不翻车的,是“结果分析”里写出了协议状态,而不是一句“我看到了”。
我一般建议所有实验都套用同一个五段骨架:
- 实验目的:两句话。一句说验证什么,一句说掌握什么。不要写“熟悉计算机网络实验”,要写“验证 TCP 三次握手过程中 seq/ack 号的递增关系”。
- 实验环境:操作系统版本、软件版本、拓扑图。比如“Windows 11 + Wireshark 4.0.6,主机 A 通过虚拟网卡连接主机 B”。有了环境,别人才可能复现,这也是报告和抄作业的分水岭。
- 实验步骤与命令:每一条步骤必须有输入和输出对应。例如“在 cmd 中输入
curl http://192.168.1.10/,同时在 Wireshark 里过滤tcp.port == 80,得到 87 个包”。 - 结果分析:截图加标注,再对照协议标准。抓包截图必须能看清端口、序号、标志位,并且在截图下方用表格列出关键字段。
- 结论与思考:一段话即可。可以写“本次实验验证了 TCP 的三次握手,实际抓包中观察到 SYN 重传一次,原因是服务器未及时回复 ACK”。这样的记录比十句“通过实验我学到了”值钱得多。
这个骨架的好处是:期末复习时你只需要看“结果分析”和“结论”,就能重新唤起对协议的印象。如果报告里只有目的和步骤,基本等于白做。
2.3 实验清单与验收参数表
整理汇总之初,先盘点你手头有哪些实验报告,按五层填下表。每一行都有一个“验收参数”:如果报告里的参数和标准值一致,说明实验真的做成了;如果不一致,说明中间有环境或步骤偏差,这正是复习时要盯住的考点。
| 分层 | 实验名称 | 常用工具 | 验收参数(标准值) |
|---|---|---|---|
| 应用层 | HTTP 请求/响应 | Wireshark + curl | 状态行HTTP/1.1 200 OK,有 Host、User-Agent、Content-Length |
| 应用层 | DNS 查询 | Wireshark + nslookup | 查询包与响应包 Transaction ID 相同,Answer 区 RRtype=A,TTL 为 300 |
| 传输层 | TCP 三次握手 | Wireshark + nc / curl | SYN 的相对 seq=0,SYN+ACK 的 ack=1,ACK 的 ack=1 |
| 传输层 | UDP 数据报 | Python socket + Wireshark | UDP 头部 8 字节,Length 字段等于 IP 负载长度减 20 |
| 网络层 | IP 分片 | ping -l 3000+ Wireshark | 两个分片,Identification 相同,第一个分片 MF=1,第二个 MF=0 |
| 网络层 | ICMP Ping | ping+ Wireshark | Echo request 与 Echo reply 的 Identifier 一致 |
| 数据链路层 | VLAN 隔离 | eNSP / Packet Tracer | 同一 VLAN 能通,不同 VLAN 不通,Trunk 放行多个 VLAN |
如果某个实验的验收参数和报告截图不一致,说明当时的实验环境有问题,或者报告里贴了别人的图。这种不一致在期末会被出题人反着考:比如给你两个 IP 分片,问“第二个分片的片偏移是多少”。你在报告里见过 MF=0 的包,这道题能直接算出来。
如果学校没给真实实验环境,常见做法是自己在 VMware 里开两台 Ubuntu 虚拟机,一台跑 nginx,一台用 curl 触发,Wireshark 装在宿主机上,用混杂模式抓虚拟网卡。这样环境成本最低,也最接近生产网络的真实行为。整理汇总时如果发现某份报告缺少环境记录,建议补上“复现命令”,否则期末对着截图解释不了。
3. 把散落报告攒成一份 .doc:合并、排版与目录生成实操
把多份实验报告合并成一个“汇总.doc”,听起来简单,实际用复制粘贴的人十有八九会翻车。这一章讲清楚合并、排版和目录生成的完整流程。
3.1 用“插入对象-文件中的文字”合并多个 .doc:不丢图片与页眉
最不推荐的合并方式,是把一个报告全选复制到另一个报告末尾。复制粘贴会把图片降级成“链接”,源文件移动后红叉一片,原有样式也会串味。优先鼠标操作是新建一个空 Word 文档,依次执行“插入 → 对象 → 文件中的文字”,按实验顺序选择多个 .doc。这个命令会把每个文件的正文、表格、嵌入式图片完整读入,保留图文混排结构。
如果你有十来个报告,手动点会烦。我一般写一个 pywin32 脚本批量合并,最需要注意的是文件名排序:“实验10”按字典序会排在“实验2”前面,所以要先提取实验编号转成整数再排。
# 批量合并多个 .doc 到“汇总.doc”,依赖 pywin32 import win32com.client as win32 import glob import re def lab_sort_key(path): """从文件名里提取实验编号,解决 实验10 排在 实验2 前面的字典序问题""" m = re.search(r'实验(\d+)', path) return int(m.group(1)) if m else 0 word = win32.Dispatch('Word.Application') # Dispatch 比 gencache 更稳,绕开缓存问题 word.Visible = False files = sorted(glob.glob(r'D:\network_lab\*.doc'), key=lab_sort_key) if not files: print('目录下没有 .doc 文件') raise SystemExit(1) doc = word.Documents.Add() # 新建空文档,作为合并载体 for f in files: word.Selection.EndKey(6) # 6 对应 wdStory,光标移到文档最末尾 word.Selection.InsertFile(f) # 完整读入目标文件,图片保留为嵌入对象 word.Selection.InsertBreak(7) # 7 对应 wdPageBreak,让每个实验从新页开始 doc.SaveAs(r'D:\network_lab\实验报告汇总.doc', 0) # 0 是纯 .doc 格式(Word 97-2003) doc.Close() word.Quit() print('合并完成,共', len(files), '个文件')逻辑说明:EndKey(6)把光标移到文档末尾,InsertFile不走剪贴板,所以图片不会被降级成链接,也不会因为剪贴板大小崩掉。InsertBreak(7)插入分页符,让每个实验从新页开始,方便后续统一设置页码和目录。FileFormat=0保存为旧版 .doc,如果最终想交付 .docx,把这个参数改成 12。
参数说明:路径里不要有中文空格问题;如果你用的是 WPS 而不是 Office,win32.Dispatch('Word.Application')会失败,WPS 用户建议直接手动“插入对象”。脚本合并完成后,建议另存一份 PDF,防 Word 版本差异导致排版错位。
3.2 统一排版的三个关键参数组:字体、行距、首行缩进
合并完成后,排版是最耗时的一步。我的做法是先全选,套用“正文”样式,再统一调整,而不是逐个改字体。需要把三个参数组一次设到位:
- 字体:中文宋体五号(10.5pt),英文和数字 Times New Roman;标题用黑体,一级标题四号,二级标题小四。
- 行距:1.5 倍行距,段前段后 0 行。1.5 倍行距既方便老师批注,在屏幕和打印两种场景下都不会太挤。
- 首行缩进:固定 2 字符,也就是 21 磅。网上复制的报告经常是缩进 0,段落边界一模糊,整页看起来像代码块。
上面这些参数可以用宏一次搞定。下面这段 VBA 是“选择当前样式 + 图片居中”的样例:
Sub NormalizeReportFormat() ' 统一正文格式:宋体五号、1.5倍行距、首行缩进21磅 Application.ScreenUpdating = False Selection.Style = ActiveDocument.Styles("正文") ' 中文版 Word 用“正文”,英文版用 "Normal" Selection.Font.Name = "宋体" Selection.Font.NameAscii = "Times New Roman" Selection.Font.Size = 10.5 Selection.ParagraphFormat.LineSpacingRule = wdLineSpace1pt5 Selection.ParagraphFormat.FirstLineIndent = 21 ' 单位是磅,对应 2 个五号中文字符 Dim pic As InlineShape For Each pic In ActiveDocument.InlineShapes pic.Range.Paragraphs.Alignment = wdAlignParagraphCenter ' 嵌入式图片统一居中 Next Application.ScreenUpdating = True End Sub逻辑说明:FirstLineIndent = 21是磅值,如果你正文用的是 12pt,这个值要改成 24。宏只处理当前选区和文档里的嵌入式图片,浮在文字上方的图片(FloatingShape)不会被居中,所以操作前最好先全选图片,统一改成“嵌入式”。
参数说明:wdLineSpace1pt5是 VBA 内置枚举,对应 1.5 倍行距;Application.ScreenUpdating关掉是为了提升批量处理速度,脚本跑完再恢复。Alt+F8 打开宏对话框,选中NormalizeReportFormat运行即可。
3.3 自动目录与从第 1 页开始的页码:域代码用法
合并完的第一步是生成目录,而目录依赖内置标题样式。如果报告里的“标题”只是手动放大的字号,而不是“标题1”“标题2”样式,目录一定会显示“未找到目录项”。所以先手动把每个实验名设为“标题1”,小节点设为“标题2”,然后“引用 → 目录 → 自动目录1”。Word 实际插入的是一段域代码:
{ TOC \o "1-3" \h \z \u }\o "1-3"表示收集标题 1 到标题 3,\h让目录项带超链接,\z让目录支持在 Web 视图中显示,\u表示使用大纲级别。如果目录出现“未找到目录项”,说明标题不是内置样式,需要重新应用标题样式,而不是改字号。
页码从第 1 页开始是个高频需求。汇总文档如果有封面,一般封面不想要页码,正文第一页要显示“第 1 页”。操作步骤是:封面末尾插入“分节符(下一页)”,双击页脚,在“页眉和页脚”选项卡里断开“链接到前一节”,然后插入页码并设置“起始编号为 1”。底层技术是分节符,不是分页符:分页符只切页面,分节符才能断开页眉页脚和页码域。
4. 抓包与协议分析实验怎么写才不叫“贴截图”:三个可复现的成文套路
实验报告里最常见的水内容是“截图 + 一句话”。老师看到的是:一张模糊的 Wireshark 窗口、一句“TCP 建立连接成功”。这种报告期末复习时基本没法用,因为截图不会告诉你当时的过滤条件是什么,更不会告诉你 seq/ack 怎么变化。这一章讲三个能让报告真正立住的成文套路。
4.1 Wireshark 过滤表达式与时间列:让截图自带结论
写抓包实验的第一步,不是打开 Wireshark,而是先想清楚“我要验证什么”。比如验证 TCP 三次握手,过滤表达式就要聚焦在握手包上,而不是把整个过程几百个包全截进去。
常用显示过滤表达式:
tcp.flags.syn == 1 and tcp.flags.ack == 0这个表达式只显示 SYN 包。如果再加上tcp.flags.syn == 1 and tcp.flags.ack == 1,就筛出 SYN+ACK。两条过滤合在一起,三次握手的前两个包就出来了。
tcp.stream eq 1tcp.stream eq按 TCP 流编号过滤。右键任意包 → “追踪流 → TCP流”,Wireshark 会自动把这一条连接的所有包过滤出来,报告中写“本次抓包共属于第 1 条 TCP 流”,别人就能在同样的 pcapng 里复现。
截图之外,报告里必须有一张表格,列出四个时间点:客户端发出 SYN、服务器返回 SYN+ACK、客户端发出 ACK、连接建立后第一个 HTTP 请求。时间列建议用“相对时间”,也就是从抓包开始算的秒数,这样能直接写“第 0.000 秒 SYN,第 0.023 秒 SYN+ACK,第 0.045 秒 ACK”。
4.2 TCP 三次握手实验的必填字段与常见错误
TCP 实验是计算机网络课程实验里最常被做成“贴截图”的一个。要让报告不翻车,至少要把这三个握手包的关键字段写成表格:SYN 包的 seq、SYN+ACK 包的 seq 和 ack、ACK 包的 ack。
一个很容易踩的坑:Wireshark 默认显示的是“相对序号”,不是真实的 ISN。第一次抓包看到 SYN 的 seq=0,会觉得“内网里序号竟然从 0 开始”,其实这是 Wireshark 为了可读性把第一个包换算成了 0。如果想看真实序号,要在“编辑 → 首选项 → Protocols → TCP”里取消勾选“Relative sequence numbers”。
报告中建议这么写:注明“本报告使用相对序号,SYN 的 seq=0,SYN+ACK 的 ack=1,对应客户端 ISN+1”。这个说明本身就是分数,因为老师知道你是真抓过包,不是抄的状态图。
补充一个操作技巧:右键包列表 → “复制 → 仅复制摘要文本”,能把包的 No.、Time、Source、Destination、Protocol、Length、Info 按制表符导出,粘贴到 Word 里直接转成表格。这样报告里的数据列不会因为截图压缩而模糊。
4.3 应用层实验(HTTP/DNS)的报文分析便携模板
应用层实验,尤其是 HTTP 和 DNS,报告的关键是“拆报头”。比如 HTTP 实验,过滤表达式用:
http.request.method == "GET"抓到客户端发出的 GET 请求后,在报告中贴出请求行、Host、User-Agent、Accept 四个字段,再对应贴服务器的状态行和 Content-Type。DNS 实验则用这一对过滤表达式区分查询和响应:
dns.flags.response == 0 dns.flags.response == 1一份能直接套用的 DNS 实验报告模板可以这样写:
- 实验目的:验证 DNS 查询的请求-响应模型,观察 A 记录返回。
- 关键步骤:在 cmd 里执行
nslookup www.example.com,开启 Wireshark 抓包。 - 结果分析:查询包和响应包的 Transaction ID 相同,说明这是一对匹配的报文;Answer 区包含两条 A 记录,TTL=300。
- 结论:DNS 基于 UDP,请求-响应是一问一答,可靠性由应用层重传机制保障。
这套模板的核心是“字段对应结论”,而不是大段复述课本。如果在抓包里看到 DNS 走的是 TCP 53,而不是 UDP 53,那多半是响应超过 512 字节触发了 EDNS0 截断,这个现象写进报告里比“实验成功”四个字有价值得多。
5. 避坑 / 常见问题:.doc 汇总的五个翻车现场与排查路径
这一章是血泪经验汇总。整理和提交“实验报告汇总.doc”的过程中,我踩过的坑基本都集中在下面五类,每条按“现象 → 原因 → 解决”写清楚。
5.1 现象:.doc 在 WPS 里打开样式全乱,标题变成普通大字
现象:在 Word 里排好的汇总文档,拷到装了 WPS 的电脑上,标题层级全部消失,目录点击无效,字体变成默认等线。
原因:Word 和 WPS 对内置标题样式的解析规则不同。如果源 .doc 文件是 Office 2007 生成的,样式名称在内部被本地化成“标题 1”,而 WPS 对“标题1”和“Heading 1”的映射优先级不一样,最终展示结果就会错位。
解决:优先用 Word 打开汇总文档另存为 .docx,再分发;如果只能用 WPS,打开后先全选 → 清除格式 → 重新套用“标题1/标题2”,另存为 .docx 或 PDF。不要用 WPS 直接“另存为 .doc”,二次转换会把样式映射再搅乱一次。
5.2 现象:合并后图片变红叉,原报告里的截图全部丢失
现象:用“插入对象-文件中的文字”合并多份报告后,某些图片位置显示红叉或空白占位符。
原因:这些图片在原 .doc 中是以“链接到文件”方式插入的,合并时只把图片路径写进了汇总文档,没有真正嵌入。一旦源图片文件被移动或重命名,链接断开,图片就无法显示。
解决:合并前,对每一份源 .doc 单独另存为 .docx——另存操作会把第三方图片重新嵌入为文档内部资源。合并后检查“文件 → 选项 → 高级 → 插入图片时默认方式”是否为“嵌入”。已经出现红叉的,右键图片 → “更改图片”重新指向原图文件;如果原图已经找不回来,只能在源 .doc 里重新插入一次。
5.3 现象:页码从第 3 页开始,第一章前面多了两个空白页
现象:汇总文档打开后,正文第一页显示的不是“第 1 页”,而是“第 3 页”,往前翻还有两个空白页,怎么删都删不掉。
原因:每个实验报告结尾都有分页符或空行,合并后这些空白段落被带进了汇总文档;或者封面的“分节符(下一页)”被误用成了“分页符”,导致页码域没有真正断开,从上一节延续下来。
解决:按 Ctrl+Shift+8 显示隐藏格式标记,把每个实验末尾多余的空行和“分页符”删掉。然后在封面末尾插入“分节符(下一页)”,双击页脚,取消“链接到前一节”,右键页码 → “设置页码格式” → 起始编号设为 1。注意:开头多出的空白页通常是分节符前面的空段落,把光标移到空白页最后一个回车符前面按 Delete 即可。
5.4 现象:Wireshark 抓包截图在打印时模糊,看不清端口号
现象:截图在屏幕上勉强能看,打印出来或放大后一片糊,端口号、标志位完全看不清。
原因:Windows 显示缩放是 125% 或 150% 的时候,截取的 Wireshark 窗口是缩放后的位图,贴进 Word 又被压缩到 14cm 宽度,细节就没了。
解决:抓包后不要直接截图。用“文件 → 导出分组解析 → 作为纯文本”把包列表导出成 CSV 或 txt,再在 Word 里用等宽字体(Consolas)贴成表格。如果非得用截图,先把 Wireshark 的字体调大(视图 → 放大,Ctrl+加号),再把窗口调窄,只截关键几行,避免全屏截图后缩小。标注端口和 seq/ack 号时,用截图工具加方框和箭头,不要让老师自己去图里找。
5.5 现象:.doc 转 PDF 后中文乱码,替换字符出现“口口”
现象:用 WPS 或在线工具把汇总.doc 转成 PDF,中文全部变成“口口”或乱码,英文数字正常。
原因:源文档使用了宋体/黑体,但转换环境的字体库里没有这些中文字体;或者文档是用 UTF-8 编码的文本块混排进 GB2312 文档,字体嵌入信息丢失。
解决:转换 PDF 前在 Word 里勾选“文件 → 选项 → 保存 → 将字体嵌入文件”,再使用“另存为 PDF”而不是第三方虚拟打印机。如果文档里混入了从网页复制来的 UTF-8 文本,先全选 → 清除格式 → 重新应用“正文”样式,把字体重置为标准宋体。做完这两步再转 PDF,中文基本不会乱码。
6. 把汇总文档用成复习题库:实验现象到考点的逆推方法
实验报告汇总不只是给老师看的,期末复习时它是一份带答案的题库。逆推方法很简单:每个实验现象都能对应到教材里的一个知识点和一种考法。
6.1 现象到考点的五层映射表
以最常见的抓包现象为例:
| 报告里的实验现象 | 对应考点 | 复习动作 |
|---|---|---|
| 抓包看到 SYN 重传 | TCP 超时重传与 RTO 计算 | 重算 RTO=2*SRTT,理解 Karn 算法 |
| IP 分片 MF=1,第二个片偏移为 1480 | IP 分片偏移计算方法 | 手算一个 4000 字节数据报分片成 1500 MTU 的题目 |
| DNS 响应 TTL 不同 | DNS 缓存机制与 TTL 语义 | 理解本地缓存与权威服务器的优先级 |
| TCP 四次挥手中的 TIME_WAIT 状态 | 连接关闭状态迁移 | 画状态迁移图,记 TIME_WAIT 时长 2MSL |
| ARP 请求是广播,响应是单播 | ARP 协议报文格式 | 默写 ARP 请求/响应报文各字段 |
这张表的核心价值在于:把“我做过什么实验”变成“我掌握哪些考点”。复习时不用翻整本教材,直接对着映射表逐行过。
6.2 快速自测:从报告里挑三个参数考自己
现在总结一下我自己的习惯:整理完“计算机网络课程实验报告汇总.doc”后,我会在最后一页加一张“自测速查表”,包含下列过滤表达式,周末复习时随机抽查:
| 自测目标 | Wireshark 显示过滤 |
|---|---|
| 只看到三次握手 SYN | tcp.flags.syn == 1 and tcp.flags.ack == 0 |
| 只看 HTTP GET 请求 | http.request.method == "GET" |
| 只看 DNS 响应 | dns.flags.response == 1 |
| 只看 TCP 重传 | tcp.analysis.retransmission |
| 只看 ARP 请求 | arp.opcode == 1 |
复习时把报告里的截图盖住,只凭记忆回答:SYN+ACK 包的 ack 号是客户端 seq 加几?答案是 1,你只有亲手在抓包里看到过这个 1,考场上画图才不会犹豫。相比直接背教材,从实验报告逆推考点更贴近出题人的思路,因为我踩过的坑告诉我:实验中验证过的现象,永远是记忆最牢固的那部分。
如果某天你发现报告里有个参数和你现在的计算结果对不上,先别怀疑自己,回到原始抓包文件重新过滤一遍。我吃过一次亏:期末复习发现 TCP 握手 seq 对不上,查了半天才发现是当年 Wireshark 开着“相对序号”,后来我把每个实验的 pcapng 和过滤表达式都另存了一份。希望这个教训对你有用,也希望能帮到你把手头的实验报告变成真正能复用的复习资产。
本文还有配套的精品资源,点击获取