HTTP基本原理

  1. URI
    URI = Universal Resource Identifier 统一资源标志符

    URI采用一种特定语法标识一个资源的字符串。所标识的资源可能是服务器上的一个文件。不过,也可能是一个邮件地址、新闻消息、图书、人名、Internet主机或者任何其它内容。

    通过URI找到资源是通过对名称进行标识,这个名称在某命名空间中,并不代表网络地址。

    它包含URL和URN。
    支持的协议有http、https、ftp、mailto、magnet、telnet、data、file、nfs、gopher、ldap等

  2. URL
    URL = Universal Resource Locator 统一资源定位符

    URL唯一地标识一个资源在Internet上的位置。不管用什么方法表示,只要能定位一个资源,就叫URL。

    示例:

http://www.jianshu.com/u/1f0067e24ff8
ftp://www.example.com/resource.txt

  1. URN
    URN = Universal Resource Name 统一资源名称

    URN它命名资源但不指定如何定位资源,比如:只告诉你一个人的姓名,不告诉你这个人在哪。例如:telnet、mailto、news 和 isbn URI 等都是URN。

    比如 urn:issn:1535-3613 则不属于URL(统一资源定位符),因为根据该标识符无法定位任何到资源。

    示例:

urn:issn:1535-3613 (国际标准期刊编号)
urn:isbn:9787115318893 (国际标准图书编号)
mailto:jijs@jianshu.com (简单邮件传输协议)
tel:+1-81-555-1212

URI、URL和URN区别:

  1. URI 指的是一个资源

  2. URL 用地址定位一个资源;

  3. URN 用名称定位一个资源。

    举个例子:
    去寻找一个具体的人(URI);如果用地址:XX省XX市XX区…XX单元XX室的主人 就是URL;如果用身份证号+名字去找就是URN(身份证号+名字 无法确认资源的地址) 。

在互联网中,URN使用的非常少,几乎所有的URI都是URL,所以对一般的网络链接,我们既可以称之为URL,也可以称之为URI,我个人习惯称URL。

但是URL也不是谁便写的,他也是要遵循一定的格式规范的,基本的组成格式如下:

scheme:// [username:password@] hostname [:port] [/path] [;parameters] [?query] [#fragment]

其中括号包括的内容代表非必要部分,比如 https://www.baidu.com 这个URL,这里就只包括了scheme和hostname两部分,没有port、path、parameters、query、fragment。这里我们分别介绍一下几部分代表的含义和作用。

  • scheme:协议。常用的协议有http、https、ftp 等,另外scheme也被常称作protocol,二者都代表协议的意思。
  • username:password:用户名和密码。在某些情况下URL需要提供用户名和密码才可以访问,这时候可以把用户名和密码放在host前面。比如https://ssr3.scrape.centr这个URL需要用户名和密码才可以访问,直接写为https://admin:admin@ssr3.scrape.center则可以直接访问。
  • hostname:主机地址。可以是域名或IP地址,比如https://www.baid.com这个URL中的hostname就是www.baidu.com,这就是百度的二级域名。比如https://8.8.8.8这个URL中的hostname就是8.8.8.8,他是一个IP地址。
  • port:端口。这是服务器设定的服务端口,比如https://8.8.8.8:12345这个URL中的端口就是12345.但是有一些URL中没有端口信息,这是使用了默认的端口。http协议的默认端口是80,https协议的默认端口是443。所以 https://www.baidu.com 其实是相当于https://www.baidu.com:443,而http://www.baidu.com其实相当于http://www.baidu.com:80。
  • path:路径。指的是网络资源在服务器中的指定地址,比如https://github.com/favicon.ico中的path就是favicon.ico,指的是访问GitHub路径下的favicon.ico。
  • parameters:参数。用来指定访问某个资源时的附加信息,比如https://8.8.8.8:12345;user中的user就是parameters。但是parameters现在用的很少,所以目前很多人会把参数后面的query部分称为参数,甚至把parameters和query混用。严格意义上来说,parameters是分号(;)后面的内容。
  • query:查询。用来查询某类资源,如果有多个查询,则用&隔开。query其实非常常见,比如https://www.baid.com/s?wd=nba&ie=utf-8,其中的query部分就是wd=nba&ie=utf-8,这里指定了wd是nba,ie是utf-8.由于query比刚才说的parameters使用的频率高很多,所以平时我们见到的参数、GET请求参数、parameters、params等称呼多数情况指代的也是query。
  • fragment:片段。他是对资源描述的部分补充,可以理解为资源内部的书签。目前他有两个重要的应用,一个是用作单页面路由,比如现代前端框架Vue、React都可以借助它来做路由管理;另一个是用作HTML锚点,它可以控制一个页面打开时自动下滑滚动到某个特定的位置。

相关推荐

  1. HTTP基本原理

    2024-07-17 00:24:02       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 00:24:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 00:24:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 00:24:02       57 阅读
  4. Python语言-面向对象

    2024-07-17 00:24:02       68 阅读

热门阅读

  1. Git 的基本命令和使用方式

    2024-07-17 00:24:02       22 阅读
  2. 1.3Zygote

    2024-07-17 00:24:02       21 阅读
  3. 精准打击:Conda中conda remove命令的高效使用指南

    2024-07-17 00:24:02       22 阅读
  4. react项目使用EventBus实现登录拦截

    2024-07-17 00:24:02       20 阅读
  5. MySQL 关键字 IN 与 EXISTS 的使用与区别

    2024-07-17 00:24:02       22 阅读
  6. 关于ARP欺骗

    2024-07-17 00:24:02       20 阅读
  7. 20. Python读取.mat格式文件通用函数

    2024-07-17 00:24:02       15 阅读
  8. wxml与标准的html的异同

    2024-07-17 00:24:02       17 阅读
  9. 优雅退出Conda环境:conda deactivate命令的妙用

    2024-07-17 00:24:02       21 阅读
  10. 原码补码反码移码

    2024-07-17 00:24:02       18 阅读
  11. Linux 多进程编程详解

    2024-07-17 00:24:02       20 阅读
  12. [Css-in-js]wyw-in-js的使用

    2024-07-17 00:24:02       20 阅读