概述URL、URI和URN以及三者之间的联系与区别

URL(Uniform Resource Locator)

统一资源定位符,根据某一种规则将一个资源独一无二地标识出来。URL是URI的一个子集,告诉我们访问网络位置的方式

格式

URL的格式由下列三部分组成:
1、协议(或称为服务方式);
2、存有该资源的主机IP地址(有时也包括端口号);
3、主机资源的具体地址。如目录和文件名等。

第一部分和第二部分之间用”://”符号隔开,第二部分和第三部分用”/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。

schema://host[:port#]/path/…/[?query-string][#anchor]

scheme 指定低层使用的协议(例如:http, https, ftp)

host HTTP服务器的IP地址或者域名

port# HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如 http://www.cnblogs.com:8080/

path 访问资源的路径

query-string 发送给http服务器的数据

anchor- 锚

常见问题

当信息资源的存放地点发生变化时,必须对URL作相应的改变


URI(Uniform Resource Identifier )

统一资源标识符,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何定位这个资源。

格式

一般由三部分组成:
1、访问资源的命名机制。
2、存放资源的主机名。
3、资源自身的名称,由路径表示。

典型情况下,这种字符串以scheme开头,语法如下:
[scheme:] scheme-specific-part
http://www.google.com,其中http是scheme,//www.google.com是 scheme-specific-part,并且它的scheme与scheme-specific-part被冒号分开了。

常见问题

  1. 难以输入,URI不必要的冗长。
  2. 莫明其妙的大写字母。
  3. 不常见的标点符号。
  4. 在纸介质上显示很困难,一些字符在纸上打印出来不容易辨认。
  5. 主机和端口的问题除了 scheme-specific 部分,domain 和port 也可能给用户带来困惑。

URN(Uniform Resource Name)

统一资源名称。URN是URI的子集,包括名字(给定的命名空间内),但是不包括访问方式

格式

所有的URN都遵循如下语法(引号内的短语是必须的):
< URN > ::= “urn:” < NID > “:” < NSS >

其中NID是命名空间标识符,NSS是标识命名空间的特定字符串。


说明

“URI可以分为URL、URN或同时具备locators 和names特性的一个东西。URN作用就好像一个人的名字,URL就像一个人的地址。换句话说:URN确定了东西的身份,URL提供了找到它的方式。”

三者关系及图解(引用Wikipedia)

关于URL:

URL是URI的一种,不仅标识了Web 资源,还指定了操作或者获取方式,同时指出了主要访问机制和网络位置。

关于URN:

URN是URI的一种,用特定命名空间的名字标识资源。使用URN可以在不知道其网络位置及访问方式的情况下讨论资源。

在这里插入图片描述


三者区别举例

URI举例http://bitpoetry.io/posts/hello.html#intro

URI举例 解释
http:// 定义如何访问资源的方式
bitpoetry.io/posts/hello.html 资源存放的位置
#intro 资源

URL举例http://bitpoetry.io/posts/hello.html

URN举例bitpoetry.io/posts/hello.html#intro

猜你喜欢

转载自blog.csdn.net/weixin_43514899/article/details/111500175