深入浅出 HTTPS:从原理到实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 什么是Web

Web是个非常宽泛的概念,不同的人群对它的理解也是不一样的,本节简单介绍其各个组成单元。

1.1.1 广义理解Web

说到HTTP(HyperText Transfer Protocol,超文本传输协议),读者都知道它是上网浏览信息的一种途径。互联网越来越流行,很多人为了查看新闻,打开一个浏览器,然后在地址栏输入一个URL,按下回车键,最后呈现的是一个HTML页面。用户如果对HTML页面中的某个链接(URL)比较感兴趣,会用鼠标单击该链接后打开一个新的HTML页面,浏览更多的信息,这就是Web, Web的中文名称是万维网,也被称为WWW(World Wide Web)。

在这个过程中,HTTP的作用是什么呢?在Web中,用户是信息的索取方,浏览Web信息的软件叫作客户端,最常见的客户端就是浏览器,比如Chrome和Firefox浏览器。信息的提供方叫作服务器,服务器负责信息的检索和发送。为了请求和响应数据,客户端和服务器通过HTTP来完成一系列的数据交换,读者不要认为HTTP负责数据传输,它实际上负责数据请求和响应,真正的数据传输由其他网络层处理,这在本书后续章节会描述。

上述的内容就是Web, Web确切地说是一种信息索取方式,是互联网的某个子应用。Web最核心的组成部分是HTTP, HTTP由服务器和客户端组成,有了HTTP,互联网上的不同终端才能够交换信息。

为什么说Web是互联网的某个应用之一呢?简单理解下互联网,TCP/IP网络协议成熟后,世界上任何设备只要支持TCP/IP,就会成为互联网上的一个终端。终端越多,互联网的力量就进一步增加,通信是手段,通信的目的是信息共享。

为了丰富互联网的应用,越来越多的软件和应用层协议产生了,Web就是其中最伟大的一个。Web是基于超文本相互关联而构成的互联网系统,除了Web应用,互联网还有其他的应用,比如邮件应用、FTP应用,广义上可以认为Web就是互联网。

1.1.2 Web的组成

当TCP/IP逐步流行后,数据传输变得非常容易,任何终端,不管是个人计算机还是手机设备,只要支持TCP/IP,数据就能够从世界上任意一端传输到另外一端,距离不再是问题。

但互联网上传输的数据只有计算机才能明白其中的含义,普通用户不理解传输的字节流,为了让接收方理解发送方发送的数据,计算机软件必须翻译这些字节流。为了让通信双方以同样的规则理解字节流,软件设计者必须定义一个标准,通信双方基于同样的标准才能理解数据的含义,这就是应用层HTTP的雏形,通过HTTP开发者不用额外创建通信规则,更有利于信息的传输和交换。

接下来考虑的一个问题是互联网数据类型,即数据代表的语义信息,文字是世界上最悠久的知识传播工具,在Web的早期,HTTP传输的数据就是简单的文本信息。Web发展到现阶段,数据类型越来越多,比如可以是视频、图片等元素,在HTTP中通过Content-Type头信息表示数据传输类型。

在互联网早期,信息共享是很重要的一个话题。某个组织有很多信息,如何将这些信息快速共享给互联网用户非常重要,或者说能否以较低的成本将信息发布到互联网上,其实这也是HTTP的功劳,只要有一个HTTP服务器就能够将信息发布到互联网上。

互联网接下来的一个挑战就是如何将互联网的信息串联在一起,HTTP被称为超文本传输协议,其中的超文本(HyperText)代表关联关系,就是可以从某个链接跳转到另外一个链接,每个链接在互联网上有一个URL, URL表示互联网某个资源的地址。

最终Web技术产生了,Web技术是Tim Berners-Lee教授在1980年提出的一个设想,主要包括三个技术,分别是HTML、URL、HTTP。即使到今天,Web模型也没有太大的变化。

1)HTTP

超文本传输协议,超文本就是HTML,传输表示由HTTP负责客户端和服务器的数据传输和解析。客户端发送一个HTTP请求至服务器,服务器响应该请求,将数据再发送给客户端。

HTTP由一系列规则组成,客户端和服务器需要正确的处理这些规则,HTTP可以认为是信息的载体,信息的内容是由HTML页面组成的。

2)URL

Web由很多资源组成,比如HTML页面、视频、图片,在互联网上每个资源都有一个编号,这个编号就是URL地址。服务器负责定义URL,世界上任何一个资源的编号是唯一的,客户端通过URL地址在互联网中找到该资源,URL的官方名称叫作统一资源标识符(Uniform Resource Locator)。

URL的规则定义如下:

        http://www.example.com:80/index.html

http表示资源需要通过HTTP这个协议才能够获取,换句话说,客户端需要通过HTTP这个协议请求这个资源。

www.example.com表示服务器地址,在互联网中每个服务器都有一个IP地址,但对于用户来说IP地址很难记住,用户一般只会记住服务器主机(比如www.example.com)名称。在HTTP中,客户端发送HTTP请求的时候,必须通过DNS协议将服务器主机名转换为IP地址,这样客户端才能找到服务器。

80是HTTP协议的默认端口(可以省略不输入),表示服务器通过80端口提供HTTP服务。

/index.html表示服务器在/根目录下有一个index.html资源。

这就是URL的全部,主要是定义资源的互联网地址,URL虽然和HTTP是紧密关联的,但在Web中是互相独立的。

3)HTML超文本标记语言

客户端(浏览器)通过HTTP接收的资源一般是一个HTML页面,用户并不理解HTML页面,必须由客户端(浏览器)将HTML页面转换为用户能理解的内容,本质上HTML也是一门语言。

在早期的互联网中,HTML页面包含的内容主要是文字,客户端(浏览器)只要在屏幕中打印出文字即可。为了更方便阅读,HTML语言定义了一些标记字符,客户端(浏览器)根据标记字符的含义对文字进行处理,比如<b></b>表示对文字进行加粗。

再后来,HTML页面组成越来越丰富,可以引入图片和视频等资源,让信息呈现更丰富。HTML页面可以通过外链的方式包含图片和视频等资源,这些资源也有完整的URL地址,相对HTML页面是独立存在的。

这就是HTML语言的全部,定义了一系列的规则,规则主要由客户端(浏览器)进行解析,为了让呈现更丰富,出现了CSS和JavaScript语言,它们存在的目的是辅助客户端(浏览器)处理,CSS是为了更丰富和精确地表现HTML内容,本质上还是HTML语言的一部分。

而JavaScript属于客户端脚本语言,只存在于客户端,本质上没有数据传输,它的作用是更好地控制浏览器解析,比如单击页面中的某个按钮,相当于在浏览器中执行了一个JavaScript动作,这个动作的含义可能是浏览器弹出一个对话框,它的运行属主是浏览器。通过JavaScript语言也可以间接访问非浏览器的信息,比如计算机上的Cookie信息,这也造成了很多HTTP安全问题。

Web技术推动了互联网的发展,HTTP也不是孤立存在的,在理解的时候务必要明白HTTP和其他两种技术的关系。