通过分步动画直观理解网络协议的工作原理。从 TLS 握手到 TCP 拥塞控制,从 DNS 解析到 VPN 隧道——每个协议拆解为可交互的步骤,点一点就能看懂。
HTTPS 连接的基石。客户端和服务器通过四次握手协商加密参数、验证身份、交换密钥。整个过程在不安全的网络上建立了一条安全的加密通道。
浏览器如何验证一个 HTTPS 网站的证书是否可信?通过一条从服务器证书到根 CA 的信任链,逐级验证签名,最终追溯到操作系统预装的信任锚点。
抓包工具(Charles、DumpAny 等)如何解密 HTTPS 流量?通过在客户端和服务器之间充当“中间人”,用自签 CA 证书重新加密,从而实现透明解密。
一种经典的中间人攻击:攻击者拦截 HTTP 到 HTTPS 的重定向,把 HTTPS 改成 HTTP。客户端以为自己连的是安全连接,实际上一直在明文通信。HSTS 是防御关键。
HTTPS 每次重连都要重新握手吗?不是。TLS 提供了两种「记忆」会话的方式——Session ID 和 Session Ticket,让你再连的时候省掉一次完整握手。Ticket 更狠,能直接 0-RTT 发数据。
普通 HTTPS 只有客户端验证服务器。mTLS 反过来:服务器也要验证客户端是谁。多用于企业内网、API 网关、K8s 集群内部通信——两端都持有证书,互相查户口。
传统 DNS 查询是明文的,你在网上的一举一动,运营商和路由器全都看得见。DoH 把 DNS 查询塞进 HTTPS 请求,让中间人只看到一段加密字节流——连你查了哪个域名都猜不到。
SSL Strip 是经典的降级攻击:攻击者拦截服务器的 HTTPS 重定向,把 https 改成 http,受害者全程以为自己连着安全站点。从明文请求到凭据泄露,再到 HSTS 让攻击失效——完整攻防时间线。
TCP 连接建立的标准流程。客户端和服务器通过三次消息交换同步初始序列号(ISN),建立双向可靠通信通道。
TCP 连接断开的标准流程。因为 TCP 是全双工的,每个方向都要独立关闭,所以需要四次消息交换。主动关闭方在最后进入 TIME_WAIT 状态。
TCP 如何避免把网络塞爆?通过拥塞窗口(cwnd)动态调整发送速率,在慢启动和拥塞避免之间切换,遇到丢包就退避。
同样的一个网页请求:左边走传统的 TCP 三次握手 + TLS 协商,3 个 RTT 之后才轮到业务数据;右边用 TFO + TLS 1.3 0-RTT,把数据直接塞进第一个包。
Nagle 算法要攒小包、Delayed ACK 要攒 ACK——两个「攒一攒」撞在一起,就成了经典的 200ms 延迟。看这两个算法是怎么互相把对方卡死的。
当你在浏览器中输入一个网址,背后发生了什么?DNS 解析是一个层层递归的过程,从本地缓存到根服务器,再到顶级域,最后到达权威 DNS。
QUIC 是 HTTP/3 的底层协议,基于 UDP。它把传输层安全(TLS 1.3)和传输层(替代 TCP)合并在一起,实现了 1-RTT 甚至 0-RTT 的握手。
WebSocket 通过 HTTP Upgrade 机制从 HTTP 连接升级为全双工 WebSocket 连接。一次握手后,客户端和服务器可以随时互相发送消息。
HTTP/1.1 一个连接同时只能处理一个请求,浏览器被迫开 6 条连接排队;HTTP/2 用一条连接同时跑多个流,再配上 HPACK 头部压缩,把带宽真正用满。
第三方应用如何安全地拿到你的账号数据?授权码模式 + PKCE(RFC 7636)是目前 OAuth 最推荐的做法——用一层 code_challenge/code_verifier 证明客户端身份,防止授权码被截获后冒用。
gRPC 基于 HTTP/2,在普通一元 RPC 之外还支持三种流式 RPC。四种模式的区别只在于请求/响应的消息数量组合,对应 proto 里四种不同的方法签名。
浏览器为什么不用每次都下载同一个 CSS?靠 Cache-Control 新鲜期 + ETag/Last-Modified 条件请求。命中新鲜缓存零网络请求;过期后 304 确认内容没变,照样省流量。
新设备接入网络怎么自动拿到 IP?DHCP 通过 Discover / Offer / Request / Ack 四步完成。Discover 和 Request 是广播(因为设备还没有 IP),Offer 和 Ack 则是明确发给目标 MAC 的应答。
知道 IP 不知道 MAC 时怎么办?ARP 在子网内广播「谁有 10.0.0.2?」,目标主机单播回复自己的 MAC,源主机把它写进 ARP 缓存,之后就能直接发以太网帧了。
两个都在 NAT 后面的浏览器要直连,怎么做到?ICE 框架先问 STUN 要自己的公网地址,再对候选地址对做连通性检查;打不通就走 TURN 中继。
从 TCP 建连到结果集返回,MySQL 协议握手和查询的完整流程:greeting → 认证 → COM_QUERY → 结果集。
HTTP CONNECT 方法用于建立 TCP 隧道,最常见的场景是 HTTPS 正向代理。客户端通过代理连接目标服务器,代理对隧道内的 TLS 数据一无所知。
SOCKS5 是应用最广泛的代理协议之一,位于 TCP 之上。它不关心上层传输的是什么协议——HTTP、HTTPS、SSH、FTP 都可以通过 SOCKS5 代理转发。
SSH 不仅用于远程登录,还能创建加密隧道。三种模式:本地转发(-L)、远程转发(-R)、动态转发(-D),分别对应不同的使用场景。
VPN 通过创建虚拟网卡(tun/tap)和修改路由表,将所有(或部分)网络流量重定向到加密隧道,实现网络层的全局代理。
TUN 是 VPN 和隧道技术的基石。它在操作系统内核和用户态程序之间建立一个虚拟的 IP 包通道——内核把匹配路由的 IP 包交给用户态程序处理,用户态可以加密、封装、修改后再发出去。
在 P2P 通信中,NAT 后面的设备不知道自己的公网地址。STUN 协议通过一个简单的请求-响应机制,让客户端向 STUN 服务器询问「我的公网 IP 和端口是什么」,为后续的 UDP 打洞做准备。
用户在东京请求一张图片,从最近边缘节点开始逐级回源:Edge → 区域节点 → 源站。每一层都缓存,命中时近乎瞬时。
访问 Service 的 ClusterIP,包是怎么被 iptables DNAT 转发到某个 Pod 的?从节点入口到 Pod 网卡,再到响应回程。
同样一条 SSH 加密隧道,-L / -R / -D 的区别只在谁监听端口、谁发起出站连接。看数据包具体怎么走。