每次打开网站,一秒钟之内都会发生几十个看不见的步骤。读完这一页,你就能完整讲出一次点击背后的旅程:电脑如何找到网站、数据如何跨越全球、HTTPS 到底保护了什么。本页面向零基础读者,全部用生活中的例子来解释。
互联网就像一家餐厅。你的电脑是顾客:负责点单。存放网站的机器是厨房:负责出菜。你的浏览器(客户端)发出请求,网页服务器返回页面。互联网上几乎所有东西都遵循这个模式。
每台联网设备都需要一个地址,就像房子需要门牌号。这就是IP 地址——例如 93.184.216.34(IPv4),或者更长的 2606:2800:220:1:248:1893:25c8:1946(IPv6)。
但一台服务器同时跑着很多服务,所以还需要端口,就像大楼里的房间号:
80 → 未加密的网页流量(HTTP)443 → 加密的网页流量(HTTPS)「地址 + 端口」——例如 93.184.216.34:443——指向的不是一台机器,而是这台机器上的某一个具体服务。
电脑只认数字,人只记名字。域名系统(DNS)就是电话簿:把 example.com 翻译成 IP 地址。你在地址栏输入网址时,电脑会先问 DNS 解析器「这个域名的 IP 是什么?」,然后才去连接那个地址。
sequenceDiagram
participant C as 你的电脑
participant R as DNS 解析器
participant D as DNS 服务器
participant S as 网页服务器
C->>R: example.com 的 IP 是什么?
R->>D: 查询 example.com
D-->>R: 答案:93.184.216.34
R-->>C: 答案:93.184.216.34
C->>S: 连接 93.184.216.34:443
S-->>C: 欢迎!
数据不是一整条连续流。想象你写了一封很长的信:把它剪成编好号的几页,每页装进一个信封,写上相同的寄件人和收件人地址,然后分开寄出。这些信封就是数据包。每个数据包都携带源地址、目标地址和一部分数据。
路由器就是沿途的邮局。每个路由器只需要知道下一步往哪送,不需要知道整条路线。到达目的地后,数据包再按顺序拼回去。
flowchart LR
A[你的电脑] --> B[家庭路由器]
B --> C[你的 ISP]
C --> D[骨干路由器]
D --> E[服务器的数据中心]
E --> F[网页服务器]
寄这些信封有两种常见方式:
| TCP | UDP | |
|---|---|---|
| 保证 | 送达、有序、丢了重发 | 什么都不保证 |
| 类比 | 带回执的挂号信 | 随手丢进邮筒的明信片 |
| 用途 | 网页、邮件、文件传输 | 视频通话、游戏、DNS 查询 |
HTTP 是客户端和服务器之间交流的语言:GET /index.html 表示请求某个页面。但 HTTP 像明信片——任何经手的人都能读到内容。
HTTPS 把 HTTP 消息放进密封信封(TLS 加密)。中间人再也读不到内容了。
但是,密封信封外面仍然写着信息。网络观察者还是能看到:
flowchart LR
subgraph client[你的电脑]
A[HTTP 请求]
end
subgraph wire[线路上 - 可见]
B[目标 IP 和端口]
C[SNI:example.com]
D[加密内容 - 读不到]
end
subgraph server[网页服务器]
E[解密后读取请求]
end
A --> B --> C --> D --> E
sequenceDiagram
participant B as 浏览器
participant R as DNS 解析器
participant S as 网页服务器
B->>R: 1. example.com 的 IP 是什么?
R-->>B: 2. 93.184.216.34
B->>S: 3. 建立到 :443 的 TCP 连接
S-->>B: 4. 连接建立
B->>S: 5. TLS 握手(SNI:example.com)
S-->>B: 6. TLS 建立 - 此后加密
B->>S: 7. GET /index.html(加密)
S-->>B: 8. 页面内容(加密)
这一段旅程——DNS 查询、建立连接、加密、然后真正发出请求——正是下一页要从防火墙视角审视的东西。
GFW 是如何工作的 — 这段旅程会在哪里、以什么方式被阻断。