其他分享
首页 > 其他分享> > URL, URI, URN 的联系

URL, URI, URN 的联系

作者:互联网

0 基本概念
URL(Uniform Resource Locator)统一资源定位符,表示的是资源位置,期望提欧共资源查找方法。如浏览器重使用的URL
URI(Uniform Resource Identifier)统一资源标识符,用于区分资源,是URL和URN超集合,用于取代URL和URN。
URN(Uniform Resource Name)是统一资源标识(URI)的历史名字。期望为资源提供持久的、位置无关的标识方式,并允许简单地将多个命名映射到单个URN命名空间。例如磁力链接:magnet:?xt=urn:btih:;

 

URI 三个关键字
● Resource(资源),可以是图片、文档、今天杭州温度等、也可以不能通过互联网访问的实体,例如人、公司、实体书,也可以抽象的概念,例如亲属关系或者数字符号。
● Identifier(标识符) ,将当前资源与其他资源区分开的名称。
● Uniform (统一)允许不同种类的资源在同一上下文出现(比如一个html 可以有图片、视频),对不同种类的的资源标识符可以使用同一语义进行解读(比如下载PDF和视频可以用一种下载方式),引入新标识符时,不会对已有标识符产生影响,允许同一资源标识符在不同的Internet规模上下文出现。

1 URI格式
URI 的组成:schema、user information、host、port、path、query、fragment,他的格式定义如下:


● scheme (必要):URI使用的方案,比如FTP、HTTP、file
● hierarchical part 分层部分(必要):URI 指向资源的识别信息。这些是被信息以分层的形式组织起来。
● query 查询参数(可选):以 ?开头查询函数是可选的;多个查询函数将由多个键值对对应表示,这些键值对之间通过 & 号进行连接。
● fragment 分段(可选):以# 开头分段是可选的,用于URI指向资源的次级资源进行标记,如#page-3(指向第三页),由客户端进行处理。

 

具体示例:https://datatracker.ietf.org/doc/html/rfc7231?test=1#page-3(指向某个段落)

2 URI编码
2.1 为什么要编码
URI设计者使用US-ASCII字符集表示URI,原因也是ASCII比较简单;所有的系统都支持ASCII。
https://www.baidu.com/s?&wd=中国,这里中国不属于ASCII,如果不进行编码,服务器无法处理(在浏览器访问浏览器会做处理)。编码后效果如下
https://www.baidu.com/s?&wd=%E4%B8%AD%E5%9B%BD
对可能产生歧义的数据进行编码:
● 不在ASCII范围内,如中文
● ASCII不可见字符
● URI规定的保留字符
● 不安全字符(传输环节中可能会被不正确处理)如空格、引号、尖括号等


2.2 编码方式
● 百分号编码方式:pct-encoded=%HEXHIGHEXHIG(一个百分号和两个16进制数字0-F),HEXHIG是十六进制的字母,大小写等价。
● 非ASCII码字符,如中文,建议先UTF-8编码,在US-ASCII编码
● 对URI合法字符,编码和不编码是等价的

https://www.baidu.com/s?&wd=中国 编码后的结果:https://www.baidu.com/s?&wd=%E4%B8%AD%E5%9B%BD

参考文献[1]极客时间,陶辉,Web协议详解与抓包实战
————————————————
版权声明:本文为CSDN博主「huangshanchun」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/huangshanchun/article/details/123776841

标签:编码,URL,标识符,URN,URI,https,ASCII,资源
来源: https://www.cnblogs.com/wqddmg/p/16250529.html