2月阅读周·HTTP权威指南:HTTP概述之资源篇
引言
HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。
《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。此外,这本书还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。
这本书主要包括以下内容:
- 第一部分描述了Web的基础构件与HTTP的核心技术
- 第二部分重点介绍了Web系统的结构构造块:HTTP服务器、代理、缓存、网关以及机器人应用程序。
- 第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。
- 第四部分涵盖HTTP报文主体和Web标准,前者包含实际内容,后者描述并处理主体内容。
- 第五部分介绍了发布和传播Web内容的技巧。
- 第六部分是一些很有用的参考附录,以及相关技术的教程。
HTTP概述
Web浏览器、服务器和相关的Web应用程序都是通过HTTP相互通信的。HTTP是现代全球因特网中使用的公共语言。
HTTP——因特网的多媒体信使
每天,都有数以亿万计的JPEG图片、HTML页面、文本文件、MPEG电影、WAV音频文件、Java小程序和其他资源在因特网上游弋。HTTP可以从遍布全世界的Web服务器上将这些信息块迅速、便捷、可靠地搬移到人们桌面上的Web浏览器上去。
HTTP使用的是可靠的数据传输协议,因此即使数据来自地球的另一端,它也能够确保数据在传输的过程中不会被损坏或产生混乱。这样,用户在访问信息时就不用担心其完整性了,因此对用户来说,这是件好事。而对因特网应用程序开发人员来说也同样如此,因为这样就无需担心HTTP通信会在传输过程中被破坏、复制或产生畸变了。开发人员可以专注于应用程序特有细节的编写,而不用考虑因特网中存在的一些缺陷和问题。
下面,就让我们来近距离地观察一下HTTP是如何传输Web流量的。
Web客户端和服务器
Web内容都是存储在Web服务器上的。Web服务器所使用的是HTTP协议,因此经常会被称为HTTP服务器。这些HTTP服务器存储了因特网中的数据,如果HTTP客户端发出请求的话,它们会提供数据。客户端向服务器发送HTTP请求,服务器会在HTTP响应中回送所请求的数据,HTTP客户端和HTTP服务器共同构成了万维网的基本组件。
可能你每天都在使用HTTP客户端。最常见的客户端就是Web浏览器,比如微软的Internet Explorer或网景的Navigator。Web浏览器向服务器请求HTTP对象,并将这些对象显示在你的屏幕上。
浏览一个页面时(比如https://www.baidu.com/index.php),浏览器会向服务器www.baidu.com发送一条HTTP请求(参见图1-1)。服务器会去寻找所期望的对象(在这个例子中就是/index.php),如果成功,就将对象、对象类型、对象长度以及其他一些信息放在HTTP响应中发送给客户端。
资源
Web服务器是Web资源(Web resource)的宿主。Web资源是Web内容的源头。最简单的Web资源就是Web服务器文件系统中的静态文件。这些文件可以包含任意内容:文本文件、HTML文件、微软的Word文件、Adobe的Acrobat文件、JPEG图片文件、AVI电影文件,或所有其他你能够想到的格式。
但资源不一定非得是静态文件。资源还可以是根据需要生成内容的软件程序。这些动态内容资源可以根据你的身份、所请求的信息或每天的不同时段来产生内容。它们可以为你显示照相机中活生生的照片,也可以帮你进行股票交易,搜索房产数据库,或者从在线商店中购买礼物。
总之,所有类型的内容来源都是资源。包含公司销售预测电子表格的文件是一种资源。扫描本地公共图书馆书架的Web网关是一种资源。因特网搜索引擎也是一种资源。
媒体类型
因特网上有数千种不同的数据类型,HTTP仔细地给每种要通过Web传输的对象都打上了名为MIME类型(MIME type)的数据格式标签。最初设计MIME(Multipurpose Internet Mail Extension,多用途因特网邮件扩展)是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。MIME在电子邮件系统中工作得非常好,因此HTTP也采纳了它,用它来描述并标记多媒体内容。
Web服务器会为所有HTTP对象数据附加一个MIME类型。当Web浏览器从服务器中取回一个对象时,会去查看相关的MIME类型,看看它是否知道应该如何处理这个对象。大多数浏览器都可以处理数百种常见的对象类型:显示图片文件、解析并格式化HTML文件、通过计算机声卡播放音频文件,或者运行外部插件软件来处理特殊格式的数据。
- MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。
- HTML格式的文本文档由text/html类型来标记。
- 普通的ASCII文本文档由text/plain类型来标记。
- JPEG格式的图片为image/jpeg类型。
- GIF格式的图片为image/gif类型。
- Apple的QuickTime电影为video/quicktime类型。
- 微软的PowerPoint演示文件为application/vnd.ms-powerpoint类型。
常见的MIME类型有数百个,实验性或用途有限的MIME类型则更多。附录D提供了一个非常完整的MIME类型列表。
URI
每个Web服务器资源都有一个名字,这样客户端就可以说明它们感兴趣的资源是什么了。服务器资源名被称为统一资源标识符(Uniform Resource Identifier, URI)。URI就像因特网上的邮政地址一样,在世界范围内唯一标识并定位信息资源。
这是Joe的五金商店的Web服务器上一个图片资源的URI:
http://www.joes-hardware.com/specials/saw-blade.gif
给定了URI, HTTP就可以解析出对象。URI有两种形式,分别称为URL和URN。现在我们分别来看看这些资源标识符类型。
URL
统一资源定位符(URL)是资源标识符最常见的形式。URL描述了一台特定服务器上某资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。图1-4显示了URL如何精确地说明某资源的位置以及如何去访问它。
大部分URL都遵循一种标准格式,这种格式包含三个部分。
- URL的第一部分被称为 方案(scheme),说明了访问资源所使用的协议类型。这部分通常就是HTTP协议(http://)。
- 第二部分给出了服务器的因特网地址(比如,www.joes-hardware.com)。
- 其余部分指定了Web服务器上的某个资源(比如,/specials/saw-blade.gif)。
现在,几乎所有的URI都是URL。
URN
URI的第二种形式就是统一资源名(URN)。URN是作为特定内容的唯一名称使用的,与目前的资源所在地无关。使用这些与位置无关的URN,就可以将资源四处搬移。通过URN,还可以用同一个名字通过多种网络访问协议来访问资源。
比如,不论因特网标准文档RFC 2141位于何处(甚至可以将其复制到多个地方),都可以用下列URN来命名它:
urn:ietf:rfc:2141
URN仍然处于试验阶段,还未大范围使用。为了更有效地工作,URN需要一个支撑架构来解析资源的位置。而此类架构的缺乏也延缓了其被采用的进度。但URN确实为未来发展作出了一些令人兴奋的承诺。我们将在第2章较为详细地讨论URN,而本书的其余部分讨论的基本上都是URL。
除非特殊说明,否则本书的其余部分都会使用约定的术语,并且会不加区别地使用URI和URL。
总结
Web服务器是Web资源(Web resource)的宿主。Web资源是Web内容的源头。最简单的Web资源就是Web服务器文件系统中的静态文件。这些文件可以包含任意内容:文本文件、HTML文件、微软的Word文件、Adobe的Acrobat文件、JPEG图片文件、AVI电影文件,或所有其他你能够想到的格式。
作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。
- 点赞
- 收藏
- 关注作者
评论(0)