pen-pal/apex

GitHub: pen-pal/apex

一个涵盖 458 个计算机科学主题的交互式可视化教学平台,通过真实字节和经过测试的模型帮助用户直观理解从网络协议到操作系统内核的底层原理。

Stars: 12 | Forks: 0


# ◆ Apex ### 直观了解计算机的*实际*运行方式 —— 实时呈现在你的浏览器中 **458 个可操作的交互式可视化**,你可以随意拨弄、拖拽甚至破坏它们 —— 内容涵盖网络、 密码学、传输与 Web、分布式系统、数据库、算法、硬件以及操作系统(OS)内部原理。 这不是那些需要你在脑海中同步想象的静态图表。这里是真实的字节、真实的校验和、真实的密码学。
(各项统计数字均为实测,而非凭空断言 —— 运行 npm run stats 即可验证;CI 会在每次提交时运行完整的测试套件。)
[![在线演示](https://img.shields.io/badge/▶_Live_demo-pen--pal.github.io%2Fapex-2563eb?style=for-the-badge)](https://pen-pal.github.io/apex) [![测试](https://static.pigsec.cn/wp-content/uploads/repos/cas/6b/6b52945adbf8d9e421fe243515ae54cfbd3da263f16b1eabda37cdc0b797b8eb.svg)](https://github.com/pen-pal/apex/actions/workflows/test.yml) [![版块](https://img.shields.io/badge/sections-458-8250df?style=flat-square)](#whats-inside) [![许可证](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](#license) [![TypeScript](https://img.shields.io/badge/TypeScript-3178c6?style=flat-square&logo=typescript&logoColor=white)](#) [![React](https://img.shields.io/badge/React-149eca?style=flat-square&logo=react&logoColor=white)](#) [![Vite](https://img.shields.io/badge/Vite-646cff?style=flat-square&logo=vite&logoColor=white)](#)
Apex —— 一种生动且交互式的方式来了解计算机的运行原理
输入一条消息,看着它变成字节并在网线上传输。让哈希表发生溢出,看着 O(1) 的复杂度坍缩成 O(n²)。伸展一棵树,在两阶段提交和三阶段提交过程中模拟协调者崩溃;尝试毒化 DNS 缓存并观察源端口随机化如何防御它;通过 DNS 重绑定访问 `localhost`;对仍处于加密状态的数字进行相加。这里的每一个版块都是一个微小、**经过测试且锚定于规范的真实模型**,并配有交互式视图 —— 没有含糊其辞,也没有伪造的输出。 ### 核心指导原则 ## 内容概览 **涵盖 11 个领域的 458 个交互式版块** —— 外加**引导式探索旅程**(精心策划的端到端漫游,例如 *“HTTPS 页面是如何加载的”*、*“CPU 内部探秘”*、*“构建一个数据库”*),以及一个支持**深色模式**切换的全局可筛选目录。 | 领域 | 部分精彩内容抢先看 | |------|--------------------------| | 🌐 **网络基础** | 根据你输入的文本构建真实的 Ethernet/IPv4/TCP 数据帧,并逐字节追踪它;涵盖 ARP、交换机、NAT、DHCP、子网划分、物理线路上的信号、90 多种协议及 `.pcap` 导入功能 | | 🧭 **路由与命名** | BGP 最佳路径与路由反射器、OSPF、DNS、DNSSEC、**DNS 缓存投毒(Kaminsky)**、MPLS、VXLAN、VRRP、ECMP、IPsec | | 🚀 **传输与 Web** | TCP 握手与状态机、拥塞控制(CUBIC/BBR)、QUIC 与 TCP 的对比、**连接迁移**、**0-RTT 重放**、HTTP/2 与 HTTP/3、**MPTCP**、WebSockets、CDN | | 🔒 **密码学** | AES 轮次、AEAD、Diffie–Hellman、RSA/ECC/EdDSA、Schnorr 零知识证明、双重棘轮、VRF、**Paillier 同态加密**、**信封加密(KMS)**、Shamir/门限方案、后量子密码学 | | 🛡️ **安全与 Web** | CORS、CSP、请求走私、SSRF、**DNS 重绑定**、点击劫持、**哈希泛洪攻击**、**ReDoS**、**原型链污染**、子域名接管、WebAuthn | | 🔤 **数据与编码** | Huffman 编码、算术编码与 **Golomb-Rice 编码**、LZ77/LZW、BWT、**Gorilla** 时间序列、**COBS** 成帧、CRC-32、Reed–Solomon、Viterbi | | 🕸️ **分布式系统** | Raft、Paxos、PBFT、向量时钟/Lamport 时钟、CRDT、Gossip 协议、Quorum 机制、2PC 与 **3PC**、链式复制、临时移交、**读修复**、SWIM、HdrHistogram | | 🗄️ **存储、数据库与算法** | B+ 树、LSM 树、MVCC、WAL;深度的算法系列 —— 排序、**Kadane 算法**、KMP/Aho–Corasick/Manacher、后缀数组、最大流、MST、**区间树**、**Treap**、伸展树、字典树 | | 🖥️ **系统与操作系统** | CPU 流水线与分支预测、MESI 协议、**伪共享**、x86-TSO、虚拟内存与页表遍历、TLB、写时复制、NUMA、CFS、epoll 与 C10k、futex、io_uring | | 🛠️ **运维与 SRE** | 部署策略、健康检查、自动伸缩、SLO 与错误预算、负载剥离、幂等性、分布式追踪、功能开关、Single-flight 模式、混沌工程 | ## 快速开始 ``` npm install npm run dev # start the UI at http://localhost:5173 npm run test:run # run the full test suite (CI runs it on every push) npm run typecheck # tsc --noEmit npm run demo # CLI: build a real frame from "Hi" and dissect it back npm run demo -- "GET /" # try your own message ``` `npm run demo` 会根据你的消息构建一个真实的 Ethernet/IPv4/TCP 数据帧 —— 包含真实的校验和与真实的 CRC-32 FCS,并填充至 64 字节的 Ethernet 最小长度要求 —— 然后将这些字节重新解析并恢复出你的原始消息, 以此证明没有任何内容是伪造的。 ## 构建方式 ``` src/core/ the generic dissection engine (types, bit reader, checksums, dissect, build) src/protocols/ the DATA: one ProtocolSpec per protocol — adding a protocol is a file here src/web/ the React UI — one tested model (.ts) + one view (*Section.tsx) per topic tests/ vitest — every model ships a test; most are anchored to a reference, some to invariants docs/ architecture.md · protocol-spec.md · views.md ``` 除网络相关的版块外,每个版块都遵循相同的结构:位于 `src/web/.ts` 的**纯粹且无依赖的模型** (附带 `tests/.test.ts` —— 在有参考规范的地方均会锚定该规范),位于 `src/web/Section.tsx` 的**视图**,以及 `main.tsx` 中的几行 装配代码(包含导入、一个 `section` 联合类型成员和一个渲染块 —— 这是目前唯一仍需大量手工维护的文件)。模型从不引入 React,因此它们可以同时在 CLI 和浏览器中运行。 **技术栈:** TypeScript + React + Vite,使用 [vitest](https://vitest.dev) 进行测试 —— 这是一个完全静态的客户端 应用,无需任何后端(引擎和密码学运算均在浏览器中执行)。CI 会在每次提交代码和 PR 时运行完整的测试套件;部署工作流则会自动将项目发布到 GitHub Pages。 ## 它的定义 —— 以及它的局限 它构建并解析真实的字节,运行真实的算法和密码学运算,这一切都是**出于教学目的**。它不是数据包 注入器,也不是流量分析工具。对于加密协议(TLS、QUIC、WireGuard、ESP),它只展示明文标头, 并将加密后的正文保持完全不可见状态 —— 它绝不宣称能够解密真实的抓包数据流,因为那需要会话密钥, 且超出了本项目的范围。密码学沙盒仅对沙盒内部的虚拟数值进行操作。 ## 许可证 [MIT](LICENSE)。
标签:Mutation, 分布式系统, 可视化, 响应大小分析, 密码学, 手动系统调用, 教学工具, 数据结构与算法, 网络, 自动化攻击, 计算机科学