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>/ |