当我们打开浏览器,要访问一个网站或者一个ftp服务器的时候,一定要输入一串字符串,
比如:

https://blog.csdn.net/

或者:

ftp://192.168.0.111/

这样我们就可以得到一个html格式的页面或者一个文件。

那么这个地址是什么意思呢?

就必须要从URI、URL、URN讲起。

一、URI、URL、URN概念

  • URI = Uniform Resource Identifier 统一资源标志符
  • URL = Uniform Resource Locator 统一资源定位符
  • URN = Uniform Resource Name 统一资源名称

看了这个概念相信大家还是不明白什么意思,

简单来说,就是URI是抽象的定义,不管用什么方法表示,只要能定位一个资源,就叫URI。

本来设想的的使用两种方法定位:1,URL,用地址定位;2,URN 用名称定位。

举个例子:去村子找个具体的人(URI),如果用地址:某村多少号房子第几间房的主人 就是URL, 如果用身份证号+名字 去找就是URN了。

原来uri包括url和urn,后来urn没流行起来,导致几乎目前所有的uri都是url。

三者之间几何关系如下:其实一直有个误解,很多人以为URI是URL的子集,其实应该反过来。URL是URI的子集才对。

URI
RFC 3986

URL是什么

URL代表着是统一资源定位符(UniformResourceLocator)。

作用是为了告诉使用者 某个资源在 Web 上的地址。

这个资源可以是一个 HTML 页面,一个 CSS 文档,一幅图像或一个猫片等等。

比如:

用HTTP协议访问Web服务器:

用FTP协议下载和上传文件时

读取客户端计算机本地文件时

这里面细分,又可以分为好几个部分。

协议

尽管 URL 有各种不同的写法, 但它们有一个共同点, 开头部分的内容必须是协议类型,

可以是http、ftp、mailto或者https,这部分文字都表示浏览器应当使用的访问方法。,会用//为分隔符。

决定了后面部分的写法, 因此并不会造成混乱。

用户名/密码

用户名密码通常可以省略。

域名

域名是www.gitee.com,在发送请求前,会向DNS服务器解析IP。如果已经知道ip,还可以跳过DNS解析那一步,直接把IP当做域名部分使用。

端口

域名后面有些时候会带有端口,和域名之间用:分隔,端口不是一个URL的必须的部分。
当网址为http://时,默认端口为80,
https://时,默认端口是443,
ftp://时,默认端口是21。

文件路径/文件名

从域名的第一个/开始到最后一个/为止,是虚拟目录的部分。虚拟目录也不是URL必须的部分,上述实例http协议url中的虚拟目录是/yikoulinux/chat/blob/master/

从域名最后一个/开始到?为止,是文件名部分;如果没有?,则是从域名最后一个/开始到#为止,是文件名部分;如果没有?#,那么就从域名的最后一个/从开始到结束,都是文件名部分。

比如前面的http url实例,其中文件chat.h在gitee服务器/yikoulinux/chat/blob/master/下:
文件名也不是一个URL的必须部分。

文件名省略情况如下:

  1. http://www.gitee.com/dir/

我们可以这样理解, 以“/” 结尾代表 /dir/ 后面本来应该有的文件名被省略了。 根据 URL 的规则, 文件名可以像前面这样省略。
不过, 没有文件名, 服务器怎么知道要访问哪个文件呢? 其实, 我们会在服务器上事先设置好文件名省略时要访问的默认文件名。 这个设置根据服务器不同而不同, 大多数情况下是 index.html 或者 default.htm 之类的文件名。

因此, 像前面这样省略文件名时, 服务器就会访问 /dir/index.html或者 /dir/default.htm[由web服务器配置]。

  1. http://www.gitee.com/
    这个 URL 也是以“/” 结尾的, 也就是说它表示访问一个名叫“/” 的目录 。 而且, 由于省略了文件名, 所以结果就是访问 /index.html 或者/default.htm 这样的文件了。

  2. http://www.gitee.com
    这次连结尾的“/” 都省略了。 像这样连目录名都省略时, 真不知道到底在请求哪个文件了, 实在有些过分。 不过, 这种写法也是允许的。 当没有路径名时, 就代表访问根目录下事先设置的默认文件 , 也就是 /index.html 或者 /default.htm 这些文件, 这样就不会发生混乱了。

  3. http://www.gitee.com/yikoupeng

一般来说, 这种情况会按照下面的惯例进行处理: 如果Web 服务器上存在名为 yikoupeng的文件, 则将 yikoupeng作为文件名来处
理; 如果存在名为 yikoupeng的目录, 则将 yikoupeng作为目录名来处理 。

rfc

关于协议的说明文档,可以登录下面网站查询:

https://www.rfc-editor.org/

搜索URL协议的说明,就有25个结果。
我们想查看某个协议,点击即可。

可以以任意一种格式查看该文档:

下面只拷贝第一页内容:

Network Working Group                                     T. Berners-Lee
Request for Comments: 1738                                          CERN
Category: Standards Track                                    L. MasinterXerox CorporationM. McCahillUniversity of MinnesotaEditorsDecember 1994Uniform Resource Locators (URL)Status of this MemoThis document specifies an Internet standards track protocol for theInternet community, and requests discussion and suggestions forimprovements.  Please refer to the current edition of the "InternetOfficial Protocol Standards" (STD 1) for the standardization stateand status of this protocol.  Distribution of this memo is unlimited.AbstractThis document specifies a Uniform Resource Locator (URL), the syntaxand semantics of formalized information for location and access ofresources via the Internet.1. IntroductionThis document describes the syntax and semantics for a compact stringrepresentation for a resource available via the Internet.  Thesestrings are called "Uniform Resource Locators" (URLs).The specification is derived from concepts introduced by the World-Wide Web global information initiative, whose use of such objectsdates from 1990 and is described in "Universal Resource Identifiersin WWW", RFC 1630. The specification of URLs is designed to meet therequirements laid out in "Functional Requirements for InternetResource Locators" [12].This document was written by the URI working group of the InternetEngineering Task Force.  Comments may be addressed to the editors, orto the URI-WG <uri@bunyip.com>. Discussions of the group are archivedat <URL:http://www.acl.lanl.gov/URI/archive/uri-archive.index.html>

