【一文带你理解URI 和 URL 有什么区别?】当我们打开浏览器 , 要访问一个网站或者一个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的必须部分 。
文件名省略情况如下:
- http://www.gitee.com/dir/
推荐阅读
- 「自动化运维」带你入门ansible
- 2022年新版Windows 11升级指南:准备工作,一文读懂
- 电脑装哪个系统好,win7还是win10?一文消除你的纠结
- 一文带你搞定TCP挥手
- 一文弄懂Redis缓存一致性最佳实践参考案例
- 红茶的历史,遵义红茶的起源
- 一文看穿跨域BGP/MPLS IP VPN三方案
- 深入理解百度在离线混部技术
- 一文读懂Access数据库,从此不用Access数据库
- 深入理解glibc malloc:malloc 与 free() 原理图解