目录
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被冒号分开了。
常见问题
- 难以输入,URI不必要的冗长。
- 莫明其妙的大写字母。
- 不常见的标点符号。
- 在纸介质上显示很困难,一些字符在纸上打印出来不容易辨认。
- 主机和端口的问题除了 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