Wallpass

网络基础:数据如何从 A 到 B

每次打开网站,一秒钟之内都会发生几十个看不见的步骤。读完这一页,你就能完整讲出一次点击背后的旅程:电脑如何找到网站、数据如何跨越全球、HTTPS 到底保护了什么。本页面向零基础读者,全部用生活中的例子来解释。

1. 客户端与服务器:点菜与做菜

互联网就像一家餐厅。你的电脑是顾客:负责点单。存放网站的机器是厨房:负责出菜。你的浏览器(客户端)发出请求,网页服务器返回页面。互联网上几乎所有东西都遵循这个模式。

2. IP 地址与端口:大楼和房间号

每台联网设备都需要一个地址,就像房子需要门牌号。这就是IP 地址——例如 93.184.216.34(IPv4),或者更长的 2606:2800:220:1:248:1893:25c8:1946(IPv6)。

但一台服务器同时跑着很多服务,所以还需要端口,就像大楼里的房间号:

「地址 + 端口」——例如 93.184.216.34:443——指向的不是一台机器,而是这台机器上的某一个具体服务。

3. DNS:互联网的电话簿

电脑只认数字,人只记名字。域名系统(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: 欢迎!

4. 数据包与路由:一封被拆开寄出的长信

数据不是一整条连续流。想象你写了一封很长的信:把它剪成编好号的几页,每页装进一个信封,写上相同的寄件人和收件人地址,然后分开寄出。这些信封就是数据包。每个数据包都携带源地址、目标地址和一部分数据。

路由器就是沿途的邮局。每个路由器只需要知道下一步往哪送,不需要知道整条路线。到达目的地后,数据包再按顺序拼回去。

flowchart LR
    A[你的电脑] --> B[家庭路由器]
    B --> C[你的 ISP]
    C --> D[骨干路由器]
    D --> E[服务器的数据中心]
    E --> F[网页服务器]

5. TCP 与 UDP:挂号信和明信片

寄这些信封有两种常见方式:

  TCP UDP
保证 送达、有序、丢了重发 什么都不保证
类比 带回执的挂号信 随手丢进邮筒的明信片
用途 网页、邮件、文件传输 视频通话、游戏、DNS 查询

6. HTTP 与 HTTPS:明信片和密封信

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

7. 串起来看:打开一个网站时发生了什么

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 是如何工作的 — 这段旅程会在哪里、以什么方式被阻断。