美文网首页
URL是什么?——统一资源定位系统

URL是什么?——统一资源定位系统

作者: 浅陌离殇_ | 来源:发表于2020-05-07 18:10 被阅读0次

来源:百度百科


统一资源定位系统(uniform resource locator;URL)是因特网的万维网服务程序上用于指定信息位置的表示方法。它最初是由蒂姆·伯纳斯·李发明用来作为万维网的地址。现在它已经被万维网联盟编制为互联网标准RFC1738。

  • 中文名称

    统一资源定位系统

  • 英文名称

    uniform resource locator;URL

  • 定  义

    因特网的万维网服务程序上用于指定信息位置的表示方法。

  • 应用学科

    通信科技(一级学科),服务与应用(二级学科)

以上内容由全国科学技术名词审定委员会审定公布

  • 中文名

    统一资源定位系统

  • 外文名

    uniform resource locator;URL

目录

  1. 1 基本介绍

  2. 2 URL语法

  3. 主要部分

  4. 字符编码

  5. 方案和关系

  6. 3 特殊方案

  7. 通用方案语法

  8. FTP

  9. HTTP

  10. GOPHER

  11. MAILTO

  12. NEWS

  13. NNTP

  14. TELNET

  15. WAIS

  16. FILES

  17. PROSPERO

  18. 4 新方案注册

  19. 5 BNF

  20. 6 安全事项

基本介绍

因特网上的可用资源可以用简单字符串来表示,该文档就是描述了这种字符串的语法和语义。而这些字符串则被称为:“统一资源定位器”(URL)。这篇说明源于万维网全球信息主动组织(World Wide Web global informationinitiative)介绍的概念。RFC1630《通用资源标志符》描述了一些对象数据,他们自1990年起就开始使用这些对象数据。这篇URL说明符合《因特网资源定位符的功能需求(Functional Requirements for Internet Resource Locators)》中说明的需求。这篇文档是由工程任务组织(IETF)的URI工作小组写的 [1] 。

URL语法

正如访问资源的方法有很多种一样,对资源进行定位的方案也有好几种。URL的一般语法只是为使用协议来建立新方案提供了一个框架,当然除了已经在这篇文档中定义过的。URL通过提供资源位置的一种抽象标志符来对资源进行定位。系统定位了一个资源后,可能会对它进行各种各样的操作,这些操作可以抽象为下面的几个词:访问,更新,替换,发现属性。一般来说,只有访问方法这一项在任何URL方案中都需要进行描述。

主要部分

第五部分给出了URL语法的完整BNF描述。

URL通常被写成如下形式:<方案>:<方案描述部分>

一个URL包含了它使用的方案名称(<方案>), 其后紧跟一个冒号,然后是一个字符串(<方案描述部分>),这部分的解释由所使用的方案来决定。方案名称由一串字符组成。小写字母“a”——“z”,数字,字符加号(“+”),句点(“.”)和连字号(“-”)都可以。为了方便起见,程序在解释URL的时候应该视方案名称中的大写字母和小写字母一样。(例如:视“HTTP”和“http”一样)。

字符编码