一文带你理解URI 和 URL 有什么区别?相关推荐

  1. 一文带你理解Java中Lock的实现原理

    转载自   一文带你理解Java中Lock的实现原理 当多个线程需要访问某个公共资源的时候,我们知道需要通过加锁来保证资源的访问不会出问题.java提供了两种方式来加锁,一种是关键字:synchron ...

  2. HTTP协议中URI和URL有什么区别

    目录 1. `URL` 是什么 2. `URI` 是什么 3. `URI` 和 `URL` 之间的区别 1. URL 是什么 URL 即 Universal Resource Locator :称为 ...

  3. URI是什么意思?URI和URL有什么区别?

    URI是什么意思?URI和URL有什么区别? 详解! HTTP = Hyper Text Transfer Protocol URI = Universal Resource Identifier U ...

  4. 一文带你了解RPA和爬虫的五大区别-花漾RPA

    很多小伙伴对于RPA和爬虫两者傻傻分不清楚,今天我们花漾RPA小编就给大家简单讲解一下RPA和爬虫的四大区别,希望能帮到大家. 一文带你了解RPA和爬虫的五大区别 第一.定义不同 rpa机器人简单来说 ...

  5. 解析URI与URL之间的区别与联系

    URI就是一种资源定位机制,它是比较笼统地定位了资源,并不局限于客户端和服务器,而URL就定位了网上的一切资源,只要是网上的资源,都有唯一的URL 今天在看STRUTS配置的时候,发现一个问题,就是在 ...

  6. URI、URL、URN区别

    笔记参考:b站Python小镇 三者关系:URI是一个大的集合,里面包含了URL和URN. URI:全称Uniform Resource Identitfier,也就是统一资源标识符,可以标识互联网上 ...

  7. 独家|一文带你理解机器学习中的“归纳偏好”真正含义!

    ↑ 点击上方[计算机视觉联盟]关注我们 举例子: 三种属性:{白色.黄色.黑色}+{眼睛颜色蓝色.眼睛颜色不一样}+{有铃铛.没铃铛}   判断是不是"猫" 通过机器学习,现在给了 ...

  8. 一文带你理解云原生 | 云原生全景图详解

    关注「开源Linux」,选择"设为星标"回复「学习」,有我为您特别筛选的学习资料~ 1带你了解云原生技术图谱 如果你研究过云原生应用程序和相关技术,大概率你遇到过 CNCF 的云原 ...

  9. 一文带你理解如何解决工作中的需求

    我是歌谣 放弃很容易 但是坚持一定很酷 1前言 在我们的开发过程中 会遇到一些开发的需求 怎么实现 怎么写 怎么做才最合理 2需求处理 拿到一个需求就和做数学题一样 我们要理清所有的关系 由于本文知识 ...

  10. 一文带你理解前后端分离本质

    本文旨在让你理解清楚什么是前后端分离,前后端分离有何价值,并且通过代码带你认识前后端分离架构. 一. 前后端不分离时代 分析前后端分离,则先看看前后端不分离是什么样子的,有对比才能更好理解. 互联网刚 ...

最新文章

  1. 数据库字段命名及设计规范
  2. redis安装+redis主从
  3. 名人尿炕被人发现后怎么办?
  4. 万字长文让你看够幂级数
  5. SD从零开始19 免费货物
  6. mysql 函数多个连接_MySQL数据库中如何连接两个或多个字符串呢?
  7. 本科生一作发10篇SCI,我们硕博生情何以堪啊……
  8. java 耦合解耦_为什么工厂模式可以解耦?why?
  9. 隐式反馈的去噪,模型取得巨大提升!
  10. Linux ftp ldap认证,vsftpd+ldap认证
  11. R语言:三线表(3.生存分析三线表)
  12. 请熟悉SQL server的高手赐教。
  13. 完全停止Oracle中正在运行的JOB
  14. 12306铁路订票系统小思
  15. WIN10安装VMware的管理员权限问题
  16. notepad++之正则表达式的使用
  17. Geometric Transformation(几何变换)
  18. Windows server 2012 主域+辅域
  19. python参考书目_Python 阅读书目推荐
  20. MTL多目标学习介绍综述等

热门文章

  1. 测试自学人必看:软件测试如何找测试项目?
  2. matlab2010改语言,[转载]ubuntu下安装matlab2010及语言环境设置和创建桌面启动
  3. 软考常考知识点整理-项目风险管理计划
  4. JAVA中利用Docx4J组件操作word文档,进行docx格式文档的创建、写入、读取、转换html、图片处理示例、转换pdf
  5. Android Download 下载功能深入研究(二) : 速度提升之探索
  6. python数学实验与建模百度云_Python数学实验与建模
  7. java 货币格式 转换_java格式化数值成货币格式示例
  8. 【8】同步vscode配置和插件【导入导出】、再也不用担心换电脑重新安装插件了
  9. openwrt1907 mt7621配置DDR自适应
  10. 第二章:HLK-7621开发板介绍