
简介这份广东工业大学2015年计算机网络实验报告面向计算机相关专业学生及网络初学者用于参考实验流程、规范报告撰写与复习网络基础配置。报告以GNS3网络仿真为主线涵盖交换机基础操作、VLAN划分与VLAN间通信、路由器连通性验证以及Wireshark抓包分析Trunk链路流量等典型实验内容并配有拓扑图、测试截图与结果说明便于对照理解每一步配置目的与验证方法。资源包共1个PDF文件大小约1.17MB内容完整、结构清晰可直接用于实验预习、报告模板参考或期末复习。目前已有71人学习下载适合需要完成计算机网络实验、巩固GNS3与VLAN配置思路的读者借鉴使用。1. 广工2015年计算机网络实验报告一份能直接对着做的实验存档如果你正在上计算机网络这门课或者带这门课的助教大概率会遇到一个很具体的问题实验指导书给的是原理和步骤框架但真到写报告的时候抓包截图要截哪几个字段、Wireshark 过滤器怎么写、协议分析写到什么颗粒度才算过关这些细节没人给你标准答案。这份《广工2015年计算机网络实验报告.pdf》就是一份完整的实验存档覆盖了以太网帧分析、IP 协议、TCP 三次握手与四次挥手、HTTP 请求响应、DNS 解析等经典实验项目每个实验都配有拓扑说明、操作步骤、抓包截图和结果分析。它适合两类人一是正在做同类实验、需要一份可参照的完整范例来对齐格式和深度二是想快速复现一套验证流程、把 Wireshark 抓包分析跑通的自学者。下面我按实际拆解和复现的路径把这份报告里能直接抄作业的部分、参数怎么设、容易翻车的地方逐层讲清楚。2. 实验环境搭建与抓包工具链配置从零把 Wireshark 跑起来2.1 为什么选 Wireshark 而不是 tcpdump这份报告里所有实验的抓包环节都基于 Wireshark这不是随便选的。tcpdump 适合在无图形界面的服务器上做快速抓包但计算机网络实验的核心诉求是「看见协议字段的每一个比特」Wireshark 的分层解析视图和过滤器语法在这个场景下效率高出一个量级。报告里用到的版本是 2015 年前后的 Wireshark 1.x 系列界面和现在 4.x 有差异但核心操作逻辑没变。常见做法是在虚拟机里装一台 Linux报告里用的是 Ubuntu宿主机装 Wireshark 抓虚拟网卡的流量。这样做的原因是实验需要构造特定的网络条件比如断开某个连接、修改 DNS 服务器地址直接在物理机上操作会影响正常上网。如果你手头没有虚拟机环境用两台物理机接同一台交换机也可以但灵活性差一些。我一般会建议先把抓包接口选对。Wireshark 启动后首先弹出的是接口列表这里有个坑如果你用的是虚拟机 NAT 模式抓到的流量是经过地址转换的源 IP 和目标 IP 可能不是你预期的实验地址。报告里用的是桥接模式虚拟机和宿主机在同一网段抓到的包更「干净」。2.2 过滤器语法与常用表达式报告里反复出现的过滤器分两类抓包过滤器和显示过滤器。抓包过滤器在开始抓包之前设置用的是 BPF 语法显示过滤器在抓包之后筛选用的是 Wireshark 自己的语法。很多人搞混这两者导致要么抓了一堆无关包要么过滤条件写错什么都看不到。# 抓包过滤器BPF 语法在接口选择界面的 capture filter 栏输入 host 192.168.1.100 and tcp port 80 # 显示过滤器Wireshark 语法在抓包后的 filter 栏输入 ip.src 192.168.1.100 tcp.flags.syn 1 # 只看 HTTP GET 请求 http.request.method GET # 排除 ARP 和 ICMP 的干扰 !arp !icmp逻辑说明抓包过滤器在网卡层面就丢弃不匹配的包适合流量大的环境显示过滤器只是隐藏不匹配的包原始数据还在。参数方面host后面跟 IP 地址或域名port指定端口号和and等价!和not等价。报告里做 TCP 实验时建议先用tcp.port 80缩小范围再用tcp.flags进一步筛选特定标志位的包。提示如果你在 Windows 上抓本地回环流量比如浏览器访问本机搭建的 Web 服务器Wireshark 默认抓不到。需要装 Npcap 并勾选 loopback 支持或者直接用虚拟机方案绕开这个问题。2.3 实验拓扑的搭建与验证报告里的实验拓扑不复杂但每一步都有验证动作。以 TCP 实验为例拓扑是「客户端 → 交换机 → 服务器」服务器上跑一个简单的 HTTP 服务。搭建完之后报告里做的第一件事不是直接抓包而是先用 ping 确认连通性再用 telnet 测试端口是否开放。# 在服务器上启动一个简单的 HTTP 服务Python 2 写法报告年代对应 python -m SimpleHTTPServer 80 # 在客户端验证连通性 ping 192.168.1.10 telnet 192.168.1.10 80 # 如果 telnet 不通检查防火墙规则 sudo iptables -L -n逻辑说明SimpleHTTPServer是 Python 2 自带的模块监听 80 端口任何 GET 请求都会返回当前目录的文件列表。ping验证 ICMP 层连通telnet验证 TCP 层端口可达。如果telnet卡住或拒绝连接大概率是防火墙拦截了用iptables -L -n查看规则链。报告里没有展开讲防火墙排查但这是实际复现时最容易卡住的一步。参数方面-m指定模块名80是端口号如果 80 被占用可以换成 8080但后续抓包过滤器里的端口号要同步改。iptables -L -n里的-n表示不解析域名直接显示 IP速度更快。3. 以太网帧与 IP 协议分析抓包截图里到底该看哪些字段3.1 以太网帧结构在 Wireshark 里的对应关系报告里第一个实验是分析以太网帧。Wireshark 抓到一个包后中间的面板会按协议层次展开最底层就是 Ethernet II。这里需要关注的字段有四个目的 MAC、源 MAC、类型、帧校验序列FCS。报告里的截图把前三个都圈出来了FCS 因为网卡通常会剥离Wireshark 默认不显示。Ethernet II, Src: 00:0c:29:1a:2b:3c, Dst: ff:ff:ff:ff:ff:ff Destination: ff:ff:ff:ff:ff:ff (Broadcast) Source: 00:0c:29:1a:2b:3c Type: IPv4 (0x0800)逻辑说明ff:ff:ff:ff:ff:ff是广播地址说明这是一个广播帧通常是 ARP 请求。Type: 0x0800表示上层协议是 IPv4如果是0x0806就是 ARP0x86dd是 IPv6。报告里要求学生对比单播帧和广播帧的区别单播帧的目的 MAC 是一个具体的地址广播帧全是 F。参数方面Wireshark 的ethernet.src和ethernet.dst可以作为显示过滤器eth.type 0x0800可以筛选 IPv4 帧。如果你抓到的包显示Type: Unknown可能是网卡驱动没有正确解析换一台机器或者更新 Wireshark 版本通常能解决。3.2 IP 数据报首部字段的逐项解读IP 协议实验的核心是看懂首部里的每一个字段。报告里重点分析了版本、首部长度、总长度、标识、标志、片偏移、生存时间TTL、协议、源 IP、目的 IP。其中 TTL 和协议字段是排查问题时最常用的。Internet Protocol Version 4, Src: 192.168.1.100, Dst: 192.168.1.10 Version: 4 Header Length: 20 bytes Total Length: 60 Identification: 0x1c46 (7238) Flags: 0x02 (Dont Fragment) Fragment offset: 0 Time to live: 64 Protocol: TCP (6) Source: 192.168.1.100 Destination: 192.168.1.10逻辑说明Header Length: 20 bytes说明没有选项字段是最小首部。Total Length: 60是 IP 数据报总长度减去 20 字节首部就是上层数据长度。Flags: 0x02表示设置了「不分片」位这在 TCP 连接中很常见。TTL: 64是 Linux 默认值Windows 默认是 128每经过一个路由器减 1减到 0 就丢弃并返回 ICMP 超时。Protocol: TCP (6)里的 6 是协议号ICMP 是 1UDP 是 17。报告里有一个容易被忽略的细节Identification字段在分片时的作用。如果抓到一个包设置了More fragments标志说明后面还有分片需要根据Fragment offset重组。实际实验中很少遇到分片但理解这个机制对排查 MTU 问题很有帮助。注意Wireshark 默认不计算 IP 首部校验和如果显示Header checksum: 0x0000 [validation disabled]不是包有问题是软件设置。可以在 Preferences → Protocols → IPv4 里打开校验和验证。3.3 ARP 请求与响应的抓包验证ARP 实验是理解 MAC 地址和 IP 地址映射关系的关键。报告里的做法是先清空 ARP 缓存然后 ping 同一网段的另一台机器抓取 ARP 请求和响应。# 查看 ARP 缓存 arp -a # 清空 ARP 缓存Linux sudo ip -s -s neigh flush all # 清空后立即 ping触发 ARP 请求 ping -c 1 192.168.1.10 # 再次查看 ARP 缓存确认映射已建立 arp -a逻辑说明arp -a列出当前缓存的所有 IP-MAC 映射。ip -s -s neigh flush all是 Linux 下清空邻居表的命令等价于清空 ARP 缓存。清空后 ping 会触发 ARP 广播请求目标机器单播回应Wireshark 里能看到一问一答两个包。参数方面-c 1表示只发一个 ping 包避免多余流量干扰抓包。报告里还对比了跨网段 ping 的情况如果目标 IP 不在同一网段ARP 请求的目标地址是网关的 IP而不是最终目标。这个细节在分析网络故障时很关键——如果你发现 ARP 请求的是网关但网关没回应说明网关配置或物理连接有问题。4. TCP 与 HTTP 协议实验复现三次握手、四次挥手和请求响应全流程4.1 TCP 三次握手的抓包与状态验证TCP 实验是这份报告里最核心的部分。三次握手的过程在 Wireshark 里表现为三个连续的包SYN、SYN-ACK、ACK。报告里的截图把三个包的序号和确认号都标出来了这是分析 TCP 可靠传输的基础。# 显示过滤器只看与 192.168.1.10 的 80 端口相关的 TCP 包 tcp.port 80 ip.addr 192.168.1.10 # 只看 SYN 包 tcp.flags.syn 1 tcp.flags.ack 0 # 跟踪 TCP 流右键 → Follow → TCP Stream逻辑说明第一个 SYN 包的Seq0Flags0x02SYN。第二个 SYN-ACK 包的Seq0Ack1Flags0x12SYNACK。第三个 ACK 包的Seq1Ack1Flags0x10ACK。这里的序号是相对序号Wireshark 默认显示相对于第一个包的偏移可以在 TCP 协议设置里关掉相对序号看原始值。参数方面tcp.flags.syn 1筛选所有 SYN 置位的包tcp.flags.ack 0排除 SYN-ACK。Follow TCP Stream会把整个会话的数据按方向拼接显示适合分析 HTTP 请求和响应内容。报告里要求学生画出三次握手的状态转换图实际上 Wireshark 的Statistics → Flow Graph可以直接生成时序图比手画准确得多。4.2 四次挥手与连接释放的异常情况四次挥手比三次握手多一个包因为 TCP 是全双工的每个方向都需要单独关闭。报告里的截图显示了 FIN、ACK、FIN、ACK 四个包。但实际抓包时经常只看到三个包原因是第二和第三个包合并了——被动关闭方在收到 FIN 后如果没有数据要发会把 ACK 和自己的 FIN 一起发出去。# 筛选 FIN 包 tcp.flags.fin 1 # 查看 TCP 连接重置RST包 tcp.flags.reset 1 # 统计 TCP 会话的往返时间 tcp.analysis.ack_rtt逻辑说明tcp.flags.fin 1筛选所有 FIN 置位的包。tcp.flags.reset 1筛选 RST 包RST 表示连接被强制重置常见于端口未开放或防火墙拦截。tcp.analysis.ack_rtt是 Wireshark 计算的往返时间可以用来分析网络延迟。报告里没有深入讲 RTT但这是判断网络质量的重要指标。参数方面tcp.analysis开头的过滤器都是 Wireshark 的分析字段不是协议本身的字段。如果抓包时没有启用 TCP 分析这些过滤器可能不生效。可以在 Preferences → Protocols → TCP 里确认「Calculate conversation timestamps」和「Analyze TCP sequence numbers」已勾选。提示如果四次挥手只抓到三个包不要觉得抓错了。先看第二个包的 Flags 是不是同时有 ACK 和 FIN如果是就是正常的合并情况。报告里给的截图是标准四个包但实际环境有差异是正常的。4.3 HTTP 请求响应与 DNS 解析的联动分析HTTP 实验通常和 DNS 实验一起做因为浏览器访问一个域名时先发 DNS 查询拿到 IP再发 TCP 连接最后发 HTTP 请求。报告里的做法是在客户端清空 DNS 缓存然后访问一个指定域名抓取整个流程。# 清空 DNS 缓存Linux sudo systemctl restart systemd-resolved # 或者 sudo /etc/init.d/nscd restart # 用 curl 发起 HTTP 请求同时抓包 curl -v http://www.example.com # Wireshark 显示过滤器DNS 查询 dns.qry.name www.example.com # 显示过滤器HTTP GET 请求 http.request.method GET逻辑说明systemctl restart systemd-resolved重启 DNS 解析服务清空缓存。curl -v会输出详细的请求过程包括 DNS 解析、TCP 连接、HTTP 请求头和响应头。Wireshark 里先看到 DNS 查询包UDP 53 端口然后是 TCP 三次握手最后是 HTTP GET 和响应。参数方面dns.qry.name筛选特定域名的 DNS 查询http.request.method筛选 HTTP 方法。报告里有一个值得注意的细节HTTP 响应码在 Wireshark 里的显示位置。http.response.code 200可以筛选成功响应http.response.code 400筛选错误响应。如果抓到的 HTTP 包显示Continuation或TCP segment of a reassembled PDU说明响应数据被分到多个 TCP 段里需要看重组后的完整消息。5. 实验报告撰写避坑截图、分析和格式的常见翻车点5.1 截图不清晰或关键字段被遮挡现象报告里的截图模糊或者关键字段被 Wireshark 的列宽遮住导致无法辨认。原因直接截全屏分辨率不够或者没有调整列宽。解决抓包后先调整 Wireshark 的列宽把关键字段如 Seq、Ack、Flags完整显示出来再用截图工具截取中间面板的协议树部分。报告里建议用 PNG 格式不要用 JPG避免压缩失真。5.2 过滤器写错导致抓不到包现象按照步骤操作了但 Wireshark 里一个包都没有。原因抓包过滤器和显示过滤器混用或者 IP 地址、端口号写错。解决先不加任何过滤器抓一次确认有流量再逐步加过滤条件。报告里强调了一个检查顺序先确认接口选对再确认过滤器语法最后确认目标机器确实在通信。5.3 分析部分只贴截图不写解读现象报告里全是截图文字分析只有一两句话。原因不知道分析要写到什么程度。解决每个截图至少配三句话——这个包在协议流程中的位置、关键字段的值和含义、这个值说明了什么问题。报告里的范例是先描述现象再解释原理最后关联到课本知识点。5.4 实验环境不一致导致结果对不上现象照着报告做但抓到的包和报告里的不一样。原因操作系统版本、Wireshark 版本、网络拓扑不同。解决报告里的结果是特定环境下的重点是理解分析方法和字段含义不是追求包一模一样。如果 TTL 值不同Linux 是 64Windows 是 128这是正常的。如果 HTTP 版本不同报告里是 HTTP/1.1现在很多网站是 HTTP/2抓包结构会变。5.5 报告格式不符合模板要求现象内容写完了但格式被退回。原因字体、行距、页边距、图表编号不符合模板。解决先看模板的样式设置用 Word 的样式功能统一调整不要手动改。报告里的图表都有编号和标题截图下面要写「图 XXXX」表格上面要写「表 XXXX」。这个细节看起来小但助教批改时第一眼就看这个。6. 从这份报告到自己的实验能力三个可复用的验证技巧这份报告最大的价值不是让你抄一遍而是给你一套可复用的验证方法。我拆完之后总结了三个平时做网络排查也会用到的技巧。第一个是「分层验证」。报告里每个实验都遵循同一个逻辑先验证物理层和链路层ping 通不通再验证网络层路由对不对最后验证传输层和应用层端口和协议。这个顺序能帮你快速定位问题在哪一层。比如 ping 不通就不用看 TCP 了ping 通但 telnet 不通问题在防火墙或服务没启动。第二个是「过滤器组合」。报告里用到的过滤器都是基础语法但组合起来能解决大部分筛选需求。我一般会先写一个宽泛的条件比如ip.addr 目标IP然后逐步加 tcp.port 80、 tcp.flags.syn 1每加一个条件就看一下结果数量避免条件太严导致空结果。第三个是「对照课本」。报告里的分析部分不是凭空写的每个字段的解释都能在课本里找到对应章节。做实验的时候手边放一本《计算机网络自顶向下方法》或者谢希仁的《计算机网络》遇到不认识的字段先翻书比直接搜网上答案靠谱。# 一个我常用的抓包后快速分析命令组合 # 统计 TCP 重传次数 tshark -r capture.pcap -Y tcp.analysis.retransmission -T fields -e frame.number # 统计 HTTP 响应码分布 tshark -r capture.pcap -Y http.response -T fields -e http.response.code | sort | uniq -c # 提取所有 DNS 查询的域名 tshark -r capture.pcap -Y dns.flags.response 0 -T fields -e dns.qry.name | sort -u逻辑说明tshark是 Wireshark 的命令行版本适合批量处理 pcap 文件。-r读取文件-Y应用显示过滤器-T fields -e提取指定字段。sort | uniq -c统计频次。这三个命令分别对应重传分析、HTTP 状态码分析和 DNS 查询分析都是实验报告里常见的分析维度。参数方面-Y后面跟的过滤器和 Wireshark 图形界面里的一样。如果tshark提示找不到命令需要单独安装Linux 下是sudo apt install tsharkWindows 下装 Wireshark 时勾选 TShark 组件。从那以后我每次做网络实验都强制自己先跑一遍分层验证再开始抓包。这个习惯帮我省了很多来回折腾的时间。希望这份拆解能帮你把实验报告顺利写完也能把抓包分析这个技能真正留下来。本文还有配套的精品资源点击获取