注:1. 仅从http(Hypertext Transfer Portocol)角度阐述,不涉及语言层面的类库。
2. 以下内容均参考《Http权威指南》一书。
一、万维网构成
Web内容都是存储在Web服务器上的。Web服务器所使用的是HTTP 协议,因此经常会被称为HTTP服务器。这些HTTP 服务器存储了因特网中的数据,如果HTTP 客户端发出请求的话,它们会提供数据。客户端向服务器发送HTTP 请求,服务器会在HTTP 响应中回送所请求的数据,参看下图:
HTTP请求向Web服务器请求资源,也就是说Web服务器是Web 资源(Web resource)的宿主。那么Web资源的种类自然繁多,如:文本文件、Word文件、音频、视频等等静态资源以及许多动态资源。
那么接下来就要引出我们的问题了,上面说了Web客户端向Web服务器请求资源,请求的时候总要写明,去请求哪台Web服务器以及Web服务器上面的资源地址。
二、URI、URL、URN
每个Web 服务器资源都有一个名字,这样客户端就可以说明它们感兴趣的资源是什么了。服务器资源名被称为统一资源标识符(Uniform Resource Identifier,URI)。URI 就像因特网上的邮政地址一样,在世界范围内唯一标识并定位信息资源。
上图显示了URI 是怎样指示HTTP 协议去访问Joe 商店服务器上的图片资源的。给定了URI,HTTP 就可以解析出对象。URI 有两种形式,分别称为URL 和URN。
统一资源定位符(URL)是资源标识符最常见的形式。URL 描述了一台特定服务器上某资源的特定位置。它们可以明确说明如何从一个精确、固定的位置获取资源。
大部分URL 都遵循一种标准格式,这种格式包含三个部分。
- URL 的第一部分被称为方案(scheme),说明了访问资源所使用的协议类型。这部分通常就是HTTP 协议(http://)。
- 第二部分给出了服务器的因特网地址(比如,www.joes-hardware.com)。
- 其余部分指定了Web 服务器上的某个资源(比如,/specials/saw-blade.gif)。
现在,几乎所有的URI 都是URL。
URI 的第二种形式就是统一资源名(URN)。URN 是作为特定内容的唯一名称使用的,与目前的资源所在地无关。使用这些与位置无关的URN,就可以将资源四处搬移。通过URN,还可以用同一个名字通过多种网络访问协议来访问资源。比如,不论因特网标准文档RFC 2141 位于何处(甚至可以将其复制到多个地方),都可以用下列URN 来命名它: urn:ietf:rfc:2141
URN 仍然处于试验阶段,还未大范围使用。为了更有效地工作,URN需要一个支撑架构来解析资源的位置。