NodeJs之初体验04—UR(X)

URL和URI

刚接触web的时候大家一定经常遇到两个名词URL和URI,对各种解析转换一定搞得莫名其妙晕头转向。那么L和I到底是什么,又有什么区别呢?
URL (uniform resource locator) 统一资源定位符
对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
URI (uniform resource identifier) 统一资源标识符
是一个用于标识某一互联网资源名称的字符串。 该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。URI由包括确定语法和相关协议的方案所定义。
通过定义我们可以看出URL其实是URI的一个子集,(因为URL只面对互联网资源而URI面对的是互联网和本地)
我们的目的不是知道两者叫什么,我们要知道他们都是谁!

URL的组成

基本URL包含协议、服务器名称(或IP地址)、路径和文件名,如“协议://授权/路径?查询”。完整的、带有授权部分的普通统一资源标志符语法看上去如下:

协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#标志。

可能有些懵,是的可读性很差,下面我们举个栗子:
我们知道百度的网址是www.baidu.com
所谓www,就是万维网服务器,
baidu.com,就是百度公司的域名啦,域名就是服务器IP的映射啦
可以说网站的网址就是由服务器+域名的组合
我们ping一下baidu.com就能得到百度的一个ip为220.181.57.216

8915032-9266dc92286f8c7d.png
ping一下

我们直接在地址栏敲IP会自动跳转到百度首页,我们知道链接是需要端口号的也就是上面说的域名后的:端口号,http协议默认的端口为80,是可以省略的,但如果不是默认的还是要加上的。我们直接 220.181.57.216:80一样跳到了首页。我们看到首页其实就在服务器的根目录
8915032-016ed7f2962df05f.png
220.181.57.216:80一样到达了首页

https就是通信协议啦
上面就是我们获取首页的完整路径, 协议://服务器.域名
8915032-5b8f85810bff47cb.png

当我们随便搜索个东西的时候会发现/s这个代表目录路径,wd是参数名,后面就是咱们搜索的传参啦
展现出来的就是搜索出来的页面,而这就是这个页面在互联网上唯一的地址就是通过 https://www.baidu.com/s?wd=搜个撒 这个URL来进行定位的
当然也可以转换成 220.181.57.216:80/s?wd=搜个啥但是百度的服务器ip肯定不只这一个,甚至这可能只是一个负载均衡的ip,但是 www.baidu.com 确是唯一的,这也是域名的好处啦,方便好记又好用而且具有唯一性

所以我们抽丝剥茧可以得出结论

URL是可以分为三部分组成的:
-第一部分是协议(或称为服务方式);
-第二部分是存有该资源的主机IP地址(有时也包括端口号);
-第三部分是主机资源的具体地址。如目录和文件名等。
第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略

URI的组成

不同于URL直接指名道姓(路径)的口诛笔伐(如何访问-协议)式的简单粗暴URI显得更加的高深莫测他有时和URL一样简单直接(毕竟URL就是URI的一种形态),有时又拐弯抹角欲说还羞的让人摸不着头脑
如:本地文件中的相对URI

为了说明相对URI,假设我们有一个基本的URI:
协议://域名/目录a/目录b/文件c
下面的链接中使用了相对URI:
../文件D
它扩展成完全的URI就是 "协议://域名/目录a/文件D",
下面是一个图像的相对URI:
<IMG src="../icons/logo.gif" alt="logo">
它扩展成完全的URI就是 "协议://域名/目录a/icons/logo.gif"。

URL和URI的区别

下面就来看看例子吧,当来也是来自权威的RFC:
ftp://ftp.is.co.za/rfc/rfc1808.txt (also a URL because of the protocol)
http://www.ietf.org/rfc/rfc2396.txt (also a URL because of the protocol)
ldap://[2001:db8::7]/c=GB?objectClass?one (also a URL because of the protocol)
mailto:[email protected] (also a URL because of the protocol)
news:comp.infosystems.www.servers.unix (also a URL because of the protocol)
tel:+1-816-555-1212
telnet://192.0.2.16:80/ (also a URL because of the protocol)
urn:oasis:names:specification:docbook:dtd:xml:4.1.2
这些全都是URI, 其中有些是URL. 哪些? 就是那些提供了访问机制(协议)的.

当然继续深入了解的话你会发现除了URL和URI其实还有一个叫URN的...


8915032-0ec39541e6e6d502.png
容我说一句:卧槽!!

死磕到底:
URN:Uniform Resource Name,统一资源名称。同样是作为URI的一个子集出现,是URL的一种更新形式,不依赖于位置,并且有可能减少失效连接的个数。但是其流行还需假以时日,因为它需要更精密软件的支持。
可以这么理解:URL代表资源的地址信息,URN则代表某个资源独一无二的名称。
简单总结一下 一个URI可以看做是一个人的名片,URN代表这个人的姓名和在公司的职位,而URL则表示这个人的地址。
拐到沟里自行车创新研发公司
姓名:张三
职位:销售经理
地址:XX市XXX路XX号 XXX大厦XX室
我自我理解上他们的功能呢就是说:

我通过地址可以到他的公司的办公室找到张三这个人,我去和他谈一笔业务(通过URL),
但是他可能不在办公室(即失效链接)但是我只要知道他是”拐到沟里自行车创新研发公司的销售经理张三”(URN),
那我就能通过其他的方式人肉到他

当然这些都是我自己在网上看资料的一些心得,可能理解有些偏差或错误,如果有大神发现,希望可以不吝指正~~

猜你喜欢

转载自blog.csdn.net/weixin_34050427/article/details/86818172