网络可视化

网页、消息和下载都依赖多层协议。请求经过封装,每一跳只读取处理它所需的层。发送请求前,浏览器还要解析地址、建立连接、验证服务器身份。本组课程先展示协议栈,再逐步运行这些交互,代码与状态同步。

网络可能丢包、重复传送或改变到达顺序。名称由多个服务器分管,路由器只掌握转发所需的信息。协议要在这些条件下建立共享状态,开头和结尾尤其能看出各条确认消息的作用。

请求怎样发出

八个问题对应八课。先看分层边界,再看连接、文件传输、发送速率和路由控制。

  • 层是什么? 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 RTTTCP、TLS、HTML、三个依次获取的附加文件
HTTP/24 RTT建连相同,附加文件共用一个 DATA 往返
HTTP/33 RTTQUIC 用一次往返建立连接,再多路复用
TCP 关闭FIN → ACK,再 FIN → ACK两个方向分别关闭,TIME_WAIT 处理延迟报文
Reno AIMDcwnd 1 → 2 → 4 → 8,再每次加 1 到 13C+B = 12 后首次溢出,窗口减半为 6,继续拥塞避免
DV 收敛,A—B—C2 次写入,再转发一个包C 的代价逐邻居传播,随后按下一跳转发
LS 收敛2 个 LSA,再一次 Dijkstra先补齐地图,再计算表
默认对照填表并交付,再比较过期通告与一个 LSAB—C 断开后,DV 在 A↔B 循环,LS 在 A 丢弃;保留两种结局

建议学习顺序

  1. OSI / TCP-IP 模型:看 Presentation 高亮时封装数量不变,路由器只处理到 Network。先掌握各层能看到什么。
  2. DNS 解析:观察根服务器返回转介而非地址,理解分层名称系统如何分工。
  3. TCP 三次握手:每条消息到达后,检查双方还缺哪项确认,理解为什么需要三条消息。
  4. TLS 握手:运行中间人场景。攻击者能分别与两端交换密钥,也能转发真实证书,但无法生成本次握手的有效签名。
  5. HTTP / HTTP/2 / HTTP/3:用相同四文件页面比较排队与重叠传输;HTTP/3 中 CSS 丢包时,观察 JS 继续推进。
  6. TCP 连接关闭:分别清空两个方向的数据,观察 FIN/ACK 和 TIME_WAIT。
  7. 拥塞控制:看慢启动翻倍、拥塞避免线性增长、溢出后减半,形成 AIMD 锯齿。
  8. 路由协议:在同一组三台路由器上对比 DV 与 LS,再断开 B—C,查看过期信息如何形成转发循环。

完整流程是:封装、解析、建连、验证身份、控制发送、关闭连接。各跳能转发,是因为路由协议预先生成了下一跳表。

全部网络课程

打开下方课程,逐步观察封装或报文传输,核对同步高亮的代码。