从磁盘文件路径到统一资源定位符URL

本节目标

了解磁盘文件系统与WEB页面系统的不同; 了解URL的基本格式

磁盘文件路径与URL地址

以下几种地址格式,有何不同?哪一种更适应网络时代?

  1. C:\server\WWW\index.html
  2. /opt/server/WWW/index.html
  3. http://127.0.0.1/index.html
  4. file:///C:/server/WWW/index.html

答案如下:

  1. 这是一个windows系统中的磁盘文件路径
  2. 这是一个Linux或Mac系统中的磁盘文件路径
  3. 这是一个url,即俗称的链接地址
  4. 这也是一个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说明图

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包括以下几部分:

  1. 协议部分:该URL的协议部分为“http”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等。 本例中使用的是HTTP协议。 在"HTTP"后面的“://”为分隔符

    • 私有协议: tencent:// chrome://
  2. 域名部分:该URL的域名部分为“www.example.com”。一个URL中,也可以使用IP地址作为域名使用

    • www是主机名,example.com是域名
  3. 端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口m,即80

  4. 虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”

  5. 文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.php”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名

  6. 锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分

  7. 参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“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中的目录和文件称之为虚拟目录和虚拟文件或虚拟路径,对应的本机资源则称之为物理路径。
    • 注意:物理路径不一定是磁盘文件

参考手册

results matching ""

    No results matching ""