我们可以把因特网当做一个巨大的正在扩张的城市所有的东西都有一个标准化的名字,以帮助人们寻找城市中的各种资源。所有人都对这些名字的标准达成了一致,才能方便地共享这座城市的宝藏。
URL就是因特网资源的标准化名称。URL指向每一条电子信息,告诉你它们位于何处,以及如何与之进行交互。
浏览因特网资源
URL是浏览器寻找信息时所需的资源位置。通过URL,人类和应用程序才能找到、使用并共享因特网上大量的数据资源。
http://www.joes-hardware.com/seasonal/iindex-fall.html
URL分为三部分
第一部分(http)是URL方案。方案可以告知Web客户端怎样访问资源。在这个例子中,URL说明要使用http协议。
第二部分(www.joes-hardware.com)指的是服务器的位置。这部分告知Web客户端资源位于何处。
第三部分(/seasonal/indes-fall.html)是资源路径。路径说明了请求的是服务器上哪个特定的本地资源。
URL可以通过http之外的其他协议来访问资源。它们可以指向因特网上的任意资源。
比如个人的E-mail账户:
mailto:president@whitehouse.gov
比如通过文件传输协议(File Transfer Protocol,FTP)才能获取的各种文件
ftp://ftp.lots-o-books.com/pub/complete-price-list.xls
URL提供了一种统一的资源命名方式。大多数URL都有同样的:“方案://服务器位置/路径”
URL语法
URL提供了一种定位因特网上任意资源的手段,但这些资源是可以通过各种不同的方案(比如http,ftp,smtp)来访问的,因此URL语法会随方案的不同而有所不同。
大部分URL都遵循通用的URL语法,而且不同URL方案的风格和语法都有不少重叠。
(浏览器通常会用其他应用程序来处理特殊的资源。比如,Internet Explorer就装载了一个E-mail应用程序来处理那些表示E-mail资源的URL)
大多数URL方案的URL语法都建立在这个由9部分构成的通用格式上:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
但几乎没有哪个URL包含了所有这些组件。URL最重要的3个部分是方案,主机和路径。
方案
主机与端口
要想在因特网上找到资源,应用程序要知道是哪台机器转载了资源,以及在那台机器的什么地方可以找到能对目标资源进行访问的服务器。URL的主机和端口组件提供了这两组信息。
主机组件标识了因特网上能够访问资源的宿主机器。可以用上述主机名(www.joes-hardware.com),或者IP地址来表示主机名。
端口组件标识了服务器正在监听的网络端口。对下层使用了TCP协议的HTTP来说,默认端口号为80。
端口用来标识计算机里的某个程序。
按端口号可分为3大类
(1)公认端口(WellKnownPorts):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。
(2)注册端口(RegisteredPorts):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。
(3)动态和/或私有端口(Dynamicand/orPrivatePorts):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。
片段
浏览器从服务器获得了整个资源之后,会根据片段来显示你感兴趣的那部分资源。
相对URL
URL有两种方式:绝对的和相对的。
绝对URL中包含有访问资源所需的全部信息。
相对URL是不完整的。要从相对URL中获取访问资源所需的全部信息,就必须相对于另一个,被称为其基础的URL进行解析。
一般将它所属资源的URL作为基础
URL编码
URL的设计者们认识到有时人们可能会希望URL中包含除通用的安全字母表之外的二进制数据或字符。因此,需要有一种转义机制,能够将不安全的字符编码为安全字符,再进行传输。
这种转义表示法包含一个百分号(%),后面跟着两个表示字符ASCII码的十六进制数。