访问一个网站,看起来只是输入网址并按下回车,背后却涉及浏览器、URL、域名、DNS、IP 地址、端口和服务器等多个部分。本文从一次完整的网页访问出发,梳理这些概念之间的关系。


浏览器、HTML 与服务器

浏览器是 Web 的客户端。它负责向服务器请求资源,解析服务器返回的内容,并将其渲染成用户看到的网页。

HTML 是用于描述网页结构的文本格式。它定义页面中的标题、段落、链接和图片等内容。浏览器读取 HTML 后,会按照其中的结构生成网页。

服务器是一台运行服务程序的计算机。它持续监听网络请求,并根据请求返回 HTML、CSS、JavaScript、图片或接口数据等内容。

三者之间的基本关系是:

1
2
3
4
5
浏览器请求网页

服务器返回 HTML 等资源

浏览器解析并渲染网页

URL

URL 是网络资源的完整地址。例如:

1
https://example.com:443/articles/hello

这个 URL 可以拆分为:

1
2
3
4
https               协议
example.com 域名
443 端口
/articles/hello 资源路径

协议规定浏览器和服务器使用什么方式通信;域名用于标识网站;端口用于定位服务器上的具体服务;路径用于指定要访问的资源。

如果使用默认端口,端口号通常可以省略,因此下面两个 URL 是等价的:

1
2
https://example.com/articles/hello
https://example.com:443/articles/hello

域名、DNS 与 IP 地址

IP 地址用于定位网络中的设备。浏览器只有获得服务器的 IP 地址,才能与服务器建立网络连接。

1
120.55.66.77

由于 IP 地址不便记忆和传播,人们通常使用域名访问网站,例如:

1
2
github.com
tianlejin.top

域名是方便人类使用的名称,IP 地址才是网络通信时用于定位服务器的地址。DNS 负责建立二者之间的联系:

1
域名 → DNS 查询 → IP 地址

浏览器访问一个域名时,会先通过 DNS 查询对应的 IP 地址,再根据该地址找到目标服务器。

域名与 IP 地址并不一定是一对一关系。一个域名可以对应多个 IP 地址,以便进行负载均衡或就近访问;多个域名也可以指向同一个 IP 地址,由服务器根据域名返回不同的网站。


国内外域名接入的差异

无论服务器位于国内还是国外,DNS 的技术原理都基本相同:

1
2
3
4
5
配置 DNS 记录

域名解析到 IP 地址

浏览器访问对应服务器

最常见的 DNS 记录包括:

1
2
3
A 记录       将域名指向 IPv4 地址
AAAA 记录 将域名指向 IPv6 地址
CNAME 记录 将域名指向另一个域名

如果网站部署在中国大陆以外的服务器上,通常可以在注册域名后直接配置 DNS 解析、部署网站并配置 HTTPS,一般不需要办理中国大陆的 ICP 备案。

如果网站使用中国大陆的服务器并通过域名向公众提供服务,通常需要先完成 ICP 备案。备案一般通过服务器所属的云服务商提交,审核通过后才能正式接入网站。网站上线后还应按要求在页面底部展示备案号;符合条件的网站通常还需要办理公安联网备案。

因此,国内外的主要区别并不在 DNS 解析技术本身,而在网站接入和运营所需遵守的合规要求。

需要区分以下三个概念:

1
2
3
域名注册    取得域名的使用权
DNS 解析 建立域名与 IP 地址之间的映射
ICP备案 在中国大陆提供网站服务时的合规手续

服务器位于中国香港、中国澳门或境外时,通常不适用中国大陆服务器的 ICP 备案接入要求,但仍需遵守服务器所在地及相关服务商的规定。


IP 地址与端口

IP 地址只能定位到一台设备,而一台服务器上通常会同时运行多个服务。端口用于进一步确定要访问的是哪一个服务。

1
2
IP 地址    定位服务器
端口号 定位服务器上的具体服务

Web 服务最常见的端口是:

1
2
80     HTTP 默认端口
443 HTTPS 默认端口

访问下面两个地址时,浏览器会自动使用对应的默认端口:

1
2
http://example.com     → 80 端口
https://example.com → 443 端口

使用非默认端口时,通常需要在 URL 中明确写出端口号:

1
http://example.com:8080

HTTPS 比 HTTP 多了一层 TLS 加密,可以防止传输内容被直接窃听或篡改。443 端口本身并不会产生安全性,真正提供保护的是 HTTPS 所使用的加密机制。


Web 请求与响应流程

浏览器和服务器通常通过 HTTP 或 HTTPS 进行通信。浏览器作为客户端发送请求,服务器接收并处理请求,然后返回响应。响应中可以包含 HTML、CSS、JavaScript、图片或接口数据。

以访问下面的 URL 为例:

1
https://example.com/articles/hello

完整的访问过程如下:

  1. 浏览器解析 URL,得到协议、域名、端口和资源路径。
  2. 浏览器通过 DNS 查询 example.com 对应的 IP 地址。
  3. 浏览器根据 IP 地址找到目标服务器。
  4. 浏览器连接服务器的 443 端口,并建立 HTTPS 加密连接。
  5. 浏览器向服务器请求 /articles/hello
  6. 服务器处理请求,并返回状态码、响应头和 HTML 等响应内容。
  7. 浏览器解析 HTML,继续请求其中引用的 CSS、JavaScript 和图片。
  8. 浏览器执行脚本、计算页面布局并完成页面渲染。

整条链路可以概括为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
URL

解析协议、域名、端口和路径

DNS 将域名解析为 IP 地址

通过 IP 地址定位服务器

通过端口定位 Web 服务

浏览器发送 HTTP/HTTPS 请求

服务器返回 HTML 等资源

浏览器解析并渲染网页

在这条链路中:

  • URL 描述需要访问的网络资源。
  • 域名提供便于记忆的网站名称。
  • DNS 将域名解析为 IP 地址。
  • IP 地址用于定位目标服务器。
  • 端口用于定位服务器上的 Web 服务。
  • HTTP 或 HTTPS 规定浏览器与服务器交换信息的方式。
  • 服务器负责处理请求并返回资源。
  • 浏览器负责解析资源并渲染页面。

参考资料