一、HTTP概述(1)

2018-07-11  本文已影响0人  Heyman618

       Web浏览器、服务器和相关的Web应用程序都是通过HTTP相互通信的。HTTP是现代全球因特网中使用的公共语言。

       本章是对HTTP的简要介绍。在本章中可以看到Web应用程序是如何使用HTTP进行通信的,这样就可以对HTTP如何完成其工作有个大概印象。我们将特别介绍以下方面的内容:

       • Web客户端与服务器是如何通信的;

       • (表示Web内容的)资源来自何方;

       • Web事务是怎样工作的;

       • HTTP通信所使用的报文格式;

       • 底层TCP网络传输;

       • 不同的HTTP协议变体;

       • 因特网上安装的大量HTTP架构组件中的一部分。

       我们有很多话题要讨论,就此开始HTTP之旅吧。

1.1  HTTP——因特网的多媒体信使

       每天,都有数以亿万计的JPEG图片、HTML页面、文本文件、MPEG电影、WAV音频文件、Java小程序和其他资源在因特网上游弋。HTTP可以从遍布全世界的Web将这些信息块迅速、便捷、可靠地搬移到人们桌面上的Web浏览器上去。

       HTTP使用的是可靠的数据传输协议,因此即使数据来自地球的另一端,它也能够确保数据在传输的过程中不会被损坏或产生混乱。这样,用户在访问信息时就不用担心其完整性了,因此对用户来说,这是件好事。而对因特网应用程序开发人员来说也同样如此,因为这样就无需担心HTTP通信会在传输过程中被破坏、复制或产生畸变了。开发人员可以专注于应用程序特有细节的编写,而不用考虑因特网中存在的一些缺陷和问题。

       下面,就让我们来近距离地观察一下HTTP是如何传输Web流量的。

1.2  Web客户端和服务器

       Web内容都是存储在Web服务器上的。Web服务器所使用的是HTTP协议,因此经常会被称为HTTP服务器。这些HTTP服务器存储了因特网中的数据,如果HTTP客户端发出请求的话,他们会提供数据。客户端向服务器发送HTTP请求,服务器会在HTTP响应中回送所请求的数据,如果1-1所示。HTTP客户端和HTTP服务器共同构成了万维网的基本组件。

图1-1  Web客户端和服务器

       可能你每天都在使用HTTP客户端。最常见的客户端就是Web浏览器,比如微软的Internet Explorer或网景的Navigator。Web浏览器向服务器请求HTTP对象,并将这些对象显示在你的屏幕上。

       浏览一个页面时(比如http://www.oreilly.com/index.html),浏览器会向服务器www.oreilly.com发送一条HTTP请求(参见图1-1)。服务器回去寻找所期望的对象(在这个例子中就是/index.html),如果成功,就将对象、对象类型、对象长度以及其他一些信息放在HTTP相应中发送给客户端。

1.3  资源

       Web服务器是Web资源(Web resource)的宿主。Web资源是Web内容的源头。最简单的Web资源就是Web服务器文件系统中的静态文件。这些文件可以包含任意内容:文本文件、HTML文件、微软的Word文件、Adobe的Acrobat文件、JPEG图片文件、AVI电影文件,或所有其他你能够想到的格式。

       但资源不一定非得是静态文件。资源还可以是根据需要生成内容的软件程序。这些动态内容资源可以根据你的身份、所请求的信息或每天的不同时段来产生内容。它们可以为你显示照相机中活生生的照片,也可以帮你进行股票交易,搜索房产数据库,或者从在线商店中购买礼物(参见图1-2)。

图1-2  所有能够提供Web内容的东西都是Web资源

       总之,所有类型的内容来源都是资源。包含公司销售预测电子表格的文件是一种资源。扫描本地公共图书馆书架的Web网关是一种资源。因特网搜索引擎也是一种资源。

1.3.1  媒体类型

       因特网上有数千种不同的数据类型,HTTP仔细地给每种要通过Web传输的对象都打上了名为MIME类型(MIME type)的数据格式标签。最初设计MIME(Multipurpose Internet Mail Extension,多用途因特网邮件扩展)是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。MIME在电子邮件系统中工作得非常好,因此HTTP也采纳了它,用它来描述并标记多媒体内容。

       Web服务器会为所有HTTP对象数据附加一个MIME类型(参见图1-3)。当Web浏览器从服务器中取回一个对象时,会去查看相关的MIME类型,看看它是否知道应该如何处理这个对象。大多数浏览器都可以处理数百种常见的对象类型:显示图片文件、解析并格式化HTML文件、通过计算机声卡播放音频文件,或者运行外部插件软件来处理特殊格式的数据。

图1-3  与数据内容一同回送的MIME类型

       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类型列表。

1.3.2  URI

       每个Web服务器资源都有一个名字,这样客户端就可以说明它们感兴趣的资源是什么了。服务器资源名被称为统一资源标识符(Uniform Resource Identifier, URI)。URI就像因特网上的邮政地址一样,在世界范围内唯一标识并定位信息资源。

       这是Joe的五金商店的Web服务器上一个图片资源的URI:

       http://www.joes-hardware.com/specials/saw-blade.gif

       图1-4显示了URI是怎样指示HTTP协议去访问Joe商店服务器上的图片资源的。给定了URI,HTTP就可以解析出对象。URI有两种形式,分别称为URL和URN。现在我们分别来看看这些资源标识符类型。

图1-4  URL说明了协议、服务器和本地资源

1.3.3  URL

       统一资源定位符(URL)是资源标识符最常见的形式。URL描述了一台特定服务器上某资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。图1-4显示了URL如何精确地说明某资源的位置以及如何去访问它。表1-1显示了几个URL实例。

表1-1  URL实例

       大部分URL都遵循一种标准格式,这种格式包含三个部分。

       • URL的第一部分被称为(scheme),说明了访问资源所使用的协议类型。这部分通常就是HTTP协议(http://)。

       • 第二部分给出了服务器的因特网地址(比如,www.joes-hardware.com)。

       • 其余部分指定了Web服务器上的某个资源(比如,/specials/saw-blade.gif)。

       现在,几乎所有的URI都是URL。

上一篇下一篇

猜你喜欢

热点阅读