1、资源

1.1、(表示 Web 内容的)资源来自何方

Web 服务器是 Web 资源(Web resource)的宿主。Web 资源是 Web 内容的源头。 最简单的 Web 资源就是 Web 服务器文件系统中的静态文件,还可以是根据需要生成内容的软件程序。

1.2、MIME(Multipurpose Internet Mail Extension,多用途因特网邮件扩展)

MIME 类型是一种文本标记(数据格式标签),表示一种主要的对象类型和一个特定的子类型,中间 由一条斜杠来分隔。

如下:

  • HTML:text/html
  • 普通的 ASCII 文本文档:text/plain
  • JPEG 格式的图片: image/jpeg
  • Apple 的 QuickTime 电影:video/quicktime
  • 微软的 PowerPoint 演示文件:application/vnd.ms-powerpoint 类型

1.3、URI(Uniform Resource Identifier,统一资源标识符)

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

URI 是一个通用的概念,由两个主要的子集URL和URN构成,URL是通过描述资源的位置来标识资源的,而URN则是通过名字来识别资源的,与它们当前所处位 置无关。

1.4、统一资源定位符(URL)是资源标识符URI最常见的形式。

大多数的格式:方案(协议类型,告知Web客户端怎么访问资源)+服务器的因特网地址+某个资源路径。通俗来说,就是怎么做,位于何处,哪个资源。

如:https:// + www.baidu.com + /img/bd_logo1.png ftp:// + ftp.lots-o-books.com + /pub/complete-price-list.xls

几乎所有的URI都是URL。

1.4.1、语法格式、URL组件的含义以及所做的工作:

通用格式(9 部分构成):

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

解读URL组件:

  • 方案:访问服务器以获取资源时要使用哪种协议。以一个字母开始,由“:”与其他分隔,不区分大小写。
  • 用户:某些方案访问资源时需要的用户名,默认值为匿名。
  • 密码:用户名后面可能要包含的密码,中间由冒号:分隔,默认值 <E-mail 地址 > 。如ftp://anonymous:[email protected]/pub/gnu。若没有密码,也会发送默认密码,如IE浏览器会发送IEUser。
  • 主机:资源宿主服务器的主机名或点分的 IP 地址。
  • 端口:资源宿主服务器正在监听的端口号,很多方案都有默认端口号,HTTP 的默认端口号为 80。
  • 路径:服务器上资源的本地名,用字符/将HTTP URL的路径组件划分成一些路径段(path segment)。
  • 参数:某些方案会用这个组件来指定输入参数。参数为名 / 值对,名值对之间用字符“&”分隔,如下: http://www.joes-hardware.com/inventory-check.cgi?item=12731&color=blue

    URL 中可以包含多个参数字段,它们相互之间以及与路径 的其余部分之间用分号;分隔。如下链接有两个路径段:hammers 和 index.html。hammers 路径段有参数 sale,其值 为 false。index.html 段有参数 graphics,其值为 true: http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true

  • 查询:某些方案会用这个组件传递参数以激活应用程序(比如数据库、公告板、搜索引擎以及其他因特网网关)。查询组 件的内容没有通用格式。用字符?将其与 URL 的其余 部分分隔开来 。
  • 片段: 一小片或一部分资源的名字。服务器处理的是整个对象,不会将 frag 字段传送给服务器,即字段是在客户端内部使用的。通过 字符“#”将其与 URL 的其余部分分隔开来。如: http://www.joes-hardware.com/tools.html#drills

1.4.2、URL快捷方式,包括相对URL和自动扩展URL

相对URL

相对于基础URL进行解释的, 一般没有方案,优点是保持一组资源(比如一些 HTML 页面)的可移植性 提供了一种便捷方式,可在其他服务器上提供镜像内容之类的功能。

自动扩展URL

指的是用户不需要输入完整的URL,浏览器会自动扩展。自动扩展一般包括主机名扩展和历史扩展。

  • 主机名扩展比如输入taobao.com即可,浏览器会构建出www.taobao.com。
  • 历史扩展,浏览器会将用户访问过的URL历史存储起来,因此输入的URL与历史记录中的URL的前缀进行匹配从而提供一些完整的选项。

1.4.3、URL通用字母表和编码规则

URL的一些思考:

  • 可移植的,能通过不同的协议传送资源;
  • 安全传输,即不能丢失信息,如SMTP会剥去一些特定的字符,因此导致只能使用通用的安全字母表的字符;
  • 完整的,将不安全的字符编码为安全字符,再进行传输。 以上的思考可以通过历史悠久的US-ASCII,它的可移植性很好,另外对于URL包含的二进制数据,采用转义序列进行数据的编码。
编码机制

转义表示法:%的后面跟着两个表示字符ASCII码的十六进制数。示例:

编码机制转义

字符限制

URL中有几个字符被保留,有着特殊的含义,使用过程中要在URL中对其进行编码:

字符限制

应用程序(特指客户端)要按照一定规范工作。只要对所有不安全字符都进行了编码,这个URL就是可在各应用程序之间共享的规范形式,因此无需担心其他应用程序会被字符的任何特殊含义所迷惑了。

1.4.4、常见方案格式:

  • http、https、mailto(语法记录在RFC 822)、
  • 文件传输协议ftp:ftp://:<password>@:/;
  • rtsp,rtspu:通过实时流传输协议(Real Time Streaming Protocol)解析的音/视频诶提资源的表示服,字母u表示使用UDP协议来获取资源的。基本格式:rtsp://:<password>@:/
  • file:表示一台主机上可直接访问的文件。
  • news:RFC 1036,访问一些特定的文章或新闻组。news没有提供主机名或机器名称,而是由解释程序完成的。基本格式如news:或 news:
  • telnet:用于访问交互式业务,表示可通过此协议访问的交互式应用程序(资源)。基本格式如 telnet://:<password>@:/。

1.5、统一资源名(URN)

URI 的第二种形式,URN 是作为特定内容的唯一名称使用 的,与目前的资源所在地无关。

URN由这个组织研究的:因特网工程任务组(Internet Engineering Task Force,IETF)

URN格式如:urn:ietf:rfc:2141

  • 好处:使用与位置无关的 URN,就可以将资源四处搬 移;可以用同一个名字通过多种网络访问协议来访问资源。
  • 坏处:处于试验阶段。

永久统一资源定位符(persistent uniform resource locators,PURL)通过资源定位符服务器来命名资源的当前位置,是用URL来实现URN功能的一个例子。其基本思想是在搜索资源的过程中引入另一个中间层,通过中间层即资源定位符(resource locator)服务器对资源的实际URL进行登记和 跟踪。客户端可以向资源定位符请求一个永久 URL,资源定位符以一个资源作为响应,将客户端重定向到资源当前实际的 URL 上去。

目前看来,在可预见的未来,因特网资源仍然会以 URL 来命名。其他命名方案想要取代 URL 还要一 段时间。URL 还有很大的能量,不过URL 确实有其局限型,但又不是很急迫的需求。从 URL 转换成 URN 是一项巨大的工程,支持 URN 需要进行很多改动——标准主体的一致性,对各种 HTTP 应用程序的修改等。