1.2 URL与资源

1.2 URL与资源

将网络映射为现实生活,网络线路的连接过程就好比城市打车,从某个地方出发,告诉司机想去的地址名称,司机就会知道这次的行动路线。而URL就是浏览器寻找信息所需要的资源位置(目的地)。

1.2.1 URL语法

URL提供了一种定位因特网上任意资源的手段,但是这些资源是可以通过不同的方案(如HTTP, FTP, SMTP)来访问的。
大多说URL方案的语法都建立在下面这个通用格式:

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

组件描述默认值
scheme(方案)访问服务器资源时使用的是哪种协议
user(用户)访问某些资源时需要的用户名匿名
password(密码)访问某些资源时可能需要的密码(冒号 : 分割)<email地址>
host(主机)资源宿主服务器的主机名或者分点ip地址
port(端口)资源宿主服务器正在监听的端口号每个方案特有
path(路径)服务器上资源的本地名,用斜杠(/)将每个层级分开
params(参数)某些方案会用这个组件指定输入参数,参数为名值对(用分号 ; 与其他部分分割)
query(查询)某些方案用这个组件传递参数,激活相关的应用程序,获取动态的或者个性化的结果(用问号 ?与其他部分分割)
frag(片段)一小片或者一部分资源的名字。引用对象时不会将frag字段传送给服务器,通常实在客户端内部使用的。(用井号 # 与其他部分分割)
  • scheme:必须以字母开头,用第一个:与后面的内容作区分。方案名与大小写无关(http=HTTP)
  • port: 对于http来说默认端口为80 , https协议默认端口为443
  • user:password: 如FTP协议就需要用户名密码。没有提供用户名密码时FTP会插入一个默认的用户名和密码(如anonymous),提供用户名密码的情况下用”@“将其与其他部分分隔开来
  • path: UNIX文件系统中的文件系统路径方法,用”/“分隔路径为路径段(path segment)
  • params: 很多协议需要提供参数来使客户端和服务器正确地进行交互。
    如http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true
    其中有两个路径段,参数hammers值为false,参数graphics值为true
  • query: 之前带有”?“标识query的开始,查询的字符串以一系列名值对的形式出现,名值对中间用”&“分隔
    如http://www.joes-hardware.com/inventory-check.cgi?item=12731&color=blue
    其中查询组件有两个名值对,item=12731和color=blue
  • frag: 服务器只会处理整个对象而不是对象的一部分,浏览器从服务器获得了整个资源后会根据片段来显示你(感兴趣的)请求的那部分资源。
    ​ 如:http://www/jose-hardware.com/tools.html#drills
    ​ 这时服务器会响应整个tools.html资源,浏览器会将页面显示到drills部分
1.2.2 URL快捷方式
  1. 相对URL

    在同一目录下,只使用"./xxxx.html"代替完整的URL是可行的

    访问上一级的相对URL:"…/xxxx.html"

    内部解析相对引用的步骤:

    1. html标签显式提供了URL,那就通过它来转换那个html文档中的所有相对URL
    2. 没有显式指定那就将它所属资源的URL作为基础
    3. 然后解析相对引用,它会在相对URL中根据URL结构查找其组件,如果组件不存在,就继承基础URL的组件值,用户,密码,主机,端口,路径,参数,查询组件。其中若在路径部分的解析中是没有前导”/“的非空路径,就删除前导”./“,若带有前导”/“则要处理绝对路径
  2. 扩展URL

    浏览器中只输入baidu也能直接进入www.baidu.com页面,这是因为浏览器会自动扩展。

    1. 主机名扩展:自动插入www .com之类的操作
    2. 历史扩展:根据历史浏览记录扩展输入的地址
1.2.3 URL中令人头疼的字符

URL是可以移植的(portable),意味着URL可以通过任意因特网协议安全的传输。安全传输意味着在不同的协议之中要使用能够统一的相对较小的,通用的安全字母表中的字符。

URL还应该是可读的。不可打印的字符(如空格符)应该被禁止在URL中使用。

URL还得是完整的。有时人们可能希望URL包含除通用的安全字母表之外的二进制数据或者字符,因此就需要一种转义机制。能将不安全编码转义成安全字符,再进行传输。

“转义”表示法:包含一个百分号(%),后面跟着两个表示字符ASCII码的十六进制数。如:

字符ASCII码url
~126(0x7E)…%7E…
空格32(0x20)…%20…
%37(0x25)…%25…

除了转义字符,URL中还有一些字符被保留起来,有特殊的含义。将这些字符用于保留用途之外的场合时,要对URL中对其进行编码。如:

字符保留/受限字符保留/受限
%转义标志/分隔路径
.路径组件中使用路径组件中使用
#分段分界符查询定界符
;参数定界符:名值对
$ , +保留@ & =某些方案中需要使用,保留

客户端应用程序在向其他应用程序发送任意URL之前,最好把所有不安全或者受限的字符都进行转换。这样这个URL就是可以在各个应用程序之间共享的规范形式。

1.2.4 URL中的方案

常用的方案(scheme):

方案描述
http超文本传输协议,默认端口80,除开没有用户名密码其他的与通用格式相符,基本格式为:**http://<host>:<port>/<path>;<params>?<query>#<frag>**
httpshttp over SecureSocket Layer,默认端口443,SSL提供端到端的加密机制,其他部分与http相同。基本格式为:**https://<host>:<port>/<path>;<params>?<query>#<frag>**
mailto指向E-mail地址,基本格式:mailto:<RFC-822-ADDR-SPEC>, 示例:mailto:joe@joes-hardware.com
ftp文件传输协议,用来从ftp服务器上下载或上传文件。格式:**ftp://<user>:<password>@<host>:<port>/<path>;<params>**
rtsp, rtspuRTSP URL是可以通过实时流传输协议(Real Time Streaming Protocol)解析音频视频媒体资源的标识符。rtspu的u代表使用UDP协议获取资源。格式:**rstp://<user>:<password>@<host>:<port>/<path>**
file表示一台指定主机上可直接访问的文件,如果主机未指明则默认为正在使用URL的本地主机**file://<host>/<path>**
news用来访问特定的新闻组
telnet用于访问交互式业务。它代表的不是对象自身,而是可以通过telant协议访问的交互式应用程序(资源)。格式:**telant://<user>:<password>@<host>:<port>/**
1.2.5 URL的未来展望

URL的确使用很广,是一个基于地址的命名机制。但是当资源从该地址移走,你就有可能找不到它了。URN(统一资源名,Uniform resource name)是为每一个资源指定一个名字,如果可以实现,那么无论资源移到何处,都能够追踪它,因为你已经知道了它不会变的名字。

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

但是实际上URN还没有投入使用。因为改动意味着要进行大量的工作,可能还要等待更适合的时机才能进行这种转换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值