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锚点,它可以控制一个页面打开时自动下滑滚动到某个特定的位置。
  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值