5分钟搞懂URI、URL和URN

当我们上网的时候,浏览器地址栏里显示的那一串字符串是什么意思?这串字符叫URL,是URI的一种,还有个兄弟叫URN,这篇文章就带你了解这几个概念。原文:URI vs URL vs URN[1]

当我们处理互联网和在线内容时,URI、URL和URN是我们能听到的最熟悉的单词,下面让我们深入了解它们的含义……


URI - 统一资源识别符(Uniform Resource Identifier)

URI是标识所有连接到万维网(World Wide Web)的资源的通用术语,是用来标识逻辑资源或者物理资源的字符串序列。换句话说,它可以用来识别互联网上的资源的位置、或名称、或两者兼有。URI有两个主要的子集,即URL和URN。

URI语法:scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]

URI示例foo://example.com:8042/over/there?name=ferret#nose

Scheme:URI的起始点,并与URI协议相关。URI schema对大小写不敏感,后面带有一个“:”。尽管在实践中可以使用未注册的schema,但URI schema应该向Internet Assigned Numbers Authority (IANA)注册。几个流行的URI schema的例子:HTTP、HTTPS、FTP和mailto。

Authority(权限):Authority字段是位于schema字段之后的第二个条目,以两个斜杠(//)开头。这个字段由多个子字段组成:

  • authentication(认证信息)-可选的字段和用户名,密码,由冒号隔开,后面跟着“@”符号
  • host(主机名)—注册的名称或IP地址,出现在“@”符号之后
  • port(端口号)-可选字段,后面跟着一个冒号

Path(路径):Path是第三个字段,由斜杠分隔的段序列来表示,用来提供资源的位置。注意,不管authority部分存在或不存在,path都应该以一个斜杠开始,而不是双斜杠(//)。

Query(查询):Query是第四个字段,是URI的可选字段,包含一串非结构数据并以“?”和Path隔开。

Fragment(片段):Fragment是第五个组成部分,也是一个可选字段,提供指向辅助资源的方向,并以“#”开始。简单来说,Fragment字段可以用于指向HTML页面的特定元素(主资源)。


URL - 统一资源定位符(Uniform Resource Locator)

如上所述,URLURI的一个子集。URL是一个给定唯一Web资源的地址,表明了这个唯一的Web资源的位置,用户可以通过URL浏览互联网。如果我们在任何应用程序中点击任何超链接,它会将我们重定向到相关的URL,这些URL也可以很容易的输入到浏览器地址栏中,并可以加载特定的资源。

URL语法scheme://host:port/path?query-string#fragment-id

URL示例: https://medium.com/p/51b8167cafad

Scheme:URL的第一部分,表示浏览器请求资源时必须使用的协议。常见例子有HTTPS(安全版本)和HTTP(非安全版本)。

Authority:Authority是URL的第二个字段,同样使用“//”开头,包含一些子部分:

  • host(主机名)—分配给主机的域名或IP地址,是主机的本地名称和它的父域名的组合
  • port(端口)—表示用于访问Web服务器上特定资源的标识,通常80表示HTTP, 443表示HTTPS,这是一个可选字段

Path to resource(资源路径):路径是URL的第三个字段,是Web服务器上资源的路径

Query(查询):查询是URL的第四个字段,由传递给服务器端脚本的数据组成,并在Web服务器上运行。查询将执行带有“?”的搜索参数,参数通常由名字和值对组成的字符串组成,并由“&”分隔。

Fragment Identifier(片段标识符):片段是可选字段,用于表示页面中的位置,由“#”标识片段标识符。


URN - 统一资源名(Uniform Resource Name)

URN是一种具有静态名称的互联网资源,即使它的数据被移动到另一个位置也仍然有效。URL在内容被移动后就失效了,与之不同的是,URN可以始终跟踪Web上某些数据的资源,从而解决了频繁移动数据的问题。

更进一步的,我们可以说,当用户知道唯一资源的位置时,可以使用URL,但URN只需要知道特定资源的名称,而不用指定其位置。

URN语法:scheme:NID: NSS

URN示例:urn:ISSN:0167–6423

Scheme:URN的前导部分,以“:”结尾,不区分大小写

NID(Namespace ID):URN的第二个字段,是向IANA注册的命名空间标识符。NID后面跟着一个":",可以由字母、数字和" - "组成。

NSS(Namespace Specific String):NID之后的下一个字段,是一个特定于命名空间的字符串。NID确定NSS的语法解释。NSS可以由ASCII字母、数字、标点符号和特殊字符组成。

  • 2017年之后,又添加了q-component和r-component,用于向命名资源和解析器传递参数。

区分识别URI、URL和URN的小技巧

  • URL是一个可以检索网络资源的链接;URN是唯一标识符,但不能创建可单击的链接。
  • 人们经常用名字作为例子来描述URI和URN。人的名字就像URI,因为它标识了一个人,但并没有告诉你在世界上的哪个地方可以找到这样一个特定的人,甚至也没有告诉你我们谈论的是哪个人。
  • 简单的名字不能作为URN的例子,因为没有唯一性,世界上有很多人有同样的名字。URN是一个带有全局唯一标识符的名称,如身份证号或社会保险号。
  • 在网络中,URN很容易被发现。

本文到此结束,如果你正好想要了解关于URI、URL和URN的知识,希望这篇文章对你有用。

感谢阅读本文…!!!🤗🤗🤗

References:
[1] https://enlear.academy/uri-vs-url-vs-urn-51b8167cafad

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术总监,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。
微信公众号:DeepNoMind

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、URI和URL的区别: 1、URI:统一资源标识符,用来唯一的识别一个资源,包含URL和URN。Uri时And...
    Yangxy_Lazy阅读 4,225评论 0 0
  • 定义 URL: Unifrom Resource Locator 统一资源定位符 URI: Unifrom Re...
    gsonliu阅读 4,466评论 0 0
  • 当你需要存储或者获取一个资源地址时用URI好还是URL好?首先要明确一下三个名称的意义 URI、URL和URN U...
    Niklaus_8871阅读 2,629评论 0 0
  • 项目里用到了许多Uri,Url,Urn相关东西,一直对其的定义模糊不清,趁迭代开发周期,对一些模糊的东西弄清楚 内...
    朴文阅读 2,828评论 0 0
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 12,765评论 28 53

友情链接更多精彩内容