【全栈开发 1】Web 访问链路基础
访问一个网站,看起来只是输入网址并按下回车,背后却涉及浏览器、URL、域名、DNS、IP 地址、端口和服务器等多个部分。本文从一次完整的网页访问出发,梳理这些概念之间的关系。
浏览器、HTML 与服务器
浏览器是 Web 的客户端。它负责向服务器请求资源,解析服务器返回的内容,并将其渲染成用户看到的网页。
HTML 是用于描述网页结构的文本格式。它定义页面中的标题、段落、链接和图片等内容。浏览器读取 HTML 后,会按照其中的结构生成网页。
服务器是一台运行服务程序的计算机。它持续监听网络请求,并根据请求返回 HTML、CSS、JavaScript、图片或接口数据等内容。
三者之间的基本关系是:
1 | 浏览器请求网页 |
URL
URL 是网络资源的完整地址。例如:
1 | https://example.com:443/articles/hello |
这个 URL 可以拆分为:
1 | https 协议 |
协议规定浏览器和服务器使用什么方式通信;域名用于标识网站;端口用于定位服务器上的具体服务;路径用于指定要访问的资源。
如果使用默认端口,端口号通常可以省略,因此下面两个 URL 是等价的:
1 | https://example.com/articles/hello |
域名、DNS 与 IP 地址
IP 地址用于定位网络中的设备。浏览器只有获得服务器的 IP 地址,才能与服务器建立网络连接。
1 | 120.55.66.77 |
由于 IP 地址不便记忆和传播,人们通常使用域名访问网站,例如:
1 | github.com |
域名是方便人类使用的名称,IP 地址才是网络通信时用于定位服务器的地址。DNS 负责建立二者之间的联系:
1 | 域名 → DNS 查询 → IP 地址 |
浏览器访问一个域名时,会先通过 DNS 查询对应的 IP 地址,再根据该地址找到目标服务器。
域名与 IP 地址并不一定是一对一关系。一个域名可以对应多个 IP 地址,以便进行负载均衡或就近访问;多个域名也可以指向同一个 IP 地址,由服务器根据域名返回不同的网站。
国内外域名接入的差异
无论服务器位于国内还是国外,DNS 的技术原理都基本相同:
1 | 配置 DNS 记录 |
最常见的 DNS 记录包括:
1 | A 记录 将域名指向 IPv4 地址 |
如果网站部署在中国大陆以外的服务器上,通常可以在注册域名后直接配置 DNS 解析、部署网站并配置 HTTPS,一般不需要办理中国大陆的 ICP 备案。
如果网站使用中国大陆的服务器并通过域名向公众提供服务,通常需要先完成 ICP 备案。备案一般通过服务器所属的云服务商提交,审核通过后才能正式接入网站。网站上线后还应按要求在页面底部展示备案号;符合条件的网站通常还需要办理公安联网备案。
因此,国内外的主要区别并不在 DNS 解析技术本身,而在网站接入和运营所需遵守的合规要求。
需要区分以下三个概念:
1 | 域名注册 取得域名的使用权 |
服务器位于中国香港、中国澳门或境外时,通常不适用中国大陆服务器的 ICP 备案接入要求,但仍需遵守服务器所在地及相关服务商的规定。
IP 地址与端口
IP 地址只能定位到一台设备,而一台服务器上通常会同时运行多个服务。端口用于进一步确定要访问的是哪一个服务。
1 | IP 地址 定位服务器 |
Web 服务最常见的端口是:
1 | 80 HTTP 默认端口 |
访问下面两个地址时,浏览器会自动使用对应的默认端口:
1 | http://example.com → 80 端口 |
使用非默认端口时,通常需要在 URL 中明确写出端口号:
1 | http://example.com:8080 |
HTTPS 比 HTTP 多了一层 TLS 加密,可以防止传输内容被直接窃听或篡改。443 端口本身并不会产生安全性,真正提供保护的是 HTTPS 所使用的加密机制。
Web 请求与响应流程
浏览器和服务器通常通过 HTTP 或 HTTPS 进行通信。浏览器作为客户端发送请求,服务器接收并处理请求,然后返回响应。响应中可以包含 HTML、CSS、JavaScript、图片或接口数据。
以访问下面的 URL 为例:
1 | https://example.com/articles/hello |
完整的访问过程如下:
- 浏览器解析 URL,得到协议、域名、端口和资源路径。
- 浏览器通过 DNS 查询
example.com对应的 IP 地址。 - 浏览器根据 IP 地址找到目标服务器。
- 浏览器连接服务器的 443 端口,并建立 HTTPS 加密连接。
- 浏览器向服务器请求
/articles/hello。 - 服务器处理请求,并返回状态码、响应头和 HTML 等响应内容。
- 浏览器解析 HTML,继续请求其中引用的 CSS、JavaScript 和图片。
- 浏览器执行脚本、计算页面布局并完成页面渲染。
整条链路可以概括为:
1 | URL |
在这条链路中:
- URL 描述需要访问的网络资源。
- 域名提供便于记忆的网站名称。
- DNS 将域名解析为 IP 地址。
- IP 地址用于定位目标服务器。
- 端口用于定位服务器上的 Web 服务。
- HTTP 或 HTTPS 规定浏览器与服务器交换信息的方式。
- 服务器负责处理请求并返回资源。
- 浏览器负责解析资源并渲染页面。
参考资料
- 零到全栈·模块 2.3:互联网是怎么工作的: https://slides.李勃老师.com/slides-zero-to-tech/slides-模块2.3.html
