网络可视化
网页、消息和下载都依赖多层协议。请求经过封装,每一跳只读取处理它所需的层。发送请求前,浏览器还要解析地址、建立连接、验证服务器身份。本组课程先展示协议栈,再逐步运行这些交互,代码与状态同步。
网络可能丢包、重复传送或改变到达顺序。名称由多个服务器分管,路由器只掌握转发所需的信息。协议要在这些条件下建立共享状态,开头和结尾尤其能看出各条确认消息的作用。
请求怎样发出
八个问题对应八课。先看分层边界,再看连接、文件传输、发送速率和路由控制。
- 层是什么? OSI / TCP-IP 是协议职责的划分。在本课 Ethernet + IP + TCP 路径中,封装添加 TCP、IP、Ethernet 三个头部。OSI 的七层不是七个信封,Session 和 Presentation 不额外封装。路由器处理到网络层,不需要解析 HTTP。
- 地址在哪里? DNS 把
www.example.com解析为 IP 地址。解析器依次访问根、顶级域、权威服务器;前两者返回下一站,最后一站回答。缓存避免每次都重复八条消息的冷查询。 - 能否通信? TCP 的 SYN、SYN-ACK、ACK 确认双向收发能力,并同步用于字节流排序的序列号。
- 对方是谁? TLS 通过密钥交换让双方计算共享密钥,而不传输该密钥。服务器还要证明它持有证书对应的私钥:对本次握手记录签名。攻击者复制真实证书,也无法伪造这份签名。
- 多个文件怎样共用连接? 本课 HTTP/1.1 模型在一个连接上依次请求文件。HTTP/2 把多个文件拆成帧,在同一 TCP 连接交错传输,但 TCP 丢段会阻塞所有流。HTTP/3 在流之间隔离丢包恢复。
- 怎样结束? 两个发送方向独立关闭。一方停止发送时,另一方可能还有数据,因此分别交换 FIN 和 ACK。通常主动关闭、发送最后 ACK 的一方进入 TIME_WAIT,等待旧报文消失,并能重发最后 ACK。
- 可以发多快? 本课 Reno 模型通过拥塞窗口探测路径容量。慢启动每 RTT 约翻倍,达到
ssthresh后每 RTT 增加一个 MSS。丢包触发乘性减小;超时把cwnd重置为 1。 - 下一跳是谁? 距离向量向邻居通告代价,链路故障后可能计数到无穷。链路状态泛洪拓扑,各路由器据此运行 Dijkstra。转发只查下一跳,所以过期代价可能造成循环。
这些协议各自负责一种确认,不要求每一层了解上层内容。路由协议生成下一跳表,数据包才知道该去哪个邻居。
每次交互的成本
以下数字对应课程模型;TLS 按课中显示的传输计数(含首个应用请求,未显示 EncryptedExtensions,不等于真实握手消息数),HTTP 使用四文件页面。
| 交互 | 数量或顺序 | 原因 |
|---|---|---|
| OSI / TCP-IP 直接封装 | 3 个头部 | GET 外依次是 TCP、IP、Ethernet;Session、Presentation 不增加头部 |
| DNS 冷查询 | 8 条消息 | 根、顶级域、权威服务器各一次往返,加上客户端与解析器的往返 |
| DNS 缓存命中 | 2 条消息 | 解析器直接回答,不访问名称层级 |
| TCP 建连 | SYN → SYN-ACK → ACK | 确认双向通信和序列号 |
| TLS 1.3 完整握手 | 显示 7 次传输 | 双方的公开密钥份额、证书、握手记录签名、双方 Finished、首个应用请求 |
| TLS 1.3 会话恢复 | 显示 5 次传输 | 票据替代证书消息组,本模型无需再验证证书签名 |
| HTTP/1.1 四文件页面 | 6 RTT | TCP、TLS、HTML、三个依次获取的附加文件 |
| HTTP/2 | 4 RTT | 建连相同,附加文件共用一个 DATA 往返 |
| HTTP/3 | 3 RTT | QUIC 用一次往返建立连接,再多路复用 |
| TCP 关闭 | FIN → ACK,再 FIN → ACK | 两个方向分别关闭,TIME_WAIT 处理延迟报文 |
| Reno AIMD | cwnd 1 → 2 → 4 → 8,再每次加 1 到 13 | C+B = 12 后首次溢出,窗口减半为 6,继续拥塞避免 |
| DV 收敛,A—B—C | 2 次写入,再转发一个包 | C 的代价逐邻居传播,随后按下一跳转发 |
| LS 收敛 | 2 个 LSA,再一次 Dijkstra | 先补齐地图,再计算表 |
| 默认对照 | 填表并交付,再比较过期通告与一个 LSA | B—C 断开后,DV 在 A↔B 循环,LS 在 A 丢弃;保留两种结局 |
建议学习顺序
- OSI / TCP-IP 模型:看 Presentation 高亮时封装数量不变,路由器只处理到 Network。先掌握各层能看到什么。
- DNS 解析:观察根服务器返回转介而非地址,理解分层名称系统如何分工。
- TCP 三次握手:每条消息到达后,检查双方还缺哪项确认,理解为什么需要三条消息。
- TLS 握手:运行中间人场景。攻击者能分别与两端交换密钥,也能转发真实证书,但无法生成本次握手的有效签名。
- HTTP / HTTP/2 / HTTP/3:用相同四文件页面比较排队与重叠传输;HTTP/3 中 CSS 丢包时,观察 JS 继续推进。
- TCP 连接关闭:分别清空两个方向的数据,观察 FIN/ACK 和 TIME_WAIT。
- 拥塞控制:看慢启动翻倍、拥塞避免线性增长、溢出后减半,形成 AIMD 锯齿。
- 路由协议:在同一组三台路由器上对比 DV 与 LS,再断开 B—C,查看过期信息如何形成转发循环。
完整流程是:封装、解析、建连、验证身份、控制发送、关闭连接。各跳能转发,是因为路由协议预先生成了下一跳表。
全部网络课程
打开下方课程,逐步观察封装或报文传输,核对同步高亮的代码。