从磁盘文件路径到统一资源定位符URL
本节目标
了解磁盘文件系统与WEB页面系统的不同; 了解URL的基本格式
磁盘文件路径与URL地址
以下几种地址格式,有何不同?哪一种更适应网络时代?
- C:\server\WWW\index.html
- /opt/server/WWW/index.html
- http://127.0.0.1/index.html
- file:///C:/server/WWW/index.html
答案如下:
- 这是一个windows系统中的磁盘文件路径
- 这是一个Linux或Mac系统中的磁盘文件路径
- 这是一个url,即俗称的链接地址
- 这也是一个url,但专用于表达本地机器上的磁盘文件资源
磁盘文件路径
磁盘文件系统的路径格式起源于单机时代,并没考虑到如何直接共享给不同的机器去使用。如果A机器需要用到B机器上的 c:\doc\x.txt 文件,只能是将 x.txt 拷贝到软盘后再拷贝到A机器上的某个位置,形成新的本地路径,如 E:\txt\x.txt
随着网络时代的兴起,多个机器之间需要直接进行文件的共享,于是发明了各种共享的协议及工具,譬如:
- ftp: 二进制文件的共享机制,由ftp客户端和ftp服务端组成
- http: 文本文件的共享机制,由http客户端和http服务端组成
- smb : windows网络邻居使用的文件共享协议
- p2p: 如迅雷、BT、电驴等
网络协议
这些协议及工具的公有特性,即:
- 定义一套自有的路径格式,譬如'smb://network/c/doc/x.txt'等
- 访问者只需要知道逻辑的访问地址,并不需要关心实际的存储位置,譬如'smb://network/c/doc/x.txt' 这个文件不一定存储在c盘,仅仅看起来像是。
- 共享机制的客户端和服务器将文件的下载过程完全隐藏和透明化了,从而允许访问者好象在使用本地文件一样使用远程文件
URL地址格式
统一资源定位符:URL(Uniform Resource Locator),用于为WEB网上的每一个资源或页面赋予一个唯一的地址,详细可查看:
URL实例 1
http://www.example.com/news/index.php?tag=recent&order=desc
- 协议 Protocol: http:// 或者 https:// 。 后者为加密的http协议,以前常用于银行、支付等场景,现在已广泛用于互联网的各个场景
- 主机名 Host name: www或者blog等。一般约定www为域名的默认主机名
- 域名: example.com。 即该站点申请注册获得的域名
- 路径 Path : /news/list.php。 资源的具体路径,可以是静态页面如html,也可以是动态页面php等,也可以是图片等二进制资源
- 参数Parameter: tag=recent&order=desc。 一般适用于动态页面资源,即如果将动态资源视作一个函数,则传入不同的参数,将返回不同的结果
url实例 2
http://www.example.com:8080/news/index.php?boardID=5&ID=24618&page=1#name
一个完整的URL包括以下几部分:
协议部分:该URL的协议部分为“http”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等。 本例中使用的是HTTP协议。 在"HTTP"后面的“://”为分隔符
- 私有协议: tencent:// chrome://
域名部分:该URL的域名部分为“www.example.com”。一个URL中,也可以使用IP地址作为域名使用
www
是主机名,example.com
是域名
端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口m,即80
虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”
文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.php”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名
锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分
参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
中文URL
url中是不允许直接使用中文或其它一些特别字符的,比如空格符。如需要使用,则必须使用url编码进行转义。因此,当我们访问 URL 这个链接,在浏览器的里看到的是http://baike.baidu.com/item/URL格式
,而复制到文本编辑器后却会是http://baike.baidu.com/item/URL%E6%A0%BC%E5%BC%8F
。
一些特殊的协议或url
- chrome://settings
- tencent://mail?uid=130xxxx
- thunder://QUFodHRwOi8veGlhb2JhaS5ydWFuamlhbmRvd24uY29tOjc0NTcdd2luZG93cdyB
这些定制的协议是如何工作的?或者说,浏览器是如何识别和处理这些url的?
站点、虚拟站点、Web根目录
- 站点:一组页面的集合,独立为一个整体,以域名作为唯一标识。
- 虚拟站点: 早期一个站点对即应于一台物理机器(可以采用物理地址作为标识)。但为了节约资源,后台一台物理机器上可以架设多个站点,所以称之为虚拟站点。各虚拟站点之间使用域名为标识
- Web根目录:指URL中的根目录(即`/`)所对应的本地机器的磁盘目录。一般URL中的目录和文件称之为虚拟目录和虚拟文件或虚拟路径,对应的本机资源则称之为物理路径。
- 注意:物理路径不一定是磁盘文件