注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风的驿站

一徐清风,半指烛光,觥筹已净,只余茶香。残卷一章,妙趣非常,忽闻帘响,愿闻其详?

 
 
 

日志

 
 
关于我

喜欢写生 编程 音乐 设计 喜欢把自己的想法变成实实在在的东西 喜欢安静的做一些事情 CSDN博客:http://blog.csdn.net/qwertyupoiuytr

网易考拉推荐

【原创】URL简介(上)  

2014-06-24 21:40:08|  分类: 计算机网络 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

URLUniform Resource Locator,统一资源定位符),作为网络资源的标准名称,使用一系列的信息标识来帮助我们定位网络资源,同时也告诉我们如何来获取资源。

实际上,URLURIUniform Resource Identifier,统一资源标识符)的子集,URI作为一个基本概念,由两部分组成,URLURNUniform Resource Name)。URL通过描述资源的位置来定位资源,而URN通过名字来查找资源,而不管资源是否被迁移了。

HTTP协议中使用URI来进行资源定位,但是应用程序中实际上只使用URL子集。

例如我们想要访下面的URL

http://www.joes-hardware.com/seasonal/index-fall.html:

· URL前面的httpURL的方案(scheme),URL的方案告诉网络客户端应该如何获取这个资源,在这个例子中,URL告诉客户端使用HTTP协议来获取这个资源。

· 第二部分“www.joes-hardware.com”为服务器地址,这个信息告诉客户端到哪儿去获取这个资源。

· 最后一部分“seasonal/index-fall.html”为资源路径,资源路径标明了资源在服务器上的本地路径。

下面这张图说明了整个解析过程:

【原创】URL简介 - 远行的风 - 风的驿站

除了使用HTTP协议来获取资源,我们还可以使用其他的协议来获取互联网的资源,例如:

mailto:president@whitehouse.gov

ftp://ftp.lots-o-books.com/pub/complete-price-list.xls

file:///c:/WINDOWS/somedata.dat

rtsp://www.joes-hardware.com:554/interview/cto_video

git://github.com/user/project-name.git

ed2k://|file|%5BMAC%E7%89%88%E6%9E…

URL定义了一种命名资源的统一方式,大多数的URL都具有“scheme://server location/path”的格式,因此,对于各种不同地方的资源,无论我们获取资源的方式有何不同,命名资源的方式始终是唯一的,任何人通过这个名字都能找到这个资源。

网络资源多种多样,URL的方案也各不相同,但是他们大多都遵循统一的URL语法,下面列出了组成URL的通用的9个部分,大多数URL都符合下面的定义:

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

当然,上面列出的是只是理论上的组成部分,实际当中,几乎没有URL包含上面的所有部分,URL中重要的三个部分是schemehostpath,下表列出了每个组成部分的简要说明:

组成部分

描述

默认值

scheme

定义了使用哪种协议来获取资源

无默认值

user

获取资源需要的用户名

匿名

password

获取资源的密码,紧跟用户名,中间以冒号“:”分隔

<Email address>

host

资源服务器的主机名或者IP地址

无默认值

port

资源服务器侦听的端口,很多scheme类型都有自己默认的端口(例如HTTP协议用80端口)

默认值因scheme而异

path

服务器上的资源的本地路径,通过斜线“/”与前面的URL部分分隔开

无默认值

params

某些scheme中使用这个组成部分来传递输入参数,参数以键值对儿的形式出现,一个URL中可以出现多个参数,彼此之间以分号“;”分隔

无默认值

query

某些scheme中使用query来向某些应用传参(例如数据库、公告板、搜索引擎等等),对于这部分没有特定的格式,query使用问号“?”与URL其他部分分隔开

无默认值

frag

资源的某个部分的名称,在向服务器发请求时,并不会发送frag部分,仅在客户端内部使用,frag使用井号“#”与URL其他部分分隔开

无默认值

http://www.joes-hardware.com:80/index.html为例,方案(scheme)为httphostwww.joes-hardware.comport80path/index.html

下面具体来说明。

· 方案(scheme):决定了获取资源所使用的方式,它告诉应用程序应该以哪种协议来解析URL,方案必须由字母开头,通过冒号“:”与URL其他部分分隔开。方案名不区分大小写,所以HTTPhttp效果相同。

· 主机名(host)和端口(port):用来指示在网络中哪一个主机拥有该资源,并且从哪一个端口进入能够访问到资源。host既可以是主机名(例如www.joes-hardware. com)也可以是IP地址,端口号则表明了服务器通过哪一个端口侦听请求。

· 用户名(username)和密码(password):在访问资源前,很多服务器需要客户端提供一个具有访问权限的用户名和密码,FTP服务器就是一个很好的例子,下面列出了一些具体的例子:

ftp://ftp.prep.ai.mit.edu/pub/gnu

ftp://anonymous@ftp.prep.ai.mit.edu/pub/gnu

ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu

http://joe:joespasswd@www.joes-hardware.com/sales_info.txt

第一个例子并没有提供用户名和密码,这时候会使用默认的用户名和密码来访问,例如上面的第一个FTP的例子,会使用“anonymous”作为用户名,默认密码则因浏览器不同而有所差异。

第二个例子提供用户名为anonymous作为用户名,密码默认,用户名和密码使用“@”符号与URL的其他部分分隔开。

· 路径(path):指明了资源在服务器上的具体位置,路径通常是分层的文件路径。服务器使用路径来找到具体的资源,路径使用“/”来分段,对于每一段都可以指定参数部分(params)。

· 参数(params):对于很多方案,仅仅提供主机名和路径是不够的,例如FTP使用两种方式传输文件:二进制(binary)和纯文本(text),如果不通过指定参数来区分的话,就无法得到正确的资源格式。URL中的参数为键值对儿,通过分号来分隔,用来提供额外的信息,例如:

ftp://prep.ai.mit.edu/pub/gnu;type=d

其中type=d是唯一的参数。

我们前面提到了,路径的每一段都可以指定参数,下面就是一个例子:

http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true

· 查询字符串(query string):有些资源,例如数据库资源,可以通过查询字符串来缩小查询范围,比如:

http://www.joes-hardware.com/inventory-check.cgi?item=12731

通过请求字符串来返回id12731item

对于查询字符串来说没有格式上的要求,但是有些字符不能出现,需要进行转义,并且按照惯例来说,查询字符串通常由一系列的“name=value”组成,中间由“&”符号进行连接。

· 对于某些资源类型,例如HTTP资源,可以对资源进一步细分,例如一个大的文本可以细分为段落,通过URL可以找到改文本资源,但是更理想的是,可以精确到每一段。

例如下面的例子:

http://www.joes-hardware.com/tools.html#drills

用来获取tools.html上名为“drills”的部分。由于HTTP服务器通常只处理整个资源,因此浏览器实际上并不会将frag发送给服务器,当从服务器返回整个资源后,浏览器根据frag部分对结果进行筛选展示。

 

摘译自《HTTP-The Definitive Guide by David Gourley & Brian Totty,内容有改动。

URL简介(下)

  评论这张
 
阅读(117)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017