文/神们自己* 图/视觉中国

打开浏览器,我们就进入了互联网世界。互联网是由全球范围内的计算机组成的网络,通过标准的通信协议交换信息。简而言之,互联网是一个大型的计算机网络,让我们可以通过电子设备彼此连接。

你可能很难想象,蒂姆·伯纳斯·李在20 世纪80年代第一次发明互联网时,他的同事们竟然不知道这是一个即将改变世界的发明。没有人想到,短短几十年后,互联网就成为每个人生活中不可或缺的部分。互联网技术本身只是改变世界的工具,而真正改变世界的,是使用互联网的每一个人。

域名解析

当我们在浏览器中输入网址时,该网址实际上是一个域名。但计算机并不能理解这个域名,所以这时会发生一个叫作“域名解析”的过程,要用到DNS(Domain Name System,域名解析系统)。

DNS 就像一个囊括互联网世界的电话簿,它将域名映射到相应的IP 地址中。当我们在浏览器中输入域名时,浏览器会向我们的计算机或路由器中内置的DNS 服务器发送一个查询请求,询问该域名对应的IP 地址。如果DNS 服务器有这个域名对应的IP地址缓存,就会直接返回;否则,DNS 服务器会向其他DNS 服务器发送查询请求,直到找到域名对应的IP地址为止。

DNS 是一个分布式的系统,它由成千上万台位于世界各地的计算机和服务器组成。当我们访问一个从未访问过的网站时,域名解析需要一点时间(虽然很短),而电脑会缓存之前的域名解析结果,当我们再次访问该网站时,速度就会快得多。

浏览器获取域名对应的IP 地址后,就可以建立与服务器的连接,发送请求,并获取响应。这样,我们才能看到想要的网页或使用应用程序。DNS 是互联网中至关重要的一部分,如果没有它,我们就得记住所有网站的IP 地址才能上网——这是一件不可能的事情!

服务器响应

上网的本质就是聊天——计算机与计算机之间的聊天。我们点击鼠标,让电脑通过网线向另一台电脑(服务器)发送一个问题(比如网址),那台电脑(服务器)给你的电脑发送了一个回答(比如网页信息),我们再点击鼠标,继续发送新的问题……

网站其实就是一堆不同类型的文件的集合,包括Web 页面、图片、视频等。当我们用浏览器访问网站时,服务器就会向我们的电脑回以这些文件信息,让我们的电脑把这堆文件下载下来。浏览器读取这些文件,处理后显示在电脑屏幕上,变成我们看到的网页内容。

浏览器能够读取带有HTML 标记的文件。HTML是超文本标记语言(Hyper Text Markup Language)的缩写,它是Web 页面编程的基础,HTML 标记被用来描述网页的内容和结构。当浏览器发送请求后,服务器会将带有HTML 标记的文件发送回浏览器,浏览器会解析这些HTML 标记,并显示出网页内容。HTML 标记是一对尖括号标记出来的元素,如 表示文档结束, 表示头部信息, 表示网页主体,等等。这些标记简单易用,让开发人员可以方便地创建网站页面。

如果有1 亿人访问百度网站,搜索不同的关键词,按理说,百度服务器应该准备1 亿份不同的文件,但这样做既不现实,也毫无必要。每个人看到不同的网页结果是服务器从数据库中读取不同的数据,并通过算法处理后实时生成的。生成这些内容的程序称为“后端”,包括网站后台的代码和数据库,在服务器上运行。而服务器发送到我们电脑的程序文件则是后端输出或生成的内容,它在我们的电脑中运行,称为“前端”。

像百度这样服务10 亿多用户的大型网站,需要用大量服务器组成分布式集群,每一个服务器都在参与计算、提供服务,即使有几个服务器突然死机了,也不会对整体造成任何影响,网站仍然能够正常运行。这就是“云计算”解决的问题。

云计算

云计算是指使用互联网提供的各种计算资源来管理、存储和处理数据的方式。云计算是一种相对较新的技术,它将计算资源(如处理器、存储器等)分布在全球范围内的数据中心中,并通过互联网进行连接。用云计算来托管和运行网站与程序,是一种高度可伸缩、高度可靠且安全性强的方式。

云计算有多种形式,其中最常见的是基于虚拟化技术的云计算。在基于虚拟化的云计算中,物理服务器被划分为多个虚拟机,每个虚拟机可以运行不同的操作系统和程序。如果不用虚拟化技术,当程序运行出错时,可能会导致操作系统死机。但是,如果我们用虚拟化技术,在一台物理服务器中运行N 个操作系统,某个操作系统的出错或者死机被隔离在服务器内部,就不会造成物理服务器的死机。而且,每个虚拟机可以随时启动、关闭、升级或降级配置,从而实现资源的高度可伸缩性和灵活性运用。

互联网已经成为我们日常生活中不可或缺的一部分,我们早已习惯了通过它与朋友聊天、听音乐、看视频、玩游戏……如果你对互联网和计算机科学感兴趣,不妨尝试自学一些编程知识,以便更深入地了解互联网背后的工作原理,同时也可以为个人发展乃至职业生涯打下坚实的基础。