浅析URL

618 阅读5分钟

什么是URL?

URL 代表着是统一资源定位符( Uniform Resource Locator 。URL 无非就是一个给定的独特资源在 Web 上的地址。理论上说,每个有效的 URL 都指向一个唯一的资源。这个资源可以是一个 HTML 页面,一个 CSS 文档,一幅图像,等等。而在实际中,也有一些例外,最常见的情况就是一个 URL 指向了不存在的或是被移动过的资源。

  • 作用:它是浏览器用来检索 web 上公布的任何资源的机制。

  • 组成部分:

    URL = 协议 + 域名或者IP + 端口号 + 路径 + 查询字符串 + 锚点

  • 剖析URL

http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument

协议:http是协议。它表明了浏览器必须使用何种协议。它通常都是HTTP协议或是HTTP协议的安全版,即HTTPS。Web需要它们二者之一,但浏览器也知道如何处理其他协议,比如mailto:(打开邮件客户端)或者 ftp:(处理文件传输),所以当你看到这些协议时,不必惊讶。

mdn-url-protocol@x2_update.png 域名或者IP: www.example.com 是域名。 它表明正在请求哪个Web服务器。或者,可以直接使用IP address, 但是因为它不太方便,所以它不经常在网络上使用。

mdn-url-domain@x2.png 端口::80是端口。 它表示用于访问Web服务器上的资源的技术“门”。如果Web服务器使用HTTP协议的标准端口(HTTP为80,HTTPS为443)来授予其资源的访问权限,则通常会被忽略。否则是强制性的。

mdn-url-port@x2.png 路径:/path/to/myfile.html 是网络服务器上资源的路径。

mdn-url-path@x2.png 查询字符串:?key1=value1&key2=value2 是提供给网络服务器的额外参数。 这些参数是用 符号分隔的键/值对列表。

mdn-url-parameters@x2.png 锚点:#SomewhereInTheDocument 是资源本身的另一部分的锚点。锚点表示资源中的一种“书签”,给浏览器显示位于该“加书签”位置的内容的方向。例如,在HTML文档上,浏览器将滚动到定义锚点的位置;在视频或音频文档上,浏览器将尝试转到锚代表的时间。需要注意的是:锚点无法在network面板上看到,因为#后面的部分(也称为片段标识符)从来没有发送到请求的服务器。

mdn-url-anchor@x2.png

  • 再举个栗子
/* 协议 - https
  域名 - developer.mozilla.org
  路径 - /en-US/search
  查询字符串 - ?q=URL
  端口 - 省略了
  锚点 - 🈚️
*/
https://developer.mozilla.org/en-US/search?q=URL

什么是DNS?

你可以把它想象成一本巨大的电话本。举例来说,如果你要访问域名math.stackexchange.com,首先要通过DNS查出它的IP地址是151.101.129.69

  • 全称:Domain Name System 域名系统

  • 作用:根据域名查出IP地址。将人类可读的域名 (例如,www.amazon.com) 转换为机器可读的 IP 地址 (例如,192.0.2.44)。

  • 查询域名信息的一个非常有用的命令: nslookup

    截屏2021-11-19 下午8.28.53.png

  • 推荐阅读
    什么是DNS - AWS
    DNS原理入门

IP的作用

  • IP和IP地址

IP (Internet Protocol) 其实是网际互连协议的缩写,但是我们通常会省略IP地址后面的地址两个字,直接用IP来代表计算机在网络上的一个标识,其实这是不严谨的。IP是整个互联网工作的核心,我们所说的IP地址其实只是其中的一个功能,即:IP定址,这是一个独一无二的地址。

  • IP的作用: IP 的作用是定位设备 封装数据报文以及同其他设备交流。

  • 查询一个域名的 IP 地址就可以通过 ping 命令

  • ping命令的主要作用

    • 用来检测网络的连通情况和分析网络速度
    • 根据域名得到服务器IP
    • 根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量 截屏2021-11-19 下午8.44.19.png

    💡 我们通常会用它来直接ping ip地址,来测试网络的连通情况。

  • 推荐阅读
    ping命令的七种用法

什么是域名?

❓提问
www.baidu.com 和 baidu.com是同一个域名吗
答案:不是

  • 网域名称(英语:Domain Name,简称:Domain),简称域名、网域,是由一串用点分隔的字符组成的互联网上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。

  • 域名可以说是一个IP地址的代称,目的是为了便于记忆后者。

  • 例如,wikipedia.org是一个域名。人们可以直接访问wikipedia.org来代替IP地址,然后域名系统(DNS)就会将它转化成便于机器识别的IP地址。这样,人们只需要记忆wikipedia.org这一串带有特殊含义的字符,而不需要记忆没有含义的数字。

  • 域名的结构:一个域名是由几部分(有可能只是一部分,也许是两部分,三部分...)组成的简单结构,它被点分隔,不同于中文书写顺序,它需要从右到左阅读

    structure.png

    • TLD (Top-Level Domain,顶级域名) : 顶级域名可以告诉用户域名所提供的服务类型。最通用的顶级域名(.com, .org, .net, .edu, .gov)
    • SLD (Secondary Level Domain, 二级域名): 刚好位于TLD前面的标签, 如baidu.com(俗称一级域名)
    • www.baidu.com 是三级域名(俗称二级域名)
    • 他们是父子关系
    • 比如github.io把子域名xxx.github.io免费给大家用
  • ⚠️注意

    同一个域名可以对应不同的IP(均衡负载) 同一个IP可以对应不同的域名(共享主机)

  • 推荐阅读
    什么是域名? - MDN
    域名 - wiki