ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

URL, URI, URN 的联系

2022-05-09 19:32:39  阅读:202  来源: 互联网

标签:编码 URL 标识符 URN URI https ASCII 资源


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有