
简介这份PPT课件面向计算机相关专业学生及网络入门学习者系统梳理计算机网络技术基础的核心知识框架帮助读者建立从概念到应用的完整认知。课件围绕网络的定义、产生与发展、基本组成与逻辑结构、拓扑结构及分类展开并重点讲解资源共享、通信、高可靠性、均衡负荷、协调运算与分布式处理等主要功能同时结合单位信息管理与个人信息服务场景说明网络的实际应用。资源包共1个PPT文件大小约1.13MB内容以章节化幻灯片呈现涵盖局域网、广域网、客户/服务器结构等典型知识点适合课堂讲授、自学复习与考前梳理。目前已有388人学习可作为计算机网络基础课程的配套讲义或入门参考便于快速把握知识脉络与重点概念。1. 计算机网络基础 PPT 课件从备课翻车到一套能直接讲的骨架如果你正在搜「计算机网络基础ppt课件」大概率不是想收藏一堆模板而是被某个具体场景逼到了墙角明天要讲第一章或者下周要交一份培训材料又或者你手里有一份谢希仁版教材的目录却不知道怎么把它变成一页页能讲、能看、能让学生跟得上的幻灯片。我做过几次企业内训和高校助教最惨的一次是直接把教材目录复制成 PPT 大纲结果讲到「物理层」时台下已经睡倒一片——那次翻车让我明白课件不是教材的搬运而是把「分层」这个抽象概念翻译成听众能摸到的东西。这份笔记要解决的就是这件事给你一套可复用的计算机网络基础 PPT 课件骨架从章节划分、每页信息密度、图示怎么画到动画和代码演示怎么嵌。适合三类人要上第一门网络课的新老师、要给非科班同事做网络扫盲的工程师、以及准备期末复习想自己整理一份课件的学生。核心思路只有一条——按「分层模型」组织内容每一层都落到一个能演示的协议或命令上而不是停在概念定义。2. 课件骨架怎么搭从分层模型到每页信息密度2.1 为什么按五层模型切章节最省力计算机网络基础的内容量很大从谢希仁到自顶向下教材动辄四五百页。如果按教材章节平铺PPT 会变成流水账。我一般会先砍成五层物理层、数据链路层、网络层、传输层、应用层。这个切法的好处是每一层都有独立的「问题域」——物理层解决比特怎么传链路层解决相邻节点怎么可靠传帧网络层解决跨网络怎么找路传输层解决端到端怎么可靠应用层解决具体业务怎么用。听众只要记住这五个问题整门课的骨架就立住了。具体到 PPT 结构我建议每层固定用 6 到 8 页一页「这一层要解决什么问题」一页核心概念图两到三页关键协议拆解一页抓包或命令演示最后一页小结加一道思考题。这样五层下来大约 35 到 40 页加上开头的课程导论和结尾的综合实验控制在 50 页以内。信息密度上每页正文不超过 6 行、每行不超过 20 字剩下的空间全给图和动画。这是血泪经验一页超过 8 行字后排就只看手机了。2.2 用 Python 生成课件大纲和配图占位手工搭 50 页 PPT 的骨架很费时间我习惯先用脚本把大纲和每页的配图占位生成出来再往里面填内容。下面这段代码用 python-pptx 生成一个五层结构的课件骨架每页带标题和配图占位框。from pptx import Presentation from pptx.util import Inches, Pt from pptx.enum.text import PP_ALIGN # 五层模型每层对应的核心问题和关键协议 layers [ (课程导论, 这门课讲什么、怎么学, []), (物理层, 比特如何在介质上传输, [双绞线, 光纤, 编码与调制]), (数据链路层, 相邻节点如何可靠传帧, [以太网, MAC地址, CSMA/CD]), (网络层, 跨网络如何找路, [IP协议, 子网掩码, 路由算法]), (传输层, 端到端如何可靠传输, [TCP三次握手, UDP, 流量控制]), (应用层, 具体业务如何使用网络, [HTTP, DNS, DHCP]), (综合实验, 用Wireshark抓一次完整通信, [抓包, 分析, 复盘]), ] prs Presentation() prs.slide_width Inches(13.333) # 16:9 宽屏 prs.slide_height Inches(7.5) for layer_name, core_question, protocols in layers: # 每层第一页问题页 slide prs.slides.add_slide(prs.slide_layouts[6]) # 空白版式 title_box slide.shapes.add_textbox(Inches(0.8), Inches(0.5), Inches(11), Inches(1)) title_box.text_frame.text f{layer_name}{core_question} title_box.text_frame.paragraphs[0].font.size Pt(32) title_box.text_frame.paragraphs[0].font.bold True # 配图占位框后续替换成 draw.io 导出的图 placeholder slide.shapes.add_textbox(Inches(1.5), Inches(2), Inches(10), Inches(4)) placeholder.text_frame.text [配图占位核心概念图] placeholder.text_frame.paragraphs[0].alignment PP_ALIGN.CENTER # 每层第二页协议拆解页 if protocols: slide2 prs.slides.add_slide(prs.slide_layouts[6]) title2 slide2.shapes.add_textbox(Inches(0.8), Inches(0.5), Inches(11), Inches(1)) title2.text_frame.text f{layer_name} 关键协议 title2.text_frame.paragraphs[0].font.size Pt(28) body slide2.shapes.add_textbox(Inches(1), Inches(1.8), Inches(11), Inches(5)) tf body.text_frame for i, p in enumerate(protocols): if i 0: tf.text f• {p} else: tf.add_paragraph().text f• {p} prs.save(network_basics_skeleton.pptx) print(课件骨架已生成共, len(prs.slides.__iter__.__self__._sldIdLst), 页)这段代码的逻辑很直接先定义五层加导论和实验的列表每层生成两页——一页问题页带配图占位一页协议列表页。参数上slide_width设成 13.333 英寸是 16:9 宽屏的标准值现在教室投影基本都是这个比例用 4:3 会两边留黑边。slide_layouts[6]是空白版式避免默认版式自带的占位符干扰排版。配图占位框的位置和大小可以根据你实际画的图调整我一般留 10 英寸宽、4 英寸高够放一张完整的协议交互图。生成之后你得到的是一个只有骨架的 pptx接下来要做的就是把每个占位框换成真正的图。图怎么画下一节说。2.3 每层配图的画法和工具选择课件里最值钱的部分是图不是字。五层模型每层至少需要一张核心图物理层画编码波形和介质截面链路层画帧结构和 CSMA/CD 流程图网络层画 IP 包头和路由表传输层画三次握手时序图应用层画 HTTP 请求响应过程。工具上我试过不少最后固定在 draw.io 画结构图、Wireshark 截图做真实抓包、Python 的 matplotlib 画波形和时序。以 TCP 三次握手为例用 matplotlib 画一张干净的时序图比在 PPT 里手动画箭头快得多而且改起来方便。import matplotlib.pyplot as plt import matplotlib.patches as patches fig, ax plt.subplots(figsize(8, 5)) ax.set_xlim(0, 10) ax.set_ylim(0, 6) ax.axis(off) # 画两个端点 client patches.Rectangle((1, 4.5), 2, 0.8, fillTrue, facecolor#4A90D9) server patches.Rectangle((7, 4.5), 2, 0.8, fillTrue, facecolor#D94A4A) ax.add_patch(client) ax.add_patch(server) ax.text(2, 4.9, 客户端, hacenter, vacenter, colorwhite, fontsize12) ax.text(8, 4.9, 服务端, hacenter, vacenter, colorwhite, fontsize12) # 画三条握手线 ax.annotate(, xy(7, 3.8), xytext(3, 3.8), arrowpropsdict(arrowstyle-, colorblack, lw1.5)) ax.text(5, 3.9, SYN1, seqx, hacenter, fontsize10) ax.annotate(, xy(3, 2.8), xytext(7, 2.8), arrowpropsdict(arrowstyle-, colorblack, lw1.5)) ax.text(5, 2.9, SYN1, ACK1, seqy, ackx1, hacenter, fontsize10) ax.annotate(, xy(7, 1.8), xytext(3, 1.8), arrowpropsdict(arrowstyle-, colorblack, lw1.5)) ax.text(5, 1.9, ACK1, seqx1, acky1, hacenter, fontsize10) plt.tight_layout() plt.savefig(tcp_handshake.png, dpi200, bbox_inchestight) print(时序图已保存)这段代码用 matplotlib 的 annotate 画箭头每条箭头标注对应的标志位和序号。dpi200保证投影时不糊bbox_inchestight去掉多余白边。画完之后直接插进 PPT 对应页的占位框。参数上箭头的起点终点坐标按你的画布比例调我习惯客户端在左、服务端在右三条线从上到下依次是 SYN、SYNACK、ACK这样和学生看教材时的顺序一致。提示图里的文字用中文时matplotlib 需要提前设置字体否则会显示成方框。在代码开头加plt.rcParams[font.sans-serif] [SimHei]和plt.rcParams[axes.unicode_minus] False即可。3. 把抽象协议讲成能演示的操作抓包、命令与动画3.1 用 Wireshark 抓一次 HTTP 请求让应用层落地应用层最容易讲成背书因为 HTTP、DNS 这些协议学生天天用但看不见。我的做法是现场抓一次包从输入网址到页面返回把整个过程投在屏幕上。具体步骤打开 Wireshark选当前上网的网卡过滤条件填http然后在浏览器访问一个不加密的网站抓到的第一个 GET 请求就是活教材。抓完之后在 PPT 里放三张截图第一张是 DNS 查询第二张是 TCP 三次握手第三张是 HTTP GET 和 200 OK。每张截图旁边标注对应的层——DNS 属于应用层三次握手属于传输层GET 请求又回到应用层。这样学生能直观看到「一次网页访问跨了多层」比画十张分层图都管用。过滤条件的写法有讲究。http会抓到所有 HTTP 流量如果太杂可以用http.request.method GET只看 GET 请求或者ip.addr 目标IP锁定某台服务器。抓包时注意别在公共网络抓敏感流量课堂上用自己搭的测试环境最稳妥。3.2 用 ping 和 traceroute 演示网络层与传输层网络层和传输层各有一条命令能撑起一整节课。网络层用tracerouteWindows 上是tracert传输层用ping配合telnet测端口。traceroute 的原理是逐跳发 TTL 递增的包每经过一个路由器 TTL 减一减到零就返回超时消息这样就能画出路径。在 PPT 里放一张 traceroute 的输出截图每一跳标注对应的路由器 IP 和延迟然后问学生为什么第一跳延迟最低、后面越来越高答案就是路径越长、经过的设备越多。ping 用来演示 ICMP 和往返时延但更有意思的是用telnet 目标IP 端口测某个端口通不通。比如telnet www.example.com 80如果连上就说明 80 端口开放TCP 三次握手成功。这个操作能把传输层的「面向连接」讲活——连不上就是握手失败连上了就是握手成功。注意现在很多系统默认没装 telnet可以用nc -zv 目标IP 端口替代效果一样。3.3 用动画演示 CSMA/CD 和滑动窗口数据链路层的 CSMA/CD 和传输层的滑动窗口光靠静态图很难讲清「随时间变化」的过程。我一般用 PPT 自带的动画做简化演示CSMA/CD 画三台主机接在同一根总线上用「出现动画」模拟主机依次监听、发送、碰撞、退避重发滑动窗口画一个发送方窗口和一个接收方窗口用「平移」动画展示窗口右移。如果嫌 PPT 动画太麻烦可以用 Python 的 matplotlib 的 animation 模块生成 GIF直接插进 PPT。下面这段代码生成一个简化的滑动窗口动画展示发送方窗口从 1 到 4 逐步右移。import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy as np fig, ax plt.subplots(figsize(8, 2)) ax.set_xlim(0, 10) ax.set_ylim(0, 2) ax.axis(off) # 画 8 个格子的序列号 for i in range(8): rect plt.Rectangle((i 1, 0.5), 0.9, 0.9, fillFalse, edgecolorblack) ax.add_patch(rect) ax.text(i 1.45, 0.95, str(i), hacenter, vacenter, fontsize10) # 窗口矩形初始覆盖 0-3 window plt.Rectangle((1, 0.4), 3.6, 1.1, fillTrue, facecolor#4A90D9, alpha0.3) ax.add_patch(window) def update(frame): # 窗口每次右移一个格子共移动 4 次 window.set_x(1 frame * 0.9) return window, ani animation.FuncAnimation(fig, update, frames5, interval800, blitTrue) ani.save(sliding_window.gif, writerpillow, fps1) print(滑动窗口动画已保存)这段代码画了 8 个序列号格子窗口初始覆盖 0 到 3然后每次右移一格模拟收到 ACK 后窗口前移。frames5表示移动 5 步interval800是每步间隔 800 毫秒fps1控制 GIF 播放速度。参数可以按讲课节奏调讲得快就调小 interval讲得慢就调大。生成的 GIF 插进 PPT 后自动循环播放比手动点动画省事。注意matplotlib 的 animation 保存 GIF 需要 pillow 库如果报错先pip install pillow。另外 GIF 文件别太大超过 5MB 插进 PPT 会卡可以降低 dpi 或减少帧数。4. 课件制作里的避坑清单从字体到动画的五个翻车点4.1 字体在教室电脑上变成方框现象在自己电脑上做好的 PPT拷到教室电脑一放所有中文变成方框或乱码。原因教室电脑没装你用的字体或者你用了特殊字体但没嵌入。解决正文统一用「微软雅黑」或「思源黑体」这类常见字体标题可以用「阿里巴巴普惠体」但一定要在保存时勾选「将字体嵌入文件」。如果还不行把关键文字转成图片虽然不能编辑但至少不会乱。4.2 动画太多导致翻页卡顿现象加了大量出现、消失、路径动画后PPT 翻页明显卡顿甚至动画播到一半卡死。原因动画对象太多尤其是高分辨率图片加复杂动画吃内存。解决每页动画不超过 3 个对象优先用「淡出」而不是「飞入」这类计算量大的效果。图片先压缩到 1920 像素宽再插入别直接塞 4K 截图。4.3 抓包截图暴露真实 IP 和敏感信息现象用 Wireshark 抓的包直接截图放课件里面有自己的内网 IP、MAC 地址甚至账号信息。原因抓包时没过滤截了不该截的。解决课堂上用虚拟机或隔离环境抓包截图前用 Wireshark 的「导出指定分组」功能只导需要的包或者截图后用画图工具把敏感字段涂掉。我一般会提前抓一份干净的、只包含教学协议的包存成 pcapng 文件反复用。4.4 代码演示环境没提前装好现象讲到传输层想现场跑 Python 演示结果教室电脑没装 Python或者装了但缺库现场 pip install 又没网。原因没提前确认环境。解决所有代码演示提前在教室电脑上跑一遍或者自带笔记本并准备好离线安装包。更稳妥的做法是把代码运行结果提前录成 GIF 或短视频现场播放代码只作为截图展示。4.5 章节顺序按教材走导致学生迷失现象严格按教材章节顺序讲讲到网络层时学生已经忘了物理层讲过什么前后串不起来。原因教材是线性展开但网络知识是分层的线性讲容易断片。解决每讲完一层用一页「回看」把这一层和上一层的关系画出来比如讲完网络层回看它如何依赖链路层的帧传输、又如何为传输层提供端到端通道。这一页不用新知识只画箭头和一句话总结但能帮学生把骨架焊死。5. 让课件能复用的进阶技巧模板化与版本管理课件做完不是终点下一轮上课还要改。我踩过的最大坑是每次改完都存成「网络课件_final_v3_真的最终版.pptx」半年后自己都分不清哪个是最新。后来我把课件拆成两部分一部分是稳定的骨架和图示放在一个模板文件里另一部分是每年更新的案例和数据放在单独的 Markdown 文件里用脚本合并。具体做法是用 python-pptx 读模板、替换占位文本、再另存为新文件。下面这段代码演示如何把模板里的「[年份]」和「[案例]」替换成实际内容。from pptx import Presentation def fill_template(template_path, output_path, replacements): prs Presentation(template_path) for slide in prs.slides: for shape in slide.shapes: if shape.has_text_frame: for para in shape.text_frame.paragraphs: for run in para.runs: for key, value in replacements.items(): if key in run.text: run.text run.text.replace(key, value) prs.save(output_path) print(f已生成 {output_path}) # 每年只需改这个字典 replacements { [年份]: 2025, [案例]: 某电商大促期间的流量突增, [抓包工具]: Wireshark 4.x, } fill_template(network_template.pptx, network_2025.pptx, replacements)这段代码遍历模板里所有文本框把占位符替换成实际内容。replacements字典是每年唯一要改的地方模板本身不动。这样版本管理就简单了模板文件用 git 管理每年的替换字典单独存一个 py 文件需要哪年的课件就跑对应脚本生成。参数上占位符用方括号包起来是为了和正文区分避免误替换。提示python-pptx 替换文本时如果占位符被拆到多个 run 里会替换失败。保险做法是在模板里把占位符写在一个 run 里或者替换前先合并 run。我一般直接在模板里把占位符单独放一个文本框省去合并的麻烦。最后说个我自己的习惯每轮课结束后我会花十分钟把学生问得最多的三个问题记在一个faq.md里下一轮备课时直接把这些问题的答案做成补充页插进对应章节。几年下来这份课件里最值钱的就是这些从真实提问里长出来的页面而不是最初从教材抄来的定义。希望帮到你。本文还有配套的精品资源点击获取