美文网首页前端包浆记
NodeJs之初体验04—UR(X)

NodeJs之初体验04—UR(X)

作者: 水云楼 | 来源:发表于2019-01-23 12:06 被阅读0次

    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

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

    当我们随便搜索个东西的时候会发现/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:John.Doe@example.com (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的...


    容我说一句:卧槽!!

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

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

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

    相关文章

      网友评论

        本文标题:NodeJs之初体验04—UR(X)

        本文链接:https://www.haomeiwen.com/subject/dwsjjqtx.html