之前大致,讲解了URL的各个部分。现在来详细说明一下
shcemes(规则)
规则是主要的标识符来获取资源(用哪种方式来获得资源)。他告诉应用该使用该使用什么样的协议来和资源交流。
就像我们之前使用HTTP URL 就是http规则
hosts and ports(主机和端口)
为了要找到在互联网上的资源,我们的应用需要知道是哪一个机器里面有这样的资源。所以主机的名字就要提供出去。就像我们上面
的例子。tangwentao3014.ouzhe.com这个就是主机的名字或者是他的IP地址。下面的俩个地址其实指向了同一个资源
http://tangwentao3014.ouzhe.com:80/resume.php
http://209.190.85.35:80/resume.php
这里面第一个是主机名字,第二个使用的IP地址。端口地址是表示服务器上哪一个端口在侦听。在TCP协议上的HTTP协议,
默认的端口号是80
usernames and passwords(用户名和密码)
用户名和密码是最受关注的部分了。有很多主机在你获取它上面的资源的时候,需要提供用户名和密码。FTP协议就是最简单常见
例子。
ftp://ftp.prep.ai.mit.edu/pub/gnu
ftp://anonymous@ftp.prep.ai.mit.edu/pub/gnu
ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu
http://joe:joespasswd@www.joes-hardware.com/sales_info.txt在上面的几个例子看来。第一个是没有账号和密码部分,只有我们常见的,规则,主机,和路径。但是在当应用需要这个URL
提供账号和密码的时候,就像FTP,他通常会使用一个默认的用户名和密码,当你没有提供账号和密码的时候。。例如你使用
浏览器来获取FTP上面的额资源时,而没有输入账号和密码,他就会放入anonymous来作为你的用户名,和一个默认的密码
IE是IEUser NTEscape使用mozila
第二个例子里面,有一个用户名而不是anonymous,这个账号和主机部分连起来看就像是Email地址 使用@符号来把账号和用户名
和URL的其他部分隔开
在第三个例子里面,使用账号和密码,在账号和密码之间用:隔开
paths(路径)
路径部分就来指出资源在主机的什么位置。路径通常是像分层的文件结构。下面这个例子
http://tangwentao3014.ouzhe.com:80/resume.php
这里面路径就是/resume.php就像是UNIX的文件系统。路径表现的是主机如何存储资源的。 HTTP URL能用/来分开每一个路径
parameters参数
对于许多规则,一个简单的主机+路径这样的方法来定位一个对象是不够的,还要靠那个端口在侦听,用户名和密码,还有很多
协议光光靠这些可不行他们还需要更多信息。应用在解析URL来获取资源的时候还需要一些协议的参数。否则服务器就不会回应
或者出错。好吧我们来句一个例子。FTP协议有俩种传输方式,二进制和文本。你肯定不想你的二进制图像文件,以文本的方式
传递。因为文本传递会破坏掉文件。
再给服务器的参数他们需要看着顺序,URL里面有一个参数部分这个部分就像是 名字和值得列表 使用;分号来URL其他部分
分开。他们提供了应用来获取资源的额外信息。例如
ftp://prep.ai.mit.edu/pub/gnu;type=d在上面的例子里面里面有一个参数 type=d 名字是type 值是d
就像我们之前提到过的HTTP URL的路径部分是可以被分开的下面的就是在路径下面传参数的例子。
http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true
query strings(查询语句)
在一些资源里面,有一些像是数据库服务,有查询等功能的资源,有时就要这样的提哦阿健。
http://tangwentao3014.ouzhe.com:80/resume.php?name=twt像是这样的就能把name的值传进去