Skip to content

一次网页访问的完整旅程

这是本站第一课。学完它,你会明白"输入网址到看见页面"这不到一秒的时间里,互联网为你跑了多少个来回。

一、角色介绍:这台戏有五个演员

在开始之前,先认识一下接下来反复出现的五个角色:

  • 浏览器(客户端):你电脑上的 Edge/Chrome,负责"提出请求"和"把响应画成页面"
  • DNS 服务器:互联网的"电话簿",负责把域名翻译成 IP 地址
  • 网络与路由:把数据包从你的电脑一跳一跳送到目的地的基础设施
  • Web 服务器:网站所在的主机,负责"接住请求、返回内容"(你的站就住在 Vercel 的服务器上)
  • 后端程序与数据库:动态网站里负责"算出响应内容、存取数据"的部分(纯静态站没有这两位,比如你的 myxbw.cn)

记住一句话:Web 的本质就是"客户端发请求,服务端给响应",其余一切都是在给这句话加细节。

二、第一步:查电话簿 —— DNS 解析

你在浏览器输入 www.myxbw.cn 并回车。注意,浏览器不认识域名,它只认识 IP 地址(比如 76.76.21.61)。所以第一件事是问 DNS:这个域名对应哪个 IP?

查询顺序大致是:浏览器缓存 → 操作系统缓存 → 本地 DNS 服务器(运营商或你配的 8.8.8.8)→ 根域名服务器 → .cn 顶级域 → 权威 DNS(myxbw.cn 的权威 DNS 就是你配的阿里云 dns19/20.hichina.com)→ 拿到最终 IP。

💡 动手实验 1:按 Win+R 输入 cmd 回车,在黑窗口里敲 nslookup www.myxbw.cn,你会亲眼看到域名被翻译成了哪些 IP。这些 IP 就是 Vercel 分配给你网站的节点。

三、第二步:建立连接 —— TCP 与 HTTPS 握手

拿到 IP 后,浏览器要与服务器建立 TCP 连接(经典的"三次握手":能听见吗→能→开聊)。由于你的站是 HTTPS,握手之后还要多一轮 TLS 握手:双方交换证书、协商加密密钥,之后所有数据都是密文传输。你在浏览器地址栏看到的小锁 🔒,就是对这一步的确认。

四、第三步:发出请求 —— HTTP 请求报文

连接就位,浏览器发出一条 HTTP 请求。它长得像这样(这就是你日后抓包时天天看的东西):

http
GET / HTTP/1.1
Host: www.myxbw.cn
User-Agent: Mozilla/5.0 ...
Accept: text/html
Cookie: (如果有)
  • 第一行:方法(GET=要数据)+ 路径(/ = 首页)+ 协议版本
  • 请求头:Host 说明要访问哪个站(一台服务器上可能住着很多站)、User-Agent 自报家门、Cookie 带上身份凭证
  • 请求体:GET 通常没有;POST 的数据放在这里

💡 动手实验 2:打开 https://www.myxbw.cn,按 F12 → 切到 Network(网络) 面板 → 刷新页面。点第一条请求,右侧就能看到真实的请求头和响应头——上面那段文字立刻不再抽象。

五、第四步:服务器干活 —— 找内容、算响应

请求到达 Vercel 的边缘节点后:

  • 静态站(你的两个站都是):服务器直接从分发好的文件里挑出对应的 HTML/JS/CSS 返回,快得像自动售货机
  • 动态站(比如以后你自己写的 PHP/Python 程序):后端代码会先执行——查数据库、算逻辑、拼页面——再把结果交出去

如果你配了防火墙规则,请求还会先过安检:我们在知识库部署的 block-scanner-paths 规则就是在这里把 /wp-admin/.env 这类扫描请求直接拦成 403 的。

六、第五步:拿到回执 —— HTTP 响应与状态码

服务器返回的响应也分两部分:状态行 + 响应头 + 响应体

http
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8

<!DOCTYPE html>...

状态码是服务器的一句话总结,先记五组:

状态码含义记忆场景
200成功页面正常打开
301/302永久/临时搬家myxbw.cn 跳到 www.myxbw.cn 就是 308
403拒绝防火墙拦截扫描器时的返回
404找不到路径写错了
500服务器内部出错网站代码崩了

七、第六步:渲染 —— 浏览器把代码变成页面

浏览器拿到 HTML 后开始解析渲染:读 HTML 搭建 DOM 树 → 遇到 CSS 算样式 → 遇到 JavaScript 执行脚本 → 页面里的 <img><link> 等标签还会触发更多的 HTTP 请求。所以你在 Network 面板里看到的不是一条请求,而是几十条——一条主文档加一堆资源,这正是下一阶段(前端三件套)的主角。

💡 动手实验 3:还是在 Network 面板,看页面加载到底发出了多少条请求、总共传了多少 KB。再点开 Doc 类型过滤,找到那条 HTML 主文档,看看它的响应头里有没有 x-frame-options: DENY——那是我们亲手加的安全响应头。

八、小结:把旅程串成一句话

text
输入网址 → DNS 查 IP → TCP/TLS 握手 → 发 HTTP 请求
→ 服务器(过防火墙 → 找内容/算逻辑)→ 返回 HTTP 响应 → 浏览器渲染 → 遇到资源再请求

这节课的所有概念——DNS、TCP、HTTPS、请求、响应、状态码、渲染——之后每一课都会反复出现。做完三个动手实验再往下走,下一课我们拆开 HTTP 报文逐个字段讲:《HTTP 请求与响应:报文结构详解》。

📎 本课对应知识库阅读:《SQL 注入》第二节(你已经能看懂示例里 ?id=1 是怎么从 URL 进入服务器的了)。

learn.myxbw.cn · 配套知识库 myxbw.cn