03 · 常用操作 · 网络
一个网页是怎么打开的
本篇你将学到
- 网址(URL)每一部分是什么意思
- 从按下回车到看到页面,中间的五步
- http 和 https 差在哪,为什么要认准 🔒
- “找不到服务器”“404”这些错误,分别卡在哪一步
先认识网址
网址(URL)是网上某个资源的唯一地址[1]:
https://www.example.com:443/docs/page.html?id=7
└─┬─┘ └──────┬──────┘ └┬┘ └──────┬─────┘ └─┬─┘
协议 域名 端口 路径 参数
- 协议:浏览器用什么方式去要。网站一般是 HTTPS,或者不加密的 HTTP[1]。
- 域名:要找哪台网站服务器(见 03-05)[1]。
- 端口:服务器上的哪扇“门”,通常省略不写[1](见 03-08)。
- 路径:服务器上的哪个资源;参数:给服务器的额外信息[1]。
浏览器是“客户”,服务器是存着网站、负责回答的电脑。总是浏览器先开口要,服务器再回答[2]。
五步打开一个网页
用“去一家没去过的店取快递”来比方:
| 步骤 | 做什么 | 比方 |
|---|---|---|
| ① DNS 查询 | 把域名翻译成 IP 地址 | 先查店的地址 |
| ② TCP 握手 | 和服务器建立连接 | 到门口敲门,对方应门 |
| ③ TLS 握手 | (仅 https)验明身份、商量加密 | 核对营业执照,换上只有你俩懂的暗号 |
| ④ HTTP 请求和响应 | 要页面,服务器把页面发回来 | 说要哪个件,店员递给你 |
| ⑤ 渲染 | 浏览器把代码画成你看到的页面 | 拆开包裹摆好 |
① DNS 查询:浏览器只知道域名,先要查到服务器的 IP。查过一次会缓存一段时间,下次就快了。页面里的图片、字体如果来自别的域名,每个域名都要查一次[3]。
② TCP 三次握手:浏览器和服务器来回发三条消息(SYN、SYN-ACK、ACK)建立连接[3]。TCP 保证数据按发送的顺序、完整地送到[4]。
③ TLS 握手:只有 https 才有这一步。双方商量用什么方式加密,浏览器还要验证服务器的身份,然后才开始传数据[3]。服务器必须出示有效的数字证书,证明“我就是这个网站”[5]。
④ HTTP 请求和响应:浏览器发出请求,比如 GET /(“请给我首页”);服务器回一个状态码和网页内容,比如 200 OK[2][3]。
⑤ 渲染:浏览器收到 HTML 就开始解析,算出每个元素的样式和位置,再画到屏幕上[3]。遇到图片、样式、脚本,它还会再去要这些文件。
http 和 https
HTTPS 就是加了密的 HTTP:用 TLS 把浏览器和服务器之间的所有通信加密[6]。TLS 能防止别人在路上偷看和篡改内容[5]。
- 用 http 时,你输的密码在路上是明文,同一个公共 Wi-Fi 里的人有机会看到。
- 用 https 时,路上的人只能看到一堆密文。地址栏有 🔒 只说明“连接是加密的,对方有有效证书”,不代表网站本身可信:钓鱼网站也可以有 🔒(见 03-10)。
- 登录、付款,只在 https 的网站上做。
出错了,卡在哪一步
| 你看到的 | 卡在 | 一般原因 |
|---|---|---|
| “找不到服务器”“无法访问此网站” | ① DNS | 网址打错,或 DNS 出问题 |
| “拒绝连接”“连接超时” | ② TCP | 网站服务器没开,或网络不通 |
| “你的连接不是私密连接”(证书警告) | ③ TLS | 证书过期、和域名不符,或有人在中间冒充 |
| 404 Not Found | ④ HTTP | 服务器找到了,但没有这个页面[7] |
| 5xx(比如 500、502、503) | ④ HTTP | 服务器自己出错了[7] |
状态码按第一位数字分成五类:1xx 信息、2xx 成功、3xx 重定向、4xx 客户端错误、5xx 服务器错误[7]。
遇到证书警告,别点“继续前往”,尤其是要输密码或付钱的网站。
动手看一看
一步一步看浏览器打开 www.example.com/login 的过程。切换 http / https,看看路上偷看的人能看到什么;再选一种故障,看它卡在哪一步。
—示意演示:真实浏览器还会复用连接、并行加载很多文件;地址 203.0.113.10 是文档专用的示例地址。
小结
- 网址 = 协议 + 域名 (+ 端口) + 路径 (+ 参数)。
- 打开网页五步:DNS 查地址 → TCP 建连接 → TLS 加密(https)→ HTTP 要内容 → 渲染。
- https 防偷看、防篡改,但 🔒 不等于网站可信。
- 看错误信息就能大致判断卡在哪一步。
参考资料
- [1]What is a URL? · MDN Web Docs
https://developer.mozilla.org/en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_URL - [2]An overview of HTTP · MDN Web Docs
https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Overview - [3]How browsers work · MDN Web Docs
https://developer.mozilla.org/en-US/docs/Web/Performance/Guides/How_browsers_work - [4]TCP(Glossary) · MDN Web Docs
https://developer.mozilla.org/en-US/docs/Glossary/TCP - [5]Transport Layer Security (TLS)(Glossary) · MDN Web Docs
https://developer.mozilla.org/en-US/docs/Glossary/TLS - [6]HTTPS(Glossary) · MDN Web Docs
https://developer.mozilla.org/en-US/docs/Glossary/HTTPS - [7]HTTP response status codes · MDN Web Docs(依据 RFC 9110)
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status