HTTP权威指南 URL与资源

《HTTP 权威指南》第二章——URL与资源,阅读笔记。

  1. URI,Uniform Resource Identifier,统一资源标识符
  2. URL,统一资源定位符。URL第一部分为方案(scheme),说明了访问资源所使用的协议类型。比如HTTP协议(http://)
  3. URN,Uniform resource name,统一资源名,是作为特定内容的唯一名称使用的,与目前的资源所在地无关。这个还真有实现啊:PURL,见P43
  4. URL是通过描述资源的位置来标识资源的;URN是通过名字来识别资源的,与它们当前所处位置无关。
  5. HTTP规范将更通用的 URI 作为其资源标识符,但实际上,HTTP 应用程序处理的只是 URI 的 URL 子集。
  6. URL 提供了一种定位因特网上任意资源的手段,但这些资源是可以通过各种不同的方案(比如HTTP、FTP、SMTP)来访问的,因此 URL 语法会随方案的不同而有所不同,但大部分 URL 都遵循通用的 URL 语法,而且不同方案的 URL 的风格和语法都有不少重叠。
  7. 大多数 URL 方案的 URL 语法都建立在这个由 9 部分构成的通用格式上:://:@:/;?#
    但是几乎没有哪个 URL 包含了所有这些组件:
    path(路径):通常很像一个分级的文件系统路径,可以用字符“/”将 HTTP URL 的路径组件划分成一些路径段(path segment),每个路径段都有自己的参数(param)组件
    param(参数):某些方案会用这个组件来指定输入参数。参数为名/值对。URL 中可以包含多个参数字段,它们相互之间以及与路径的其余部分之间用分号(;)分割
    frag(片段):一小片或一部分资源的名字。引用对象时,不会将 frag 字段传送给服务器;这个字段是在客户端内部使用的,通过字符“#”与 URL 的其余部分分隔开来。名字来源:为了引用部分资源或资源的一个片段,比如引用一个很大的 HTML 文档的一部分章节片段,所以有了片段(frag)。
  8. 拥有两个路径段并且每个路径段都有自己的参数的实例:
    http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true
    很怀疑这玩意真的有服务器程序实现。。。。
  9. URL分为相对URL(就是 HTML 文档里面相对路径的资源)和绝对URL
  10. HTML 文档里的标记可以作为该文档里所有相对 URL 的基础 URL,这也是显示指定基础 URL。
  11. URL 是可移植的(portable)。它要统一地命名因特网上所有的资源,这也就意味着要通过各种不同的协议来传送这些资源。所以,设计 URL 使其可以通过任意网络协议安全地传输是很重要的。安全传输意味着 URL 的传输不能丢失信息。有些协议,比如 SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),所使用的传输方法就会剥去一些特定的字符。为了避开这些问题,URL 只能使用一些相对较小的、通用的安全字母表的字符。
    除了希望 URL 可以被所有因特网协议进行传送之外,设计者们还希望 URL 是可读的。因此,即使不可见、不可打印的字符能够穿过邮件程序,从而成为可移植的,也不能在 URL 中使用。
    URL 还得是完整的。URL 的设计者们认识到有时人们可能希望 URL 中包含除通用的安全字母表之外的二进制数据或字符。因此,需要有一种转义机制,能够将不安全的字符编码为安全字符,再进行传输。
  12. US-ASCII 使用 7 位二进制码来表示英文打字机提供的大多数按键和少数用于文本格式和硬件通知的不可打印控制字符。所以 URL 目前采用的是 US-ASCII,其可移植性很好。但是,美国用户使用起来很便捷,可是它却并不支持各种欧洲语言以及其他数百种非罗马语言中很常见的变体字符。而且,有些 URL 中还会包含任意的二进制数据。认识到对完整性的需求之后,URL 的设计者就将转义序列集成了进去。通过转义序列,就可以用 US-ASCII 字符集的有限子集对任意字符值或数据进行编码了,这样就实现了可移植性和完整性。这种转义表示法包含了一个百分号(%),后面跟着两个表示字符 ASCII 码的十六进制数。
  13. IETF,Internet Engineering Task Force,因特网工程任务组