URL是由一串字符组成,这些字符可以是字母,数字和特殊符号。一个URL可以用多种方法来表现,例如:纸上的字迹,或者是用字符集编码的八位字节序列。URL的解释仅取决于所用字符的特性。在大多数URL方案中,都是使用URL不同部分的字符序列来代表因特网协议中所使用的八位字节序列。例如,在ftp方案中主机名,目录名和文件名就是这样的八位字节序列,它们用URL的不同部分代表。在这些部分里,一个八位字节数可以用这样的字符来表示:该字符在US—ASCII[20]编码字符集中的编码是这个八位字节数。另外,八位字节数可以被编成如下形式的代码:“%”后加两个十六进制数字(来自于“0123456789ABCDEF”),这两个十六进制数字代表了这八位字节数的值。(字符“abcdef”也可以用于十六进制编码)。如果存在下面的情况:八位字节数在US-ASCII字符集中没有相应的可显示字符,或者使用相应字符会产生不安全因素,或者相应的字符被保留用于特定的URL方案的解释,那么它们必须被编成代码。

  • 没有相应的可显示字符:URL只能用US-ASCII字符编码集中的可显示字符表示。US-ASCII中没有用到十六进制的八位字节80-FF,并且00-1F和7F代表了控制字符,这些字符必须进行编码。
  • 不安全:字符不安全的原因很多。空格字符就是不安全的,因为URL在被转录或者被排版或者被字处理程序处理后其中重要的空格可能被忽略,而可忽略的空格却有可能被解释了。“<”和“>”字符也是不安全的,因为它们被用来作为URL在文本中的分隔符;而在有些系统中用引号“"”来界定URL。“#”字符也是不安全的,因为它在万维网和其他一些系统中被用来从“片段/锚点”标志符中界定URL,所以它通常都要被编码。字符“%”被用来对其他字符进行编码,它也是不安全的。其他一些字符,如:"{", "}", "|", "", "^","~","[", "]",和"`",由于网关和其他传输代理有时会对这些字符进行修改,所以它们也是不安全的。必须对URL中所有不安全的字符进行编码。例如,URL中的字符“#”即使是在通常不处理片断或者锚点标志符的系统也需要进行编码,这样如果这个URL被拷贝到使用这些标志符的系统中,也不必改变URL编码了。
  • 保留:许多URL方案保留了一些字符并赋予特定的含义:它们出现在URL的特定部位并表示特定的含义。如果一个字符对应的八位字节在方案中被保留了,那么这个八位字节必须进行编码。字符";","/", "?", ":", "@", "=" 和 "&"可能被某个方案所保留,除此之外没有其他的保留字符。通常情况下一个八位字节被用一个字符表示后或者被编码之后,URL的解释都是一样的。但这对于保留字符来说就不适用了:对某一特定方案的保留字符进行编码可能会改变URL的语义。这样,在URL中只有字母与数字,以及特殊字符“$-_.+!*'(),”和用作保留目的的保留字符可以不进行编码。另一方面,不必进行编码的字符(包括字母与数字)如果出现在URL的特定部位,只要它们不用作保留目的,则可进行编码。

方案和关系

URL有时候被用来定位那些包含指示器的资源,而这些指示器又指向其他资源。有时候这些指示器用关系链接表示,在关系链接中第二资源的位置表示符原则上“和那些除了带有次相关路径的表示符相同”。在这篇文档中没有对关系链接进行描述。但是,关系链接的使用依赖于包含分层结构的原始URL,它是关系链接的基础。有些URL方案(例如ftp,http,和文件方案)包含的名字可以被认为是分层次的;这些层次之间用“/”分隔。

特殊方案

一些已经存在的标准协议和正处于试验中的协议之间的映射关系的轮廓用BNF语法定义进行描述。下面对一些协议进行了注释:

  • ftp File Transfer protocol(文件传输协议)
  • http Hypertext Transfer Protocol(超文本传输协议)
  • gopher The Gopher protocol(Gopher协议)
  • mailto Electronic mail address(电子邮件地址)
  • news USENET news(USENET新闻)
  • nntp USENET news using NNTP access(使用NNTP访问的USENET新闻)
  • telnet Reference to interactive sessions(交互式会话访问)
  • wais Wide Area Information Servers(广域信息服务系统)
  • file Host-specific file names(特殊主机文件名)
  • prospero Prospero Directory Service(prospero目录服务)

在以后的说明书中可能会对其他一些方案加以描述。这篇文档的第四部分介绍了如何注册新的方案,并且列出了一些正在研究中的方案名。

通用方案语法

虽然URL其他部分的语法因方案的不同而不同,但那些直接使用基于IP的协议来定位因特网上的主机的URL方案都使用了如下形式的通用语法来表示特定的方案数据:

//<用户名>:<密码>@<主机>:<端口>/<url路径>

可能会省略“<用户名>:<密码>@”,“ :<密码>”,“ :<端口>”,和“/<url路径>”这些部分的某些或者全部。这些方案的特定数据以双斜线“//”开头来表明它遵从通用因特网方案语法。各个部分分别遵守如下规则:

  • 用户名:任意的用户名称。有些方案(例如:ftp)允许使用用户名称的描述。
  • 密码:任意的密码。如果存在的话,它紧跟在用户名后面并用一个冒号隔开。

用户名(和密码)如果存在的话,其后紧跟一个商用符号“@”。在用户名和密码字段中出现的任何“:”,“@”或者“/”都要进行编码。注意空的用户名或者密码不同于没有用户名和密码;决不能在没有指定用户名的情况下指定密码。例如:<URL:ftp://@host.com/>的用户名为空并且没有密码,<URL:ftp://host.com/>没有用户名,而<URL:ftp://foo:@host.com/>的用户名是“foo”并且密码为空。

  • 主机:网络主机的域名,或者它的以“.”分隔的四组十进制数字集合形式的IP地址。域名的形式在RFC1034[13]的3.5节和RFC1123[5]的2.1节中进行了描述,即用“.”分隔的域标志串,域标志以字母或者数字开头和结束,也可能包含“-”字符。最右边的域标志不能以数字开头,这样就在语法结构上将域名和IP地址区分开来了。
  • 端口:指明链接的端口。大部分方案都给协议指定一个默认的端口。也可以随意指定一个十进制形式的端口,并用冒号与主机隔开。如果忽略端口,那么这个冒号也要忽略。
  • url路径:定位符的其他部分由方案的特殊数据组成,这些特殊数据被称为“url-路径”。它提供了如何对特定资源进行访问的详细信息。注意主机(或端口)与url-路径间的“/”不是url-路径的一部分。url-路径的语法依赖于所使用的方案。也依赖于它在方案中的解释方法。

FTP

FTP URL方案可以用来指定因特网上使用FTP协议(RFC959)的可达主机上的文件和目录。FTP URL遵从3.1节所描述的语法。如果:<端口>被省略的话,则使用缺省端口21。

1、FTP 用户名和密码

在连接上FTP服务器后,可以用“USER”和“PASS”命令来指定用户名和密码。如果没有提供用户名或者密码并且FTP服务器只要求一项,那么将使用到“匿名”服务器的转换,如下所示:用户名“anonymous”被发送。访问资源的终端用户的因特网电子邮件地址被作为密码发送。如果URL提供用户名但不提供密码,那么远程服务器将要求提供密码,而解释FTP URL的程序则要求用户输入密码。

2、FTP URL-路径FTP URL的URL-路径语法如下:

<cwd1>/<cwd2>/.../<cwdN>/<name>;type=<typecode>

这里的<cwd1>到<cwdN>和<name>(可能被编码)都是字符串,<typecode>是字符“a”,“i”和“d”之一。“;type=<typecode>”这一部分可以被省略。<cwdx>和<name>部分可以为空。整个url-路径,包括它和包含用户名,密码,主机及端口的前缀间的分界符“/”都可以被省略。url-路径可以被解释成如下的一串FTP命令:每个<cwd>元素被作为CWD(改变工作目录)命令的参数发送。如果类型编码是“d”,则执行一个以<name>作为参数的NTLS(名字列表)命令,并把结果解释为一个文件目录列表。否则,执行一个用<typecode>作为参数的TYPE命令,然后访问文件名为<name>的文件(例如,使用RETR命令)。name或者CWD部分的字符“/”和“;”都是保留字符,必须进行编码。在FTP协议中,这些部分在使用前被解码。特别的是,如果访问一个特定文件的适当FTP命令序列需要发送一个包含“/”的字符串作为CWD或者RETR命令的参数,那么必须对每个“/”都进行编码。例如,URL<URL:ftp://myname@host.dom/%2Fetc/motd>被FTP解释为“host.dom”,并以用户名“myname”登录(如果需要,则提示输入密码),然后执行“CWD /etc”,再接着执行“RETR motd”。这和<URL:ftp://myname @host.dom/etc/motd>的含义不一样,它先执行“CWD etc”然后执行“RETR motd”;开始的“CWD”可能被执行,进入用户“myname”的缺省目录。另一方面,<URL:ftp://myname@host.dom//etc/motd>将执行一个不带参数的“CW D”命令,然后执行“CWD etc”,接着执行“RETR moth”。FTP URL也可以用于其他操作;例如,可以更新远程文件服务器上的文件,或者根据它的目录列表来推断它的一些信息。完成这些功能的机制在这儿没有仔细介绍。

3、 FTP 类型编码是可选择的

FTP URL的整个;type=<typecode>部分都是可选择的。如果这一部分被省略,那么解释URL的客户程序必须猜测适当模式来使用。一般来说,文件数据内容的类型只能从文件名来猜测,例如根据文件名后缀猜测;用来传输文件的合适的类型编码于是可以从文件的数据内容推断出来。

4、层次

在有些文件系统中,用来表示URL的层次结构的“/”与用来构建文件系统层次的分隔符相同,这样一来,文件名和URL路径看起来就很像。但这并不意味着URL是一个Unix文件名。

5、优化

客户端通过FTP对资源进行访问时可能会使用一些额外的搜索方法来优化交互过程。例如,对一些FTP服务器来说,当访问同一个服务器的多个URL的时候,则保持控制连接一直打开是比较合理的。但FTP协议没有通用的层次模式,因此当一个改变目录的命令发出后,如果是一个不同的路径,那么一般不可能推断出下一次将要给另一个目录发送什么样的序列。唯一可靠的算法是断开然后重新建立控制连接。

HTTP

HTTP URL 方案是用来标志因特网上使用HTTP(HyperText Transfer Protocol,超文本传输协议)的可达资源。HTTP协议在其他的地方进行了详细说明。本文只介绍了HTTP URL的语法。HTTP URL的形式如下:

http://<host>:<port>/<path>?<searchpart>

其中<host>和<port>已经在3.1节说明过了。如果:<port>部分省略,那么就使用缺省的端口80。不需要用户名和密码。<path>是一个HTTP选择器,<searchpart>是查询字符串。<path>,<searchpart>和它前面的“?”都是可选择的。如果<path>和<searchpart>部分都没有,则“/”也可以省略。<path>和<searchpart>部分中的“/”,“;”和 “?”都是保留字符。“/”字符可以在HTTP中用来表示层次结构。

相关文章

网友评论

      本文标题:URL是什么?——统一资源定位系统

      本文链接:https://www.haomeiwen.com/subject/rcfzghtx.html