前端 — URL、URI、URN概念和区别整理,以及URL语法规则

URL(Uniform Resource Locator),统一资源定位符。表示了互联网上资源的位置,同时也可选择性携带资源的访问方法。但是不确定该位置是否有相应的资源,若资源位置做过变动,之前的URL将无法访问到该资源。

一般由三部分组成(文章下面待会详述):

  • 1、协议(或称为服务方式)
  • 2、存有该资源的主机地址(和端口号)
  • 3、资源在该主机中的具体地址(目录、文件名)

http://www.jaykoo.com:80/my/url/location.html

---------------------------------------------
//协议:http
//主机地址:www.jaykoo.com
//端口号:80
//文件在主机中地址:/my/url/location.html

  

URN(Uniform Resource Name),同一资源名称。URN 是作为特定内容的唯一名称使用的,与目前的资源所在地无关。使用这些与位置无关的URN,就可以将资源四处搬移。通过URN,还可以用同一个名字通过多种网络访问协议来访问资源。

常见的,老司机们在magnet的格式中:

magnet:?xt=urn:btih:23333333
----------------------------
下划线标注了该资源的URN

  

URI(Uniform Resource Indentifier),统一资源标识符。用于标识在世界范围内某一唯一的互联网资源字符串。通过这个字符串规则,我可以清楚地认知到这个网络资源。具体怎么标识?可以用资源的名称(Name)、定位(Location)来标识,或者以上两者都有,还有可能是其他的方法。

比如在web中,所有的文件都由“ftp:xxxxx”定义,每个文件都有唯一的“ftp:xxxxx”,那么这个“ftp:xxxxx”就是一个URI

已知具体的两种方法URL和URN都是URI的实现:

  • URL:通过资源的位置信息(Location)字符串(http://www.jaykoo.com:80/my/url/location.html),来标识一个资源
  • URN:通过资源的名字信息(Name)字符串(urn:btih:23333333)标识

可以说,URL和URN都是URI的子集,因此,一切URL和URN都是URI。


 

URL语法

格式

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

组件

组件 描述 默认值
方案(scheme)

访问服务器以获取资源时要使用哪些协议,常见如:

http、https、ftp等

无  
用户(user)

很多服务器都要求输入用户名和密码才会允许用户访问数据,如FTP服务器。

例子:jaykoo是用户名、mypasswd是密码

ftp://jaykoo:mypasswd@ftp.prep.edu/pub/name

匿名
密码(password) 如上,用户名与密码之间,用冒号(:)分隔 <E-mail 地址>
主机(host)

服务器主机名或IP地址。

主机名:www.jaykoo.com

IP:123.45.67.89

端口(port)

资源宿主服务器正在监听的端口号,通过特定端口号访问特定资源

(默认情况下http 80 ; https 443 ;也可以单独指定)

每个方案特有
路径(path) 资源位于服务器的位置,用(/)分隔
参数(params)

负责解析URL的应用程序有时候需要通过参数来访问资源,否则光通过协议、主机、端口这些信息可能不能访问到资源,甚至访问错误的资源。参数由(;key1=value1;key2=value2)设定。

同一URL下不同的路径段中可以分别配置上参数,如:

http://www.jaykoo.com:80/my;type1=a;type2=b/home;type=safe/index.html;id=666

其路径 —— /my/home/index.html 下不同路径段分别配置了参数。

查询(query)

很多资源,比如数据库服务、搜索引擎,都可以通过提问题或进行查询来缩小请求资源的范围

具体格式(?key1=value1&key2=value2)

http://www.jaykoo.com/index.html?name=jay&item=233

片段(frag) #代表网页中的一个位置,其右面的字符就是该位置的标识符(一般情况下,锚链接会用到)

 一些常用Web协议(待扩充)

http

默认端口:80

格式:

  http://<host>:<port>/<path>?<query>#<frag>

  (路径<path>中可以传参<params>(;key=value),https同)

https

与http唯一区别就是用了SSL(为HTTP连接提供了端对端的加密机制)。其余语法基本相同。

默认端口:443

格式:

  https://<host>:<port>/<path>?<query>#<frag>

ftp

文件传输协议。用来在FTP服务器上传或下载文件,并获取服务器上的目录结构内容列表。

默认端口:标准命令TCP端口号为21,Port方式数据端口为20

基本格式:

  ftp://<user>:<password>@<host>:<port>/<path>;<params>

rtsp,rtspu

 通过实时流传输协议(Real Time Streaming Protocol)解析的音、视频媒体资源的标识符。rtspu的u指的是用的UDP协议获取资源。

rtsp默认端口:554

基本格式:

  rtsp://<user>:<password>@<host>:<port>/<path>

  rtspu://<user>:<password>@<host>:<port>/<path>

file

主机上可以直接访问的文件。

基本格式:

  file://<host>/<path>

以上主机名可以省略,默认访问本机文件

telnet

用于访问交互式业务。

默认端口:23

基本格式:

  telnet://<user>:<password>@<host>:<port>/

posted @ 2018-11-21 13:59  _JayKoo  阅读(1336)  评论(0编辑  收藏  举报