ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

计算机网络实验报告汇总:Wireshark抓包与Socket编程实战指南

计算机网络实验报告汇总:Wireshark抓包与Socket编程实战指南 简介计算机网络课程实验报告汇总.doc 是一份面向计算机网络课程学生的实验报告合集内容覆盖数据链路层PPP协议、单台及跨交换机VLAN划分与互访、RIP/OSPF动态路由协议、NAT内部源地址转换、子网划分等实验适合用于课程设计、报告撰写或考前实验复盘。资源为单个doc文档压缩包大小约3.18MB正文按实验编号逐步展开每项实验均包含实验目的、设备与拓扑、配置步骤、结果验证以及问题解决与心得目录层级清晰。目前已有292人学习浏览。文档不仅给出详细命令与输出还总结了常见排错思路如VLAN划分后的连通性测试、跨交换机Trunk配置注意事项、动态路由邻居建立失败检查等便于规避同类问题整份报告既可直接作为实验报告模板也可在复习时对照梳理各协议工作原理与实验场景实用性强。1. 一份 .doc 实验报告汇总为什么有人愿意花整晚去补它期末前夜室友对着电脑上二十几个以“新建文档(5).doc”命名的文件发呆嘴里念叨着“Wireshark 的过滤表达式又忘了”。这就是“计算机网络课程实验报告汇总 .doc”这类文档存在的意义——它把一学期散落的抓包截图、Socket 代码、路由配置和验收结论收拢成一份能快速翻阅的资料。对一个要应付验收、备考或复试的人来说这份汇总的价值不在“交差”而在于它暴露了实验课真正的门槛不是工具不会用而是不知道每个实验要记录什么、参数怎么设、现象为什么长这样。这篇笔记就按我自己的实验习惯把这件事从头到尾拆开讲。2. 搭好实验环境再谈汇总Wireshark、Socket 与模拟器的选型理由2.1 实验工具链为什么是这三件套计算机网络实验绕不开三个场景——抓包看协议、写代码验证传输、搭拓扑跑路由。对应到工具上我一般固定用 Wireshark、Python socket 和 Cisco Packet Tracer。Wireshark 负责把比特流翻译成人话它的价值在过滤表达式和着色规则能把一个混杂了 ARP、TCP、HTTP 的 pcap 文件快速剥离出目标协议Python socket 则适合做最小验证不需要像 C 那样处理头文件和错误码十行代码就能看到三次握手和一个完整 HTTP 请求Packet Tracer 用于路由交换实验它虽然模拟不了真实设备的转发延迟但配置命令和真实 IOS 几乎一致。选型还要看教材。从热词里能看出大多数课程用的教材不外乎谢希仁《计算机网络》或库罗斯《自顶向下方法》。前者重原理推导后者以应用层为入口设计实验两者对实验报告的侧重点完全不同——谢希仁的教材配套实验爱考 CRC 校验和滑动窗口自顶向下则更早引入 HTTP 和 DNS 抓包。你手头的实验任务单如果来自后者那 Wireshark 的使用频次会远高于模拟器。2.2 .doc 格式的兼容性一个容易被忽略的坑标题里的“.doc”值得单独说一句。很多人的实验报告其实是用 WPS 或新版 Office 存的 .docx另存为 .doc 只是为了过学校的旧系统。这里有个真实存在的坑.doc 是老式 OLE 复合文档格式.docx 是 ZIP 压缩包格式两者结构完全不同新版 WPS 在“另存为”时会做一次格式转换转换过程中嵌入的图片可能被压成低分辨率抓包截图里的字号会糊到看不清。如果你拿到的汇总文件本身就是 .doc建议先在 WPS 里打开另存为 .docx 再用。否则后续做文字提取、合并章节、批量替换实验名时脚本处理 .doc 要比 .docx 麻烦得多——Python 的 python-docx 库只认 .docx处理 .doc 得先通过 LibreOffice 的命令行做一次转换。这个转换动作要放在写文档脚本的最前面等所有实验都写完了再转格式等于给自己留一颗后悔药。2.3 本地验收环境一个最小可复现的搭建步骤实验不能都在机房做机房电脑重启后配置全丢是常态。我一般在本地搭一套最小环境按下面的步骤走一遍大概十分钟能跑通。# 1. 安装抓包工具Debian/Ubuntu 系 sudo apt update sudo apt install wireshark tshark # 安装时选择允许非 root 用户抓包否则每次都要 sudo # 2. 确认 Python 环境与 socket 模块可用 python3 -c import socket; print(socket.__version__ if hasattr(socket, __version__) else socket ok) # 3. 安装 Cisco Packet Tracer需手动下载安装包这里给的是安装后校验命令 packettracer --version第 1 条命令同时装 Wireshark 和 tshark。如果你只装了图形界面版后面做批量分析时会发现命令行版才是自动化抓包的灵魂。tshark 可以用一条命令把 pcap 转成 CSV 或 JSON这在对比不同网络状态下的 TCP 重传率时非常省事。第 2 条命令是确认 Python 环境干净别小看这个检查实验室电脑上 Python 2 和 Python 3 混装的情况很常见直接跑脚本会报语法错让你误以为是代码问题实际上是解释器版本不对。第 3 条命令的 packettracer 在 Linux 上装完以后命令名可能不带版本号所以写成校验命令而不是启动命令。安装完成后用sudo tshark -i eth0 -f port 80 -a duration:30抓一条 30 秒的 HTTP 流量存成 pcap能抓到就说明环境通了一半。这个最小环境的好处是Wireshark 负责“看”Python 负责“造”Packet Tracer 负责“组网”三个工具覆盖了实验报告里最常见的三类素材来源。3. 把过程写成结果实验报告结构、评审视角与参数表3.1 报告结构设计按评审的视线顺序倒着写实验报告不是实验日志。评审老师看一份报告的时间大约三分钟他的视线顺序通常是结论对不对 → 截图清晰吗 → 关键参数有没有 → 有没有思考。所以报告结构要倒着设计把“实验结果分析”提到最前面然后是“关键配置参数”和“截图表”最后才是“实验步骤描述”。我见过太多人把报告写成流水账——先装软件再打开 Wireshark再输入网址每一步都截图最后贴一张“实验心得学到了很多”。这种报告的问题在于没有区分“操作过程”和“实验结论”。比如抓三次握手实验结论是“客户端端口 54321 向服务器 80 端口发起 SYN服务器响应 SYNACK序号分别为 1000 和 8000”这比记录“我点击了开始捕获按钮”有价值得多。结论前置还有个好处就是万一实验数据不好看你还有机会在“分析”里解释为什么会出现重传或乱序而不是让老师自己去截图里找线索。3.2 三张高频参数表抄作业也要抄对地方实验报告里有一类内容可以直接复用参数表。下面三张表是我在多个网络实验里反复用到的框架你可以按实验类型取用替换成自己的数据。Wireshark 常用过滤表达式按实验场景分组场景过滤表达式说明看三次握手tcp.flags.syn1 tcp.flags.ack0只显示 SYN 包排除 SYNACK看挥手过程tcp.flags.fin1FIN 包注意可能有四次定位 HTTP 请求http.request.methodGET只看 GET 请求行排错丢包tcp.analysis.retransmissionWireshark 标记的重传包排除自身噪声tcp.port ! 5353 udp.port ! 5353过滤 mDNS 广播流量TCP 状态迁移速查表用于分析抓包结果状态触发条件抓包特征LISTEN服务器启动监听无明显包需用 netstat 确认SYN_SENT客户端发起连接发出 SYN无响应ESTABLISHED收到 SYNACK双方可互发数据FIN_WAIT_1主动方发 FIN发出 FIN 后等待 ACKTIME_WAIT收到对端 FIN 并回复 ACK再等 2MSL约 4 分钟常见端口与协议对照写应用层实验报告时直接抄端口协议实验中的典型用途21FTP考察控制连接与数据连接分离53DNS抓 UDP 与 TCP 两种查询80HTTP基础抓包对象443HTTPSTLS 握手与证书验证这些表不是背的是拿来对照的。比如你抓 DNS 实验时发现只有 UDP 包没有 TCP 包对照端口表就该知道大部分 DNS 响应小于 512 字节走 UDP出现 TCP 响应通常意味着响应被截断——这是一个可以写进“思考”部分的亮点。3.3 文档组织模板把二十个实验压缩成一份可检索的素材汇总文档的结构决定了它能承载多少价值。我常用的组织方式是按“实验环境 → 学习目标 → 关键步骤 → 数据截图 → 结论分析 → 遇到的问题”六段式排布每个实验单独成节。节与节之间用分页符隔开避免不同实验的截图在打印时相互穿插。命名规范上文件名建议统一成“序号_实验名_核心结论.doc”的格式比如“04_DNS解析实验_响应截断触发TCP重试.doc”。这样做的原因很实际期末复习时你不可能把二十份文档全部打开看到一个能概括结论的文件名会让你节省大量时间。文档内页眉可以加课程名和学期页脚加页码方便打印后装订。全部用 .doc 格式还有一个好处就是学校教务系统、打印店的老旧电脑都能直接打开不用现场找兼容软件。4. 三个典型实验的完整落地抓包、Socket 编程与静态路由4.1 Wireshark 抓 HTTP 与 DNS命令行与图形界面的分工抓包实验最容易翻车的环节不是启动捕获而是过滤出目标流量。机房电脑上同时跑着几十台机器的 DHCP 和 ARP 广播如果不加过滤捕获面板里每秒几十条包截图里全是绿绿紫紫的短包线老师根本看不清你抓到了什么。我的做法是用 tshark 先做一次预捕获确认目标流量存在后再开图形界面精抓。下面这段命令适用于“访问一个网站抓取 DNS 解析和 HTTP 请求”的实验场景。# 启动 60 秒捕获只保留 DNS53和 HTTP80端口流量存为 pcap sudo tshark -i eth0 -f port 53 or port 80 -a duration:60 -w http_dns.pcap # 捕获结束后用 tshark 快速统计流量中的协议分布 tshark -r http_dns.pcap -q -z io,phs # 导出 HTTP 请求的摘要信息时间、源、目的、请求行 tshark -r http_dns.pcap -Y http.request -T fields -e frame.time_relative -e ip.src -e ip.dst -e http.request.method -e http.request.uri第一条命令的-f是捕获过滤器在内核层面直接丢弃非目标流量比显示过滤器更省资源。-a duration:60控制捕获时长防止忘了停止捕获导致 pcap 文件无限膨胀。第二条命令里的-q -z io,phs是终极统计神器它输出一个协议层级统计表能看到“HTTP 包占总包数的百分比”“TCP 重传占比”这个数据可以直接作为实验报告里的“流量组成分析”小节。第三条命令提取的是每个 HTTP 请求的时间、来源、方法和 URI转成表格贴进报告比截一整张抓包窗口清晰得多。图形界面 Wireshark 留给截图用。先应用显示过滤http.request || dns.query只保留请求包这样截图里每个请求的源目 IP 和请求域名一目了然。注意截图的时机要在 TCP 三次握手完成、请求发出后立刻截包含 SYN 和 HTTP 请求在同一屏的那种图最有说服力。4.2 Python Socket 编程写一个能看到握手过程的 TCP 回显程序Socket 编程实验不能只编一个能跑的程序要能在报告里展现“我看到了什么”。最实用的是一个 TCP 回显服务器加客户端它小到能讲清每行代码大到能配合 Wireshark 观察三次握手和四次挥手全流程。下面是服务端代码我加了详细注释这份代码直接抄进报告问题不大。# tcp_echo_server.py import socket def main(): # AF_INET 表示使用 IPv4SOCK_STREAM 表示使用 TCP server_sock socket.socket(socket.AF_INET, socket.SOCK_STREAM) # SO_REUSEADDR 允许端口复用解决 TIME_WAIT 导致的 Address already in use server_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 绑定 127.0.0.1 本机回环地址端口选 8899 避免与常用服务冲突 server_sock.bind((127.0.0.1, 8899)) # 监听队列长度设为 5超过 5 个未 accept 连接时内核拒绝新连接 server_sock.listen(5) print(echo server listening on 127.0.0.1:8899) while True: # accept 返回新套接字和客户端地址新套接字专门服务于这个客户端 client_sock, client_addr server_sock.accept() print(client connected from, client_addr) # 循环 receive 直到客户端关闭写端recv 返回空字节串 while True: data client_sock.recv(1024) if not data: break # 回显原样把收到的字节送回客户端 client_sock.sendall(data) client_sock.close() print(client disconnected) if __name__ __main__: main()代码注释里已经把每个 socket 调用的语义说明白了。这里强调几个报告里值得写的点SO_REUSEADDR解决的是什么问题——服务端主动关闭后进入 TIME_WAIT 状态端口被占用约 4 分钟如果不设这个选项程序立刻重启会报错这是实验中最容易踩的坑。recv(1024)的意思是内核缓冲区最多拷贝 1024 字节到用户空间TCP 是流式协议没有所谓“消息边界”一次 send 的数据可能被拆成两包也可能两包合并成一包这个现象配合 Wireshark 看特别直观。客户端代码更短但有一个关键参数值得做文章。# tcp_echo_client.py import socket client_sock socket.socket(socket.AF_INET, socket.SOCK_STREAM) # connect 触发三次握手抓包时观察 SYN - SYNACK - ACK 三条包 client_sock.connect((127.0.0.1, 8899)) client_sock.sendall(bhello, network lab) # recv 会阻塞直到读到数据这里只收一次恰好对应服务端回显的数据 data client_sock.recv(1024) print(received:, data.decode()) client_sock.close()抓包实验的操作顺序是先启动 Wireshark 监听 lo回环接口然后运行服务端再运行客户端停止捕获后用tcp.flags.syn1过滤能看到 SYN 和 SYNACK客户端 close 时再过滤tcp.flags.fin1看到挥手。这些截图配上上面 4.1 小节的 tshark 命令就能轻松生成。回环接口 lo 上抓包有一个常见坑后面避坑章会单独说。4.3 Cisco Packet Tracer 静态路由配置看懂 route 命令的度量值路由实验的差异比较大但静态路由配置几乎是必修也是 Packet Tracer 里最值得截图的部分。这组配置在 2610 系列路由器上验证过命令细节和真实 IOS 一致。下面是一个三路由器拓扑中 R2 上配置静态路由的命令段。! 进入全局配置模式 enable configure terminal ! 告诉 R2去往 192.168.10.0/24 网络下一跳是 R1 的接口地址 10.0.12.1 ip route 192.168.10.0 255.255.255.0 10.0.12.1 ! 告诉 R2去往 192.168.30.0/24 网络下一跳是 R3 的接口地址 10.0.23.3 ip route 192.168.30.0 255.255.255.0 10.0.23.3 ! 查看路由表验证配置 show ip routeip route命令后面跟三段参数目标网络地址、子网掩码、下一跳 IP。很多新手会把掩码写成/24形式但 Packet Tracer 的ip route命令只接受点分十进制掩码写/24会直接报语法错误。show ip route输出里带S标记的是静态路由带C的是直连网段。在报告里贴这个输出时要圈出每一条路由的管理距离值——静态路由默认管理距离是 1而直连是 0这个数字决定了路由优先级是可以写进“思考”部分的考点。拓扑不通的排查顺序也有固定套路先ping直连地址通了再看路由表路由表里缺哪条就补哪条最后从源端逐跳tracert定位断点。Packet Tracer 里可以用右下角的模拟模式Shift点击数据包查看每条 ICMP 报文的路径这个截图是排除“为什么路由表是对的但 ping 不通”的钥匙。5. 实验报告里的六类高频坑现象、原因与解法5.1 抓回环流量失败为什么 Wireshark 里空空如也现象启动了 Wireshark选择 “Loopback: lo”跑 Python socket 程序结果捕获面板一个包都没有。 原因Linux 上抓回环流量需要以 root 权限运行 Wireshark或者把用户加入 wireshark 组。没有权限时libpcap 无法打开 lo 接口。 解决启动命令改成sudo wireshark或者用sudo usermod -aG wireshark $USER把自己加进组再注销重新登录。用 tshark 也一样必须先sudo。5.2 SYN 包抓不到过滤器写反了条件现象明明抓到了三次握手但应用tcp.flags.syn1后只剩一条 SYN没有 SYNACK。 原因SYNACK 包的 SYN 位也是 1但它同时还带着 ACK 位。表达式tcp.flags.syn1会同时选出 SYN 和 SYNACK如果抓到的包少很可能是过滤方向写成了tcp.flags.syn1 tcp.flags.ack1把纯 SYN 过滤掉了。 解决区分两类包的正确写法是tcp.flags.syn1 tcp.flags.ack0纯 SYN和tcp.flags.syn1 tcp.flags.ack1SYNACK。这个问题在实验报告里经常被忽略实际上是个加分点。5.3 TCP 实验的端口被占用address already in use现象上次实验的服务端程序 CtrlC 终止后第二次运行时立刻报OSError: [Errno 98] Address already in use。 原因服务端主动关闭后连接进入 TIME_WAIT 状态端口在 2MSL约 4 分钟内不可复用。 解决socket 创建后立刻调用setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)。注意这不能完全规避 TIME_WAIT但允许新套接字绑定到同一端口。还有一种做法是服务端先关闭避免被动方进入 TIME_WAIT但这在实际编程中几乎不可控所以 SO_REUSEADDR 才是正解。5.4 Packet Tracer 模拟器里 ping 不通路由表里有坑现象三台路由器之间直连地址都能 ping 通但 PC1 ping PC3 超时。 原因中间路由器缺少回程路由。只配置了去程方向的目的网络没有配返程方向。 解决逐台路由器检查show ip route确认每一台都有到达所有非直连网段的路由。常见做法是把所有路由器的路由表截图对齐一张表一张表地检查有没有漏掉某个网段。用show ip route输出中S开头的行数比对拓扑图上子网数能较快发现问题。5.5 抓包时浏览器弹出“检测到异常流量”安全提示现象在实验室电脑上开启 Wireshark 抓包后打开某个网站时页面没有正常加载反而弹出一条提示说系统检测到网络中存在异常流量并中止了访问。 原因部分安全网关或终端防护软件会把本机监听的抓包行为识别为扫描或者在 HTTP 请求路径上注入了重定向页。它们不区分抓包和攻击请求只看到短时间内大量同步请求。 解决换个网络环境实验比如用手机热点或虚拟机内的 NAT 网络把 DNS 解析和 HTTP 请求一起在虚拟机里跑。如果必须在原网络里抓就先设置显示过滤器只保留tcp.port 80 ip.dst 目标IP减少无关访问请求的触发面。这个问题不是故障而是安全机制在起作用报告里写一句“实验环境存在访问控制策略改用虚拟网卡完成捕获”即可不必深究。5.6 .doc 文件打开乱码或排版崩坏现象在机房电脑上打开 U 盘里的实验报告图片全部消失段落首行缩进错乱甚至出现方框乱码。 原因用 WPS 默认保存的 .doc 和用旧版 Microsoft Word 生成的 .doc 在页眉、项目符号和文本框的兼容性上存在差异U 盘拷贝时把文件放进了中文路径有时也会触发编码错乱。 解决报告最后定稿时用 WPS 打开然后“另存为”一次格式选择“Word 97-2003 文档(.doc)”这样能以老格式重新封装文档结构。另外所有截图不要用“复制粘贴”插入图片而是通过菜单里的“插入 图片 来自文件”这样图片是以嵌入方式存储不依赖原路径。最后一个稳妥做法是交电子版时同时保留一份 PDF格式崩了还能用 PDF 兜底。6. 一份报告吃到底把它变成期末复习与求职面试的素材库不要等课程结束就把这份 .doc 丢进回收站。花一到两小时把它整理成结构化素材它的价值能延续到期末考试和面试现场。我的习惯是把实验报告里的数据截图按协议分层归档——应用层HTTP、DNS、传输层TCP 三次握手、UDP 丢包实验、网络层IP 分片、ICMP 重定向。这样一个按 OSI 模型组织的文件夹就是最好的考前复习地图比教材目录更贴近实际报文。具体做法把二十几个 .doc 合并成一份总文档用 Word 的“导航窗格”按标题级别提纲挈领然后把每章的“遇到的问题”小节单独抽出来汇总成一份《常见故障排查清单》。这份清单在复试被问到“你做过哪些网络实验”时非常管用——你可以回答“做过 DNS 截断重试、TCP TIME_WAIT 分析”而不是干巴巴地背一遍三次握手。面试官追问细节时你随手画一张 TCP 状态迁移图顺便说出 SO_REUSEADDR 和 2MSL 的关系这比背诵教材目录显得扎实得多。另一个容易被忽略的操作是用实验报告反推考点。比如你实验里观察到 TCP 重传就可以围绕“超时重传时间 RTO 怎么算”“快速重传触发条件”“拥塞窗口何时减半”三个考点做一组问答卡片这在考研 408 复习中是非常精准的针对性训练。计算机网络自顶向下和王道等教材的习题本质上都在描述实验里能看到的现象只是换了一种文字表达。你可能在实验中已经见过这些现象但没把现象和术语对应起来整理报告时补上这一步复习效率会明显不同。我自己的教训是实验课每次验收都赶在截止前一刻才写报告导致很多值得深挖的现象被一笔带过。后来补实验报告时才发现当时抓包数据里那条 TCP 重传其实是缓存溢出触发这比任何教科书例子都令人印象深刻。从那以后我养成习惯每个实验做完趁现象还在、数据还热花二十分钟先把“结论分析”写完不追求完整排版只把现象和截图记下来。期末汇总时再补环境描述和参数说明两小时能整合完整份文档。这份 .doc 汇总它不只是实验报告是你和网络协议打交道的原始记录。把它整理得越结构化你收获的就越多。希望帮到你。本文还有配套的精品资源点击获取
返回列表