最近重新复习计算机网络的内容,看到URL和URI部分时,发现自己还是没办法区分,参考了网上一众回答,发现都大同小异。大多博文给出了标准的官方定义,但相信对于小白来说还是会一头雾水,无意中看到一个回答,分享给自己:
URx
家族有3个主要成员:URI
、URL
、URN
,其中URL
和URN
是URI
的子集,所以:
一切
URL
和URN
必然都是URI
。核心区别:
URI
用来唯一标识一个资源,URL
则在此基础上明确规定了定位该资源的方法。
比如,下面的都是URI
:
// 一个完整的URI,包括协议、域名、路径、资源名等
https://segmentfault.com/q/1010000013464694
// 一个省掉了协议和域名的URI
/q/1010000013464694
// 一个省略了路径和资源名的URI
https://www.baidu.com/
// 一个使用相对路径描述的URI
../a/b/c
// 使用绝对路径标识本地文件的URI
/home/users/me/document/file.txt
……
但是里面只有一部分是URL
:
// 这个自然是URL
https://segmentfault.com/q/1010000013464694
// 单独拿出来不是一个URL,但是对该网站的程序来说它也是一个URL(相对网站进行定位)
/q/1010000013464694
// 单独拿出来不是一个URL,但是对baidu网站来说它也是一个URL,因为它会默认定位到index主页
https://www.baidu.com/
// 单独拿出来不是一个URL,但是对当前路径来说它也是一个URL,因为用它可以定位到上层目录中的资源
../a/b/c
// 单独拿出来不是一个URL(因为缺失协议部分),但是对本地系统来说它也是一个URL,可以定位到指定文件
/home/users/me/document/file.txt
回答来源:https://segmentfault.com/q/1010000013464694/a-1020000013470675