URIs, URLs, and URNs
首先,URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。而URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。而URN,uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:[email protected]。也就是说,URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。
从JDK1.5开始,java.net包对统一资源定位符(uniform resource locator URL)和统一资源标识符(uniform resource identifier URI)作了非常有用的区分。
URI是个纯粹的句法结构,用于指定标识Web资源的字符串的各个不同部分。URL是URI的一个特例,它包含了定位Web资源的足够信息。其他URI,比如mailto:[email protected] 则不属于定位符,因为根据该标识符无法定位任何资源。
在Java类库中,URI类不包含任何访问资源的方法,它唯一的作用就是解析。相反的是,URL类可以打开一个到达资源的流。因此URL类只能作用于那些 Java类库知道该如何处理的模式,例如http:,https:,ftp:,本地文件系统(file:),和Jar文件(jar:)。
那么URI和URL有什么区别呢?
URI—Universal Resource Identifier通用资源标志符
Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的
URI一般由三部组成
①访问资源的命名机制
②存放资源的主机名
③资源自身的名称,由路径表示,着重强调于资源。
URL—Uniform Resource Location统一资源定位符
URL是Uniform Resource Locator的缩写,即统一资源定位器,它是一个识别Internet中哪里有信息资源,并且将 Internet提供的服务统一编址的系统。通过URL可以到达任何一个地方寻找需要的东西,比如文件、数据库、图像、新闻组等等,可以这样说,URL是 Internet上的地址簿。
URL一般由三个部分构成,各个部分如下:
1. 服务器标识符
通过选择服务器标识符能够确定将要访问的服务器的类型, URL中的服务器标识符可以有HTTP://、FTP://、GOPHER://、TELNET://、NWES://等等类型,分别指定为采用超文本传输协议连接、采用文件传输协议连接、与GOPHER服务器连接、与TELNET会话连接、与USENET新闻组相连接。
2. 信息资源地址
信息资源地址是由两部分构成的,一是机器名称,如www.tsinghua.edu.cn是用来指示资源所存在的机器,另一个是通信端口号(port number),是连接时所使用的通信端口号。端口是Internet用来辨别特定信息服务用的一种软件标识,其设置范围是0到65535之间的整数,一般情况下使用的是标准端口号,可以不用写出。在需要特殊服务时会用到非标准端口号,这时就要写出,如http://www.tsinghua.edu.cn:81。常见的Internet提供服务的端口号,如HTTP的标准端口号为80,TELNET的标准端口号为23,FTP的标准端口号为21等等
3. 路径名
路径名是给出资源在所在机器上的完整文件名,一般情况下只有用户知道所要找的资源在什么地方时才会给出这个选项。如http://www.tsinghua.edu.cn/index.html等。
URL的一般格式为(带方括号[]的为可选项):
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
URL的一般格式为(带方括号[]的为可选项):
protocol :// hostname[:port] / path / [;parameters][?query]#fragm
URL示例
文件的URL: 用URL表示文件时,服务器方式用file表示,后面要有主机IP地址、文件的存取路径(即目录)和文件名等信息。有时可以省略目录和文件名,但“/”符号不能省略。
例一:file://ftp.linkwan.com/pub/files/foobar.txt
代表存放主机ftp.linkwan.com上的pub/files/目录下的一个文件,文件名是foobar.txt。
例二:file://ftp.linkwan.com/pub
代表主机ftp.linkwan.com上的目录/pub。
例三:file://ftp.linkwan.com/
代表主机ftp.linkwan.com上的根目录。
Gopher的URL: Gopher服务器有可能使用特殊的端口,在这种情况下,主机IP地址与端口之间要用“:隔开。
例一:gopher://gopher.linkwan.com/
表示主机gopher.linkwan.com上的gopher服务器。
例二:gopher://gopher.banzai.edu:1234
表示主机gopher.banzai.edu上的gopher服务器,在端口1234上。
网络新闻的URL: 利用URL表示网络新闻组时,如果是usenet的话只要指定出新闻组的名字即可。
例如:news:rec.gardening
表示usenet上的rec.gardening新闻组(园艺)。
HTTP的 URL:
使用超级文本传输协议HTTP,提供超级文本信息服务的资源。
例一:http://www.linkwan.com/111/welcome.htm
其计算机域名为www.linkwan.com。超级文本文件(文件类型为.html)是在目录/111下的welcome.htm。
例二:http://www.linkwan.com.cn/talk/talk1.htm
其其计算机域名为www.linkwan.com.cn。超级文本文件(文件类型为.html)是在目录/talk下的talk1.htm。这是瑞得聊天室的地址,可由此进入瑞得聊天室的第1室。
URL的缺点
最大的缺点:当信息资源的存放地点发生变化时,必须对URL作相应的改变。因此人们正在研究新的信息资源表示方法,例如:URI(Universal Resource Identifier)即“通用资源标识”(参见RFC 1630)、URN(Uniform Resource Name)即“统一资源名”和URC(Uniform Resource Citation)即“统一资源引用符”等。
最通俗的理解:
统一资源定位器(URL)指的是Internet文件在网上的地址。好比一个街道在城市地理上地址。URL使用数字和字母按一定顺序排列以确定一个地址。比如,要是有一个人的地址是:
510665 广州市天河科韵路18号 梁大头
你会想到,梁大头是一个人名,他住在广州市天河科韵路18号,邮政编码是510665。
同样道理,你也可以分解一个URL。比如:http://www.anyso.com
URL的第一个部分http://表示的是要访问的文件的类型。在网上,这几乎总是使用http(意思是超文本转换协议,hypertext transferprotocol.因为它是用来转换网页的协议.)有时也使用ftp(file transferprotocol),意为文件传输协议,主要用来传输软件和大文件(许多做软件下载的网站就使用ftp作为下载的网址);telenet(远程登录),主要用于远程交谈;以及文件调用等,意思是浏览器正在阅读本地盘外的一个文件,而不是一个远程计算机.
让我们回到上面提到的URL。第二部分是www.anyso.com。这是主机的名字。表示要访问的文件存放在名为www的服务器里,该服务器登记在anyso.com域名之下。多数公司有一个指定的服务器作为对外的网上站点,叫做www。所以,在你进行网上浏览时,如果你拿不准URL的名字,在www后加上公司的域名是个好办法。比如:www.booksir.com,你也许就蒙对了,那就是厦门书生的网站URL.ent