浅析URL相关

URL

  1. 什么是URL

    统一资源定位符(Uniform Resource Locator,缩写:URL)俗称网页地址,简称网址。

    URL(统一资源定位符)是URI(统一资源标志符)的一种。关于这三者的具体关系,wiki中有较为深入浅出的解释。 URI◎ 三者关系如图

  2. URL的组成及各部分含义

    如果我们已经稔熟了URL与URI之间的异同,那么我们不难发现每一个遵循HTTP/HTTPS协议的URL都符合通用URI语法。 URI◎ URI语法图 实际上URL就是一种URI,它标志着一个资源在 Web 上的地址。理论上说,每个有效的 URL 都指向唯一一个资源。

    以一个网址为例https://developer.mozilla.org:443/zh-CN/search?q=URL#3,同样深入浅出的剖析一下URL的结构。

    1. https :

      这是一个方案(scheme)为HTTPS协议的URL。它表明了浏览器需要使用这种协议才能与服务器进行正常通信。而方案确定后一般都会使用 “ : ” 进行承接。

    2. // developer.mozilla.org:443

      //(在某些URI方案中 // 是可以省略的) 后开启的是 developer.mozilla.org 我们一般称之为域名的部分,实际上它表明我们正在请求哪个服务器,结合我们上面给出的URI语法图不难看出,这部分正是host,即主机。这部分一般由IP地址构成,而域名正是IP的“化身”,为了让我们更好记忆。

      :443是端口,它表示我们访问服务器资源的“门”,如果服务器使用的是HTTP协议(使用HTTP请走80号“门”,HTTPS为443)的标准端口来授予其资源的访问权限,那么端口通常可以忽略,否则需要注明。

    3. / zh-CN/search

      以 / 为间隔分割的部分是路径(path)。

      在Web的早期阶段,像这样的路径表示Web服务器上的物理文件位置。如今,它主要是由没有任何物理现实的Web服务器处理的抽象。[1]

    4. ? q=URL

      ? 后是提供给服务器的查询(query)字符串,每个服务器都有自己不同的参数规则,这部分的语法是无法明确定义的。

    5. #3

      资源的“书签”,锚点,向浏览器提供指向资源的方向并定位。# 后的部分又称为片段(fragment)标识符,这部分内容不会上传至所请求的服务器。且锚点是不支持中文的。

    如此一来不难看出,我们平时🏄使用的URL一般是这么组成的:

    URL = 协议类型 + 域名或IP + (一般省略的)端口 + 路径 + 查询字符串 + 锚点

    也不难看出这个示例网址是我在MDN查询URL词条,注明了省略的端口号,蹩脚的添加了一个MDN查询页并没有的id=3的无效锚点。

域名与IP

  1. 域名与IP

    1. IP

      IP用来定位互联网中的设备。

      1. 特殊的IP

        127.0.0.1 与 localhost 表示本机(本设备)

        0.0.0.0 不表示任何设备

      2. 路由器究竟做了什么?

        • 路由器一般有两个IP,一个内网IP,一个外网IP
        • 内网中的设备可以互相访问,但是不能直接访问外网
        • 同理,外网中的设备可以互相访问,但是不能直接访问内网
        • 正因为内网和外网像两个隔绝的空间,无法互通,所以才需要路由器(网关)联通内外网
    2. 域名

      域名就是对IP的别称。

      1. 域名与IP的对应关系

        • 一个域名可以对应不同的IP,均衡负载,减少服务器压力
        • 一个IP也可以对应不同的域名 ,共享主机,尽最大程度利用资源(因为穷😭)
      2. 域名的分类

        • .com 是顶级域名(Top-Level Domain , TLD),每个域名都会以一个顶级域名为结尾,例如本小破站的顶级域名为 .ink
        • hiillos.ink 是二级域名,在域名层级划分中,二级域名在顶级域名的左侧,是顶级域名的子域名。
        • www.hiillos.ink 是三级域名,是二级域名的子域名。
        • 是的没错,它们是父子关系👨👦(・_・;
  2. ping命令

    ping命令通常作为网络可用性的检查。它的主要功能就是对一个网址发送测试数据包,观察其是否响应并统计响应时间,从而检查网络。

    ping hiillos.ink

    ping◎ 如果尝试ping一下我的破站的话(((o(*゚▽゚*)o)))

    macOS中,需要手动control+c停止ping命令,否则它就会一直孜孜不倦地向服务器发送测试数据包……

DNS

  1. 什么是DNS

    DNS (Domain Name System) 域名系统,是一个层次化、分散化的Internet连接资源命名系统。DNS维护着一个包含域名与对应资源例如IP地址的列表。[2]

  2. DNS的作用

    DNS使得我们的域名与IP联系起来,DNS查询(DNS lookup)服务可以将域名解析为IP地址,反之,DNS反向查询(rDNS)也可以找到与IP对应的域名。

  3. nslookup命令

    nslookup命令用来查询DNS记录,查看域名解析是否正常,在网络发生故障的时候可以作为一种辅助检查的手段。

    nslookup hiillos.ink

    nslookup www.hiillos.ink nslookup◎ 使用nslookup查询本站(´▽`)

    可以看出发出查询请求的服务器是处于内网中的我自己,而hiillos.ink给我的应答是其实它是一个CNAME记录,指向的真实域名是ichirinsou.github.io,这是github.io免费给我使用的子域名,即我使用的其实是github服务器。

    不过因最近购入了较为实惠的ECS,我已经开始着手将整个blog进行迁移✌️。