了解蒂姆·伯纳斯-李如何将 URL、HTTP 和 HTML 结合成万维网——以及为什么这些简单理念仍驱动现代应用与 API。

万维网(通常简称“Web”)是一种使用链接发布和访问信息的方式。它让你可以从一个页面点击到另一个页面、从搜索结果打开产品页,或分享一个几乎在任何电脑或手机上都可用的链接。
从核心上讲,Web 由一个实用的三件套驱动:
你不需要成为程序员就能感受它们的影响:每次你粘贴链接、加载页面或点击带你到其他地方的按钮时,都是在依赖 URL + HTTP + HTML。
人们常把“Web”和“Internet”混用,但它们不同:
电子邮件、在线游戏和许多聊天应用在严格意义上并不是“Web”,但它们使用互联网。
即使是现代体验——单页应用、移动应用和 API——仍然在很大程度上依赖这些基础。它们可能会隐藏细节,但仍使用 URL 来标识资源、HTTP 来交换请求和响应,并且通常使用 HTML 来引导浏览器显示内容。
蒂姆·伯纳斯-李并不是想发明“互联网”。1989 年在 CERN 工作时,他关注的是一个实际的痛点:重要信息存在但散落在不兼容的系统中,以不同格式存储且难以再次找到。
研究人员、团队和各部门使用不同的计算机和软件。即使两组拥有“相同”类型的文档,也可能存放在不同位置、命名不同,或需要特定程序才能打开。共享常常意味着文件被到处传来传去,复制副本,并且难以追踪哪个版本是最新的。
伯纳斯-李的核心想法是让任何人在他们自己的计算机上发表文档,然后让其他人通过一致的方法访问它——无需了解机器类型、操作系统或内部目录结构。
这需要几样东西协同工作:
真正的突破不是某个单一功能,而是决定保持系统小而通用。如果规则足够简单,不同的计算机和组织可以实现这些规则并彼此通信。
这也是为什么开放标准从一开始就很重要:Web 需要共享的、公开的规则,使许多独立系统能够参与。这种对通用标准的重视——而不是某个厂商的工具链——使得 Web 能迅速传播,新浏览器和服务器可以与已有内容配合工作。
如果你曾试图在杂乱的办公盘里“分享文件”,就会看到网络的核心问题:一致命名东西很难。不同计算机把信息储存在不同位置,文件夹会被重组,两个文档可能拥有相同的文件名。没有共享命名系统,你无法可靠地说“去拿那边的那个东西”。
URL 为万维网解决了这个问题,提供了一个通用、可复制粘贴的资源地址。
https://www.example.com:443/products/shoes?color=black\u0026size=42#reviews
各部分的含义(通俗解释):
URL 可以标识服务器可以返回的几乎任何东西:HTML 页面、图片、PDF、可下载文件,甚至是应用使用的 API 端点。
例如:
/images/logo.png(一张图片)/docs/terms.pdf(一个文档)/api/orders/123(应用的数据)人们常把这些词互换使用:
实际应用中,把 “URL = 地址” 视作足够覆盖 95% 的场景即可。
HTTP 是 Web 的基本对话风格。核心就是:你的浏览器请求某样东西,服务器回复它所拥有的内容或解释为何无法提供。
当你输入一个 URL 或点击链接时,浏览器向服务器发送一个 HTTP 请求。请求就像一张便条,写着:“我要这个特定的资源。”
然后服务器发送回一个 HTTP 响应。响应是包含结果的包:你请求的内容(如页面),或说明发生了其他情况的消息。
HTTP 请求包含一个方法,表示你要执行的动作类型。
GET 通常不会改变服务器上的任何东西;它主要用于读取。POST 常用于发送需要处理的信息。
每个响应都包含一个状态码——把它看作投递结果的标签。
请求与响应还包含 头部,类似标签:"这是谁发的"、"我能接受什么"、或"该如何处理这个内容"。
最有用的标签之一是 Content-Type,例如 text/html(网页)或 application/json(数据)。它告诉浏览器包裹里是什么,以便正确显示。
HTML(超文本标记语言)是描述网页结构的格式——内容是什么以及如何组织的方式。把它想象成带标签的文档:“这是标题”、“这是段落”、“这是链接”、“这是表单字段”。
HTML 用标签来标注内容。标签通常有开始和结束版本,包裹它所描述的内容。
标题和段落赋予页面形状。标题告诉人和浏览器“这是一个重要的章节标题”。段落告诉它们“这是正文文本”。
图片和链接也用 HTML 描述。图片标签指向图像文件(资源),链接标签指向另一个 URL。
HTML 中的“HT”(超文本)是让 Web 与早期系统不同的关键想法。你不再只能通过菜单、文件夹或特殊命令导航,而可以直接点击嵌入文本中的链接,从一个文档跳到另一个文档。
这个变化看似简单,但非常强大:知识变得互联。页面可以即时引用来源、相关主题、定义和后续步骤——不必每次都回到中央索引。
\u003ca href=\"/blog/how-http-works\"\u003eRead more about HTTP\u003c/a\u003e
通俗来说:“显示文字 Read more about HTTP,当点击时带读者到 /blog/how-http-works 页面。”
HTML 不只是用于发布文档。它还可以描述输入元素,如文本框、复选框和按钮。这些元素允许页面收集信息(比如登录、搜索或结账)并将其发送到服务器。
容易混淆,但三者职责不同:
即便网页应用变得更复杂,HTML 仍然是起点:它是可读且共享的方式,描述页面包含什么——以及接下来可以通往哪里。
当你访问一个网站时,浏览器基本上在做两件事:找到要通信的计算机,并请求正确的文件。
一个 URL(如 https://example.com/page)是页面的地址。它包含主机名(example.com)及通常的路径(/page)。
互联网上的计算机使用数字地址称为 IP 地址 进行通信。DNS(域名系统)就像电话簿,将 example.com 映射为一个 IP 地址。
此查询通常很快——有时会跳过,因为答案已被近期访问缓存。
现在浏览器打开与该 IP 地址服务器的连接。如果 URL 以 https:// 开头,浏览器还会建立加密连接,以防他人轻易读取传输内容。
HTTP 是 Web 的“请求—响应”语言。浏览器发送类似“请给我 /page”的 HTTP 请求。
服务器回复一个 HTTP 响应,包含状态(如“OK”或“Not Found”)和内容。
内容通常是 HTML(超文本标记语言)。HTML 描述页面结构——标题、段落、链接等。
浏览器在读取 HTML 时,可能会发现还需要其他文件(CSS、JavaScript、图片、字体)。它会为每个文件重复同样的 HTTP 请求/响应过程。
为了提速,浏览器会保留一个 缓存——已下载文件的保存副本。如果内容未改变,浏览器可以重用该副本而不是重新下载。
快速清单(流程):
当人们说“Web”时,通常指的是平滑的体验:点一下链接页面就出现。在表面之下,是服务器、浏览器和资源三者之间的简单关系。
服务器 是一台(或一组)连接到互联网的计算机,它在 URL 下托管资源。如果 URL 是地址,服务器就是接待该地址访问者并决定返回什么的地方。
服务器发送的“东西”可能是网页、文件或数据。关键是服务器被配置为回应针对特定 URL 的请求。
浏览器 是一个程序(如 Chrome、Safari 或 Firefox),它 获取服务器上的资源 并以人类友好的方式 显示 它们。
当你输入 URL 或点击链接时,浏览器会:
资源 是 Web 能识别并在 URL 下交付的任何东西。常见示例包括:
这个模型不限于浏览器。移动应用也可以请求 URL——通常是 Web API 端点——并在应用自己的界面中显示数据。角色保持不变:应用作为“客户端”,服务器作为“主机”,API 响应作为资源。
早期网页大多只展示信息。表单让 Web 能收集信息——把页面变成双向对话。
HTML 表单是一组结构化字段(如文本框、复选框和按钮)以及两个关键指令:
action URL)method,通常为 GET 或 POST)当你点击“提交”时,浏览器把你输入的内容打包并用 HTTP 发送到该 URL。这就是“带字段的文档”与“处理输入的应用”之间的桥梁。
总体上:
所以搜索可能是 /search?q=shoes(GET),而结账提交可能把订单详情 POST 到 /checkout。
在服务器端,一个程序接收 HTTP 请求,读取提交的值,然后决定下一步:
服务器随后会响应——常见为新的 HTML 页面(“感谢!”)、错误信息或跳转到另一个 URL。
如果表单包含敏感信息——密码、地址、支付信息——HTTPS 是必须的。它能防止网络上的其他人读取或篡改浏览器与站点之间发送的内容。没有它,即便是简单的登录表单也可能泄露用户信息。
现代的“应用”不仅仅是网页。大多数是 网页 + 代码:一个 HTML 页面加载 JavaScript 和 CSS,然后用这些代码更新界面而无需频繁刷新整个页面。
即便一个应用看起来像原生程序(无限滚动、实时更新、拖放),它仍然依赖于蒂姆·伯纳斯-李引入的那三个基石。
URL 不只是用于“页面”。它是任何资源的地址:商品、用户资料、搜索查询、照片或“发送消息”端点。好的应用使用 URL 使内容可分享、可书签、可链接——这是 Web 的核心行为。
在幕后,应用发送 HTTP 请求并接收 HTTP 响应,就像传统网站一样。无论你是在获取 HTML 页面还是加载部分屏幕的数据,规则相同:
大多数现代应用与 API 交互:通过 HTTP 返回数据(通常是 JSON)的 URL。
例如:
HTML 仍然重要,因为它常是起点(有时也是退路)。更广而言,Web 是一个集成平台:如果系统能在 URL 和 HTTP 上达成一致,它们就能互联——无论谁构建它们。
一种实用的方式是动手做点小项目——比如构建一个 React 前端,与 JSON API 通信,并为关键屏幕提供可分享的 URL。像 Koder.ai 这样的工具也遵循同样的模型:你在聊天里描述应用,它生成标准的 Web 技术栈(前端 React、后端 Go + PostgreSQL),因此你仍在使用真实的 URL、HTTP 端点和浏览器交付的 HTML——只是手动配置少了很多。
Web 能在全球范围内运作,是因为它建立在共享标准之上——公开的“交通规则”,让不同系统可靠地通信。一个厂商的浏览器可以请求另一个厂商运行的服务器上的页面,托管在任何地方、用任何编程语言编写,因为它们在 URL、HTTP 和 HTML 等基础上达成一致。
没有标准,每个站点都需要一个自定义的查看应用,每个网络都有自己的请求传输方式。标准化解决了几个简单但关键的问题:
当这些规则一致时,Web 变得“混搭”:任何合规的浏览器 + 任意合规的服务器 = 它能工作。
令人印象深刻的是,标准可以改进而不丢失基本特征。HTTP 从早期版本发展到 HTTP/1.1,再到 HTTP/2 与 HTTP/3,带来更好的性能和效率。然而核心思想保持不变:客户端请求 URL,服务器以状态码、头部和主体响应。
HTML 也在成长——从简单文档到更丰富的语义与嵌入媒体——同时保留页面和超链接的基本概念。
Web 能长久存在,很大程度上源于对向后兼容的偏好。新浏览器仍尝试渲染旧页面;新服务器仍理解旧的 HTTP 请求。这意味着内容和链接可以存在多年——往往是几十年。
如果你希望网站或应用经久耐用,依赖基于标准的设计:为可分享状态使用真实 URL,遵循 HTTP 的缓存与状态码惯例,并在添加额外层之前先编写有效的 HTML。标准并不限制你——它们让你的工作更具可移植性、可靠性和面向未来。
即便你每天使用 Web,有些术语也经常被混淆,可能悄悄破坏故障排查、规划或简单对话。这里列出常见的混淆及最快的纠正方法。
误解: 互联网和万维网是同一件事。
快速纠正: 互联网 是全球网络(电缆、路由器、连接)。万维网 是运行在其之上的服务,由 URL、HTTP 和 HTML 构成。
误解: “我的 URL 是 example.com。”
快速纠正: example.com 是一个 域名。一个 URL 可以包含路径和查询等更多细节,例如:
https://example.com/pricing(特定路由)https://example.com/search?q=shoes(路由加查询)这些额外部分会改变服务器返回的内容。
误解: HTML 与 HTTP 可以互换。
快速纠正: HTTP 是“传递对话”(请求与响应)。HTML 是可以被传递的“包裹”之一——通常用于描述页面及其链接。HTTP 也可以传输 JSON 数据、图片、PDF 或视频。
误解: 任何错误都意味着“网站无法访问”,重定向总是有问题。
快速纠正: 状态码是信号:
误解: 每个 URL 都应打开一个可读页面。
快速纠正: URL 可以指向数据(/api/orders)、文件(/report.pdf)或表单提交的动作端点。
误解: 有 HTTPS 就说明网站安全可靠。
快速纠正: HTTPS 加密连接并帮助确认你连接的是正确域名——保护登录和表单等敏感信息在传输中不被窃听或篡改。但它并不保证网站本身诚信或值得完全信赖。你仍需评估来源、内容与上下文。
蒂姆·伯纳斯-李的核心想法出人意料地小:用共享的命名方案、共享的请求方式和共享的展示格式把文档(后来扩展为应用)连接起来。
URL 是地址。它告诉你你想要什么和它在哪里(以及通常如何访问)。
HTTP 是对话。它是浏览器与服务器用来请求与回复的规则集合(状态码、头部、缓存等)。
HTML 是页面格式。浏览器可读以渲染内容——并且,关键地,它在页面内部建立链接把资源相连。
把 Web 想成一个简单的三步循环:
掌握这个循环后,现代细节(Cookie、API、单页应用、CDN)就更容易理解:它们通常是对命名、请求或渲染的细化。
理解这些基础能迅速带来价值:你会更擅长评估网络工具(“这是否依赖 URL 与标准的 HTTP?”)、与开发者交流,并排查日常问题,如断链、缓存意外或 “404 与 500” 错误。
互联网是连接计算机的全球网络(路由器、电缆、IP 路由)。万维网是在其上运行的一种服务:由URL标识的资源,通过HTTP传输,并通常以HTML展示。
许多事物使用互联网但并非“万维网”,例如电子邮件、一些多人游戏以及许多聊天系统。
把 URL 想象成资源的精确地址。它可以指向 HTML 页面、图片、PDF 或 API 端点。
典型的 URL 包含:
https)— 如何访问它域名(像 example.com)只是主机的名称。URL 可以包含更多细节——比如路径和查询——这会改变服务器返回的内容。
例如:
https://example.com/pricinghttps://example.com/search?q=shoes片段(以 # 开头的部分)由浏览器处理,不会在 HTTP 请求中发送给服务器。
常见用法:
#reviews)仅修改片段往往不会触发完整页面重载。
HTTP 是客户端(浏览器/应用)与服务器之间进行请求—响应对话的规则。
实际上:
当你要获取某些东西(只读、可被书签和分享)时用 GET,例如加载页面或获取数据。
当你要提交需要处理的数据时用 POST,例如创建帐号、发表评论或提交订单。
实用提示:如果操作应当可被书签或分享(像搜索),优先考虑 GET;如果会改变服务器状态,通常用 POST。
状态码概括了请求的结果:
排查时, 往往意味着 URL 错误或页面被删除; 通常指服务器端的错误或故障。
浏览器需要一个 IP 地址 来连接服务器。DNS 是把人类可读的域名(如 example.com)翻译成 IP 地址的系统。
如果某个站点有时无法解析,DNS 常常是原因之一——尤其是在一个网络或设备上无法解析但在另一个上可以的情况下。
缓存是浏览器保存已下载资源副本以加快重复访问速度的机制。
实用影响:
服务器通过 HTTP 头部(如缓存寿命和重验证策略)控制大量缓存行为。
HTTPS 对传输内容进行加密,能帮助确认你连接的是期望的域名,从而保护登录、表单和敏感数据在传输过程中的安全。
但它不等于网站值得信任。你仍需评估:
example.com/products/shoes)— 哪个资源?color=black)— 附加参数#reviews)— 页面内的位置(由浏览器处理)