
简介这份资源是广东工业大学2015年计算机网络课程的实验报告PDF面向计算机相关专业学生及网络初学者可用于参考实验流程、撰写课程报告或复习交换机与路由配置。报告围绕GNS3网络仿真平台展开涵盖拓扑搭建、设备基础操作、交换机配置、VLAN划分及VLAN间通信等核心实验内容并记录了同VLAN与跨VLAN连通性测试、Wireshark抓包分析Trunk标签等完整过程。资源包内仅含1个PDF文件大小约1.17MB篇幅紧凑便于直接查阅与打印。目前已有71人学习浏览说明其在校内实验场景中具有一定参考价值。读者可从中获取实验目的、操作步骤、测试截图与结果分析理解VLAN隔离与路由器转发机制并借鉴抓包数据解读方法适合作为网络实验预习、报告模板或排错思路的辅助材料。1. 广工2015年计算机网络实验报告一份能直接抄作业的硬核存档如果你正在上计算机网络这门课或者被 Wireshark 抓包、Socket 编程、路由配置这几座大山压得喘不过气那这份《广工2015年计算机网络实验报告》大概率能救你一命。它不是那种只有结论没有过程的 PPT 式文档而是一份完整记录了实验目的、拓扑搭建、命令输入、抓包截图和结果分析的实操存档。广工当年的实验体系偏向自顶向下从应用层一路干到链路层这份报告把每个实验的“输入”和“输出”都钉死了。适合谁适合需要快速对齐实验标准、想看看别人怎么处理“抓不到包”“连不上服务器”这类玄学问题的同学也适合想拿一份真实实验记录做参考的同行。下面我按“它到底记了什么 → 怎么照着复现 → 哪些地方容易翻车”的顺序把这份 PDF 拆开讲透。2. 实验报告里到底存了什么从应用层到链路层的完整证据链2.1 实验项目的分层覆盖与工具选型这份报告覆盖了计算机网络实验的经典五层结构但重点压在应用层和传输层。应用层涉及 HTTP、DNS、FTP 的报文抓取与分析传输层聚焦 TCP 三次握手、四次挥手以及滑动窗口的观察网络层有 IP 分片和 ICMP 重定向的验证链路层则用 Cisco Packet Tracer 做了 VLAN 划分和静态路由配置。工具选型上抓包统一用 Wireshark拓扑仿真用 Packet TracerSocket 编程用 Java 或 Python 实现简单的 C/S 通信。这种组合在 2015 年前后是广工的标准配置放到今天依然不过时因为协议本身没变变的只是工具版本。报告里每个实验都遵循“实验目的 → 实验环境 → 实验步骤 → 实验结果 → 结果分析”五段式。最值钱的部分是“实验结果”里的截图和“结果分析”里的文字。截图不是随便截的而是精确到某个过滤条件、某个报文序号、某个字段值。比如 HTTP 实验里它会让你过滤http.request.method GET然后展开 Hypertext Transfer Protocol 层看 Host、User-Agent、Cookie 这些字段。这种颗粒度意味着你照着做一定能抓到同样的包除非你的网络环境有代理或缓存干扰。2.2 关键实验的数据记录格式报告里对数据的记录方式很讲究不是简单贴一张图就完事。以 TCP 三次握手为例它要求你记录每次握手的 Seq 和 Ack 编号并画出时序图。下面这张表是我从报告里提炼出来的记录模板你可以直接套用报文序号源 IP:端口目的 IP:端口标志位SeqAck说明1192.168.1.100:5234193.184.216.34:80SYN00客户端发起连接293.184.216.34:80192.168.1.100:52341SYN, ACK01服务端同意连接3192.168.1.100:5234193.184.216.34:80ACK11客户端确认这种表格的好处是你填完一遍TCP 连接建立的过程就刻在脑子里了。报告里还特别标注了相对 Seq 和绝对 Seq 的区别Wireshark 默认显示相对值但分析时要用绝对值否则会把自己绕晕。这个细节很多网上的教程都不提但这份报告里用批注写清楚了。2.3 拓扑文件与配置命令的留存Packet Tracer 实验部分报告里没有直接附 .pkt 文件但把每台设备的配置命令完整贴出来了。比如 VLAN 划分实验它记录了交换机上vlan 10、vlan 20的创建以及interface fa0/1下switchport access vlan 10的绑定。路由配置则记录了ip route 0.0.0.0 0.0.0.0 192.168.1.1这样的默认路由写法。这些命令虽然基础但胜在完整你复制到自己的 Packet Tracer 里就能跑通。报告里还留了拓扑的截图标注了每台设备的接口编号和 IP 地址照着连线不会错。3. 照着复现的实操路径Wireshark 过滤、Socket 编译与拓扑搭建3.1 Wireshark 抓包与过滤器的精确写法复现的第一步是抓包。报告里强调了一个血泪经验抓包前先清空浏览器缓存或者用无痕模式否则你抓到的 HTTP 请求可能全是 304看不到完整的响应体。具体操作是打开 Wireshark选择正在使用的网卡然后在过滤器栏输入tcp port 80或http。但报告里更推荐用http.request.method GET这种显示过滤器因为它能直接定位到请求行。下面这段 bash 命令是我常用的辅助脚本用来在 Linux 下快速启动抓包并保存到文件方便后续用 tshark 分析# 抓取 80 端口的流量保存为 pcap 文件抓 100 个包后自动停止 sudo tshark -i eth0 -f tcp port 80 -c 100 -w http_capture.pcap # 用 tshark 读取 pcap 并只显示 HTTP 请求的 URL 和 Host tshark -r http_capture.pcap -Y http.request -T fields -e http.host -e http.request.uri逻辑说明-i eth0指定网卡-f是抓包过滤器BPF 语法-c 100表示抓满 100 个包就停-w写入文件。第二条命令用-Y做显示过滤-T fields输出指定字段。参数怎么改如果你要抓 HTTPS把端口换成 443但内容加密只能看 TLS 握手。报告里也提到了这点所以 HTTPS 实验只分析证书和握手过程不解析应用数据。3.2 Socket 编程实验的代码骨架与编译命令报告里的 Socket 实验要求实现一个简单的 TCP 回声服务器和客户端。服务端用 Java 写的核心是ServerSocket和Socket的 accept 循环。我把它转成 Python 版本更简洁也方便你直接跑# tcp_echo_server.py import socket HOST 127.0.0.1 # 监听本地回环地址 PORT 65432 # 端口号需大于 1024 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((HOST, PORT)) s.listen() print(f服务器启动监听 {HOST}:{PORT}) conn, addr s.accept() with conn: print(f连接来自 {addr}) while True: data conn.recv(1024) # 每次最多收 1024 字节 if not data: break conn.sendall(data) # 原样发回 print(f收到并回显: {data.decode()})逻辑说明socket.AF_INET表示 IPv4SOCK_STREAM表示 TCP。bind绑定地址和端口listen开始监听。accept阻塞等待客户端连接返回一个新的 conn 套接字和客户端地址。recv(1024)是缓冲区大小sendall确保数据全部发出。参数怎么改把 HOST 改成0.0.0.0可以让同一局域网的其他机器连接但要注意防火墙。报告里还提醒如果客户端用localhost连不上试试127.0.0.1因为有些系统把 localhost 解析成 IPv6 的::1而服务端只绑了 IPv4。客户端代码更简单# tcp_echo_client.py import socket HOST 127.0.0.1 PORT 65432 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((HOST, PORT)) s.sendall(bHello, Network Lab) data s.recv(1024) print(f收到回显: {data.decode()})先运行服务端再运行客户端你会在服务端看到连接日志客户端收到同样的字符串。报告里要求截图这两个终端窗口并标注出sendall和recv的对应关系。3.3 Packet Tracer 拓扑搭建的步骤与验证Packet Tracer 部分报告里的步骤是拖两台 2960 交换机、四台 PC按拓扑图连线。然后进入交换机 CLI创建 VLAN 10 和 20把端口划分进去。PC 的 IP 地址手动配置比如 PC0 配192.168.10.2/24PC1 配192.168.20.2/24。验证方法是同一 VLAN 内能 ping 通不同 VLAN 之间 ping 不通。报告里特别提到如果 ping 不通先检查show vlan brief看端口有没有划对再看 PC 的网关是否配了但没生效。配置命令如下# 在交换机上执行 enable configure terminal vlan 10 vlan 20 exit interface fa0/1 switchport mode access switchport access vlan 10 exit interface fa0/2 switchport mode access switchport access vlan 20 exit end show vlan brief逻辑说明switchport mode access把端口设为接入模式switchport access vlan 10把端口划入 VLAN 10。show vlan brief用来验证。参数怎么改如果你的交换机端口是 GigabitEthernet把fa0/1换成gi0/1。报告里还提醒Packet Tracer 的交换机默认所有端口都在 VLAN 1不划走的话VLAN 10 和 20 的流量会混在一起。4. 避坑与排查抓不到包、连不上服务、拓扑不通的常见原因4.1 现象Wireshark 抓不到 HTTP 请求只有 TCP 握手原因浏览器用了 HTTPS或者走了代理或者缓存命中导致没有发起新的 HTTP 请求。报告里还提到一种情况网卡选错了比如选了虚拟机的网卡而不是物理网卡。解决先确认地址栏是http://开头然后清缓存或用无痕模式。检查 Wireshark 的网卡列表看哪个网卡有流量波动。如果是代理关掉代理或换到直接连接。报告里建议用curl命令代替浏览器因为 curl 不会缓存也不会自动跳转 HTTPScurl -v http://example.com-v会打印详细的请求和响应头配合 Wireshark 抓包一定能看到 GET 请求。4.2 现象Socket 客户端报 ConnectionRefusedError原因服务端没启动或者端口被占用或者防火墙拦截。报告里还遇到一种情况服务端绑定了127.0.0.1但客户端用局域网 IP 连接自然连不上。解决先确认服务端已经运行并打印了监听日志。用netstat -an | grep 65432检查端口是否在 LISTEN 状态。如果端口被占用换一个端口。防火墙方面Linux 下用sudo ufw allow 65432放行Windows 下在防火墙高级设置里添加入站规则。报告里强调如果服务端绑的是127.0.0.1客户端也必须用127.0.0.1不能混用。4.3 现象Packet Tracer 里 PC 能 ping 通网关但 ping 不通外网原因路由没配或者 NAT 没做或者 PC 的网关地址写错了。报告里指出Packet Tracer 的 PC 默认没有网关需要手动在 Desktop - IP Configuration 里填写。解决在路由器上配置默认路由ip route 0.0.0.0 0.0.0.0 下一跳如果用的是家用路由器模拟还要检查 NAT 的 inside 和 outside 接口有没有配对。PC 的网关必须和路由器接口 IP 在同一网段。报告里给了一个排查顺序先ipconfig看 PC 的 IP 和网关再show ip route看路由器有没有路由最后ping网关和下一跳。4.4 现象VLAN 间 ping 不通但同 VLAN 内正常原因没有配置三层交换或单臂路由。VLAN 在二层是隔离的不同 VLAN 之间通信必须经过三层设备。报告里用的是路由器加子接口的方式。解决在路由器上创建子接口封装 dot1Q并配置 IP 作为对应 VLAN 的网关interface gi0/0.10 encapsulation dot1Q 10 ip address 192.168.10.1 255.255.255.0 exit interface gi0/0.20 encapsulation dot1Q 20 ip address 192.168.20.1 255.255.255.0 exit然后交换机和路由器之间的链路要配成 trunk。报告里提醒子接口的编号不一定要和 VLAN ID 一样但封装时的 VLAN ID 必须匹配。如果 ping 不通检查show ip interface brief看子接口是否 up。4.5 现象实验报告里的截图和你的不一样原因操作系统、Wireshark 版本、网卡驱动不同导致界面和字段位置有差异。报告里用的是 Windows 7 Wireshark 1.12现在你可能用 Windows 11 Wireshark 4.x。解决关注协议字段的值而不是界面布局。比如 TCP 三次握手的 Seq 和 Ack 逻辑不变只是 Wireshark 的显示列可能默认隐藏了。右键列头 - Column Preferences把 Seq 和 Ack 加进去。报告里的分析结论依然有效因为协议标准没变。5. 进阶用法把实验报告变成可复用的抓包分析模板这份报告最大的价值不是让你抄一遍而是让你建立一套自己的抓包分析流程。我后来把报告里的实验步骤提炼成一个检查清单每次遇到网络问题就按这个清单走一遍。比如排查一个网站打不开我会先ping看 ICMP 通不通再tracert看路径然后 Wireshark 抓包看 TCP 握手有没有完成最后看 HTTP 响应码。这套流程和报告里的实验顺序几乎一致只是从被动实验变成了主动排查。另一个进阶用法是把报告里的 Socket 代码改成多线程服务器支持多个客户端同时连接。报告里只做了单客户端但实际场景中并发是常态。下面是一个简单的多线程版本import socket import threading def handle_client(conn, addr): print(f新连接: {addr}) with conn: while True: data conn.recv(1024) if not data: break conn.sendall(data) print(f连接关闭: {addr}) HOST 0.0.0.0 PORT 65432 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((HOST, PORT)) s.listen() print(f多线程服务器启动监听 {PORT}) while True: conn, addr s.accept() t threading.Thread(targethandle_client, args(conn, addr)) t.start()逻辑说明主线程只负责 accept每来一个客户端就开一个线程处理。handle_client函数里做回声逻辑。参数怎么改HOST改成0.0.0.0允许外部连接PORT按需调整。注意线程多了会消耗资源生产环境要用线程池或异步 IO。报告里没提这些但作为进阶你可以顺着这个方向把实验报告里的代码改造成能用的工具。验证方法开三个终端一个跑服务器两个跑客户端同时发消息看服务器是否都能回显。如果某个客户端卡住检查是不是recv阻塞了或者客户端发完没等回显就关闭了套接字。报告里有一处批注写着“客户端发送后要 sleep 一下再 recv”虽然不优雅但能避免时序问题。从那以后我每次做网络实验都强制自己先画时序图再动手抓包时先清缓存配路由时先看接口状态。这份 2015 年的报告虽然老但协议没变工具没变坑也没变。希望帮到你。本文还有配套的精品资源点击获取