从零开始
目录

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,看看路上偷看的人能看到什么;再选一种故障,看它卡在哪一步。

模拟演示 · 打开一个网页完成 0 / 4
    💻你的浏览器
    📒DNS 服务器
    🗄️网站服务器
    🕵️路上偷看的人看到:—

      示意演示:真实浏览器还会复用连接、并行加载很多文件;地址 203.0.113.10 是文档专用的示例地址。

      小结

      • 网址 = 协议 + 域名 (+ 端口) + 路径 (+ 参数)。
      • 打开网页五步:DNS 查地址 → TCP 建连接 → TLS 加密(https)→ HTTP 要内容 → 渲染。
      • https 防偷看、防篡改,但 🔒 不等于网站可信。
      • 看错误信息就能大致判断卡在哪一步。

      参考资料

      1. [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. [2]An overview of HTTP · MDN Web Docs
        https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Overview
      3. [3]How browsers work · MDN Web Docs
        https://developer.mozilla.org/en-US/docs/Web/Performance/Guides/How_browsers_work
      4. [4]TCP(Glossary) · MDN Web Docs
        https://developer.mozilla.org/en-US/docs/Glossary/TCP
      5. [5]Transport Layer Security (TLS)(Glossary) · MDN Web Docs
        https://developer.mozilla.org/en-US/docs/Glossary/TLS
      6. [6]HTTPS(Glossary) · MDN Web Docs
        https://developer.mozilla.org/en-US/docs/Glossary/HTTPS
      7. [7]HTTP response status codes · MDN Web Docs(依据 RFC 9110)
        https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status