Review
Review
1. 域间路由与 BGP 策略 (对应题目 1)
核心课件:02-InternetBasics.pdf
在课件的 BGP (Border Gateway Protocol) 部分,重点强调了互联网是由多个 AS (Autonomous Systems) 组成的,而路由不仅仅是技术问题,更是商业策略问题。
相关知识点:
- AS 商业关系:
- Provider-Customer (供应商-客户): 客户付钱给供应商,供应商为客户转发所有流量。
- Peer-Peer (对等): 双方通常免费交换彼此(及各自客户)的流量。
- Valley-Free Routing (无山谷路由原则):
- 向客户 (To Customer): 导流所有已知的路由(因为客户付钱)。
- 向供应商/对等方 (To Provider/Peer): 只通告“自己”和“自己的客户”的路由。绝不把从一个 Provider 学来的路由转发给另一个 Provider。
- BGP 路径选择优先级: 商业利益优先。通常顺序是:Customer > Peer > Provider。
2. 瓶颈分析、DoS 与 CDN (对应题目 3)
核心课件:04-Scalability.pdf 和 07-Naming.pdf
题目 3 考察的是 Web 架构的脆弱性和扩展性。
相关知识点:
- 瓶颈原理 (Bottleneck): 系统的整体表现取决于最慢的环节。
- 在例题 (c) 中,增加服务器性能(CPU/RAM)无法解决 1Mbps 网络线的物理限制。课件强调了要识别是 Network-bound 还是 CPU-bound。
- DNS 的依赖性 (
07-Naming):- DNS 是 Web 访问的第一步。如果名称服务器(Authoritative Name Server)下线,客户端无法获取 IP,后续的 TCP 握手和 HTTP 请求根本无法开始。
- CDN (Content Delivery Network):
- 课件提到 CDN(如 Akamai, Cloudflare)通过将内容缓存到边缘节点来解决扩展性问题。
- 防御 DoS: CDN 拥有巨大的带宽,可以吸收 Alice 发起的泛洪攻击,保护 Bob 脆弱的源站(Origin Server)。
3. 并发、死锁与竞态条件 (对应题目 2, 4)
核心课件:05-DynamicContent.pdf (涉及服务器端状态处理)
虽然课件更多关注动态内容的生成,但题目 2 和 4 考察的是多线程 Web 服务器处理共享状态时的经典问题。
相关知识点:
- Race Condition (竞态条件):
- 当多个线程在没有适当同步的情况下读写共享变量(如例题 4 中的 X 和 Y)时,结果取决于指令执行的交错顺序(Interleaving)。
- 原子性 (Atomicity): 题目 4 说明了非原子操作(先读再写)在并发环境下会导致非预期的结果。
- Deadlock (死锁):
- 死锁发生的四个必要条件:互斥、占有并等待、不可抢占、循环等待。
- 在题目 2 中,打破死锁最简单的方法是规定加锁顺序(例如所有线程都必须先锁 X 再锁 Y)。
c()函数因为反向加锁打破了这一规则。
4. 总结对比表:题目与课件映射
| 题目类型 | 核心考点 | 对应课件 | 关键结论 |
|---|---|---|---|
| BGP 表格题 | 路由通告策略 (Export Policy) | 02-InternetBasics | 客户路由发给所有人;Provider 路由只发给客户。 |
| DNS 故障题 | 系统的硬性依赖 | 07-Naming | 没有解析就没有连接。 |
| 带宽瓶颈题 | 资源限制分析 | 04-Scalability | 升级服务器无法解决网络带宽不足(Bandwidth-bound)。 |
| 安全防御题 | 缓解 DDoS 的手段 | 04-Scalability | CDN 是应对大规模流量攻击的最有效技术方案。 |
| 并发锁难题 | 锁的顺序与循环等待 | 05-DynamicContent | 必须统一加锁顺序以避免死锁环路。 |
知识点整理
1. 互联网基础与 BGP
(对应 02-InternetBasics.pdf)
这部分是网络架构的基石,解释了数据如何在错综复杂的网络中找到路径。
- 核心概念:
- 尽力而为服务 (Best Effort Service): IP 协议不保证数据包一定送达、不保证顺序、不保证不重复。
- 自治系统 (AS): 互联网是由数万个 AS 组成的集合,而非单一网络。
- BGP (边界网关协议): 唯一用于连接不同 AS 的协议。
- 课件中的经典例子 (The Classic Example):
- 场景: Traceroute (路由追踪)。
- 描述: 课件通常会展示一个
traceroute www.google.com的输出结果。 - 知识点: 每一行代表一个路由器(Hop)。你会发现路径不是直线的,可能会绕远路,且往返路径(Symmetric path)通常是不一致的。
- BGP 策略例子: “我是一个 ISP,我的客户付钱给我,所以我把客户的 IP 告诉全世界;但我的竞争对手(Peer)不付钱给我,所以我只把我的客户告诉他,不把其他 ISP 的路由告诉他。”(这就是 Valley-Free 原则的通俗解释)。
2. HTTP 与 Web 架构
(对应 03-TheWeb.pdf)
这部分关注应用层协议。
- 核心概念:
- 无状态 (Stateless): 服务器默认不记得上一次请求是谁发的(需要 Cookie 来维持状态)。
- 持久连接 (Persistent Connections): HTTP/1.1 默认开启
Keep-Alive,在一个 TCP 连接上发送多个 HTTP 请求,减少握手开销。
- 课件中的经典例子:
- 场景: Telnet 到 Web 服务器。
- 操作: 手动输入
GET / index.html HTTP/1.1,Host: www.example.com。 - 现象: 服务器返回纯文本的 Header 和 HTML Body。这展示了 HTTP 是基于文本的协议,人眼可读。
3. 可扩展性与 CDN
(对应 04-Scalability.pdf)
这是系统设计的核心,解释了为什么单台服务器无法支撑 Facebook 或 Google 这样的规模。
- 核心概念:
- Scale Up vs. Scale Out:
- Up (垂直扩展): 买更贵的机器(有上限,昂贵)。
- Out (水平扩展): 买更多便宜的机器(理论无限,但软件复杂)。
- 负载均衡 (Load Balancing): Layer 4 (基于 IP/端口转发) vs Layer 7 (基于 URL/内容转发)。
- Scale Up vs. Scale Out:
- 课件中的经典例子:
- 场景: Slashdot Effect (或 Flash Crowd)。
- 描述: 一个小网站突然被大网站链接,流量瞬间暴增 100 倍,导致服务器瘫痪。
- 解决方案例子 - CDN (Akamai):
- 如果不使用 CDN:所有用户都去访问位于匹兹堡的一台源服务器 -> 网络拥堵。
- 使用 CDN:位于巴黎的用户访问巴黎的边缘节点,位于东京的用户访问东京的节点。只有 1% 的流量回到源站。
4. 动态内容与并发
(对应 05-DynamicContent.pdf)
这部分是很多同学的痛点,涉及多线程编程。
核心概念:
- 进程 vs 线程: 进程是操作系统分配资源的单位(独立内存),线程是 CPU 调度的单位(共享内存)。
- 竞态条件 (Race Condition): 结果依赖于执行顺序。
课件中的经典例子:
场景: 银行账户转账 (Bank Account)。
代码逻辑:
// 线程 A 和 线程 B 同时执行: temp = balance; // 读余额 temp = temp + 10; // 修改 balance = temp; // 写回问题: 如果 A 读了 100,还没写回时,B 也读了 100。最后两人都写回 110。银行实际上丢了 10 块钱。
解决: 使用 锁 (Locks/Mutex) 保护临界区(Critical Section)。
5. 命名与 DNS
(对应 07-Naming.pdf)
网络世界的“电话簿”。
- 核心概念:
- 层次化命名 (Hierarchical Naming):
. -> .com -> .google.com。 - 递归 vs 迭代查询:
- 递归 (Recursive): "帮我问问那个地址在哪"(服务器替你跑腿)。
- 迭代 (Iterative): "我不知道,但你可以去问 .com 的服务器"(服务器给你指路)。
- 层次化命名 (Hierarchical Naming):
- 课件中的经典例子:
- 场景: 解析 www.cmu.edu。
- 步骤:
- 你的电脑问本地 DNS 服务器。
- 本地 DNS 问 Root Server (根服务器) -> 返回
.edu的服务器 IP。 - 本地 DNS 问
.eduServer -> 返回cmu.edu的服务器 IP。 - 本地 DNS 问
cmu.eduServer -> 返回www.cmu.edu的真实 IP。
- 关键点: 缓存 (Caching)。第二次访问时,直接从缓存取,不需要再走一遍流程。
6. 云计算与 MapReduce
(对应 08-TheCloud.pdf)
现代后端架构的基础。
- 核心概念:
- 虚拟化 (Virtualization): 在一台物理机上模拟多台虚拟机(VM),通过 Hypervisor 管理。
- MapReduce: Google 提出的处理海量数据的编程模型。
- 课件中的经典例子:
- 场景: Word Count (单词计数)。
- 任务: 统计 1TB 文本文件中每个单词出现的次数。
- Map 阶段: 读入文档,输出
<Word, 1>。例如<"Apple", 1>, <"Banana", 1>, <"Apple", 1>。 - Shuffle 阶段: 把所有 Key 相同的归类。
<"Apple", [1, 1]>。 - Reduce 阶段: 对 List 求和。输出
<"Apple", 2>。 - 意义: 开发者只需要写 Map 和 Reduce 函数,不需要关心怎么分配机器、怎么处理硬盘故障,这是云平台的价值。
针对你的考试,重点回顾 02 (BGP表格填空)、05 (并发锁的死锁与竞态) 和 04/07 (Web 系统瓶颈分析)。这三块最容易出计算题或分析大题。
