网络拓扑与数据包仿真
科学工具 27 · 计算机网络

第一次打开
点「播放事件」，看看上路的包如何经过瓶颈。下方包号选择器定位某一个包，地图和逐跳时间线同时变化。黄色是排队，紫色是串行发送，绿色是传播。点「看完整实验」得到全部包的最终结果。

完成一个自己的实验
1. 选择节点，改名字或位置；可以直接拖动，也可输入横纵坐标。新增节点后选择两个端点建立链路。
2. 链路按每个方向设置带宽Mbps、传播时延ms、等待槽。两个方向互不占用对方的发送器与队列。0等待槽是合法实验。
3. 添加一条流，设置来源、目的、包字节、包数、间隔和开始时间。总包数最多1000。
4. 先冻结基线，再把B—C带宽从0.8改为8 Mbps，或设置一次断链时刻。结果重新计算，当前与基线使用各自完整条件。
5. 导出完整实验JSON以继续编辑；包CSV记录送达或明确丢失原因，逐跳CSV记录每段等待/发送/到达；PNG是当前观察时刻的图面。

模型与单位
使用确定性离散事件、FIFO和存储转发。发送时间=bytes×8/(Mbps×1000) ms，每次转发以Dijkstra选择当前可用链路的「发送+传播」最短路，不预测队列。链路有限等待槽不含正在发送的包。断链先丢弃等待包；按本工具教学约定，已经开始发送及传播的包完成这一跳，新包重新选路。没有TCP、重传、ACK、拥塞控制、协议头或处理时延。
同一时刻依次处理断链、发送完成、到达/发包，再按事件插入次序。所有包最终交付或明确丢失。回放是预先实际算出的事件记录，可暂停、跳到下一事件时刻；同一时刻发生的事件一起呈现。实验窗口从首包发送到最后一个包结束；在这之后才计划的断链不扩大吞吐率的分母。

实际核对结果
默认140包中72交付、68丢失；已交付包平均42.5166667 ms，最近秩P95为77.4 ms。将BC带宽改为8 Mbps后，140包全部交付，平均11.7842857 ms。独立小例：1000 bytes、1 Mbps、3 ms传播，一跳11 ms；再接2 Mbps、5 ms链路，总20 ms。0等待槽下三包同发，一包送达、两包丢失；同时反向发送不抢占另一个方向。
这些都是指定教学模型和合成流量的结果，不是现实互联网性能预测。

一手资料
MIT 6.02 Lecture 17: Packet switching
https://ocw.mit.edu/courses/6-02-introduction-to-eecs-ii-digital-communication-systems-fall-2012/8f332043eaaa2d41028991a442dd4fb6_MIT6_02F12_lec17.pdf

使用方式与数据
双击 index.html。运行资源、脚本与中文常用字字体都在单个HTML中；没有CDN、API、账户或本地服务器要求。来源链接只用于阅读资料。新增字体子集之外的字由系统字体回退。浏览器暂存可能受路径、隐私模式或容量影响，重要资料请保存完整JSON。作品提供手动下载和严格回读，不会直接覆盖你电脑上的文件。撤销重做覆盖文档编辑，视图选择可独立改变。拖动尚未完成时切换历史、编辑其他参数或操作回放，会取消该次拖动预览；已完成的拖动仍可撤销。开始播放后，之前尚未完成的文件读取不会覆盖当前操作。

核对范围
已执行最终HTML内的真实模型与真实Canvas绘图，用Node和原生Canvas核对输出；还使用非渲染元素替身直接调用最终内嵌UI处理器，核对撤销/拖动所有权和迟到文件读取；导出的PNG已解码并人工看过。此环境没有获准的浏览器控制，未把这些图称为网页截图，也没有声称DOM/CSS布局、真实鼠标或触控事件、本地首次断网冷启动、系统下载对话框和移动设备性能已经验收。
