1.浏览因特网资源
URL是统一资源定位符,它是浏览器寻找信息所需要的资源位置。通过URL人们才可以找到并共享英特网上的资源。
URI即统一资源标识符,是一种比URL更为通用的资源标识符,URL是它的一个子集,URI包括了;两个子集,还有一个是URN。URL是根据资源的路径来标识资源,而URN是根据资源的名称来标识资源,与他们当前所处的位置无关。
比方说如果我们想要获取URL http://www.joes-hardware.com/seasonal/index-fall.html,那么URL分为以下三部分:
- 1.URL的第一部分是方案(scheme),方案告诉web客户端用什么协议访问资源,这个例子使用的是HTTP,其他的方案还有FTP,rtsp等等。
- 2.URL的第二部分是服务器的地址(www.joes-hardware.com),这部分告诉web客户端资源位于何处。
- 3.URL的第三部分是资源路径(seasonal/index-fall.html),相当于是说服务器的地址是告诉了资源的大致位置,那么资源路径则是告诉了我们资源的具体位置。
URL的语法
URL是描述这个资源在互联网中的哪个位置,我们可以用不同的方案(http,ftp,smtp)来访问因特网资源,因此URL语法会随方案的不同而有所不同。即便如此,大部分的方案都遵从相似的语法。
大部分URL方案的URL语法都是由下列9个部分组成:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
几乎没有哪个URL包含了所有这9个部分。URL中最重要的是方案,主机地址,路径。
-
1.方案-使用什么协议
方案规定了使用什么协议访问资源。方案不分大小写,所以HTTP和http是一样的。方案和后面的服务器主机地址之间用:隔开。 -
2.主机与端口
要想要在网络上访问资源,我们需要知道在哪个机器上装载了资源,以及在那台机器的什么地方能够找到能对目标资源进行访问的服务器。URL的主机和端口组件就提供了这两组信息。
主机组件标识了因特网上能够访问该资源的宿主机器,可以用前面例子的主机名www.joes-hardware.com或者IP地址来找到主机名。
端口组件标识了服务器正在监听的网络端口,对下层使用了TCP协议的HTTP来说,默认端口号为80。 -
3.用户名和密码
很多服务器要求用户输入用户名和密码才能访问资源。这里有几个例子:
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,但是用户没有输入用户名和密码,那么浏览器会插入一个默认的用户名和密码。
第二个例子给出了用户名为anonymous,使用@将用户名和密码组件与其他部分分离开。
第三个例子加入了用户名和密码,中间用:隔开。 -
4路径
如果说网络资源是一个人,那么服务器主机地址可以看做是一个村子,光有这个村子的地址还不足以找到这个人,我们还需要知道它在这个小区的哪个街道哪个小区哪个单元,这些信息就是网络资源的路径。我们可以使用/将HTTP路径组件划分为一些路径段。每个路径段都有自己的参数(param)组件。 -
5.参数
为了向应用程序提供它们所需的输入参数,以便正确的与服务器进行交互,URL中有一个参数组件。这个组件就是URL中的名值对列表,由字符;将其与URL的其余部分(以及各名值对)分隔开。比如:
ftp://prep.ai.mit.edu/pub/gnu;type=d
在这个例子中有一个参数type=d,参数名为type,值为d。http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true
这个例子有两个路径段,hammers和index.html,每个路径段都有一个参数,
hammers路径段的参数是sale=false,参数名为sale,值为false,index.html路径段的参数是graphics=true,参数名为graphics,值为true。 -
6.查询字符串
很多资源或者数据库都是可以通过提出问题或者进行查询来缩小请求资源的范围。
假设Joe的五金商店在数据库中维护着一个未售货物的清单,并可以对清单进行查询来判断产品是否有货,那就可以用下列URL来进行查询web数据库,看看编号为12731的货物是否有货。http://www.joes-hardware.com/inventory-check.cgi?item=12731
只有问号右边的内容是新出现的,这部分被称为查询组件。 -
7.片段
有些资源类型,比如HTML,除了资源级之外,还可以做进一步的划分,比如对一个带有章节的大型文本文档来说,资源的URL会指向整个文本文档。
为了引用部分资源或者资源的一个片段,URL支持使用片段组件(flag)来表示一个资源内部的片段。比如URL可以指向HTML文档中一个特定的小节或图片。片段挂在URL的右手边,最前面有一个字符#,比如:
http://www.joes-hardware.com/tools.html#drills
这个例子中,片段dirlls引用了web服务器上页面/tools.html中的一个部分,这部分的名字叫dirlls。
HTTP服务器通常只处理整个对象,而不是对象的片段,客户端不能将片段传送给服务器,浏览器从服务器获得整个资源后会根据片段来显示你感兴趣的那部分资源。
方案的世界
- 1.HTTP
超文本传输协议方案,除了没有用户名和密码,与通用的URL格式相符,如果省略了端口,就默认为80.
基本格式:
http://<host>:<port>/<path>?<query>#<frag>
示例:
http://www.joes-hardware.com/index.html http://www.joes-hardware.com:80/index.html - 2.HTTPS
HTTPS与HTTP实际是一致的,HTTPS为HTTP传输使用SSL提供端到端的加密传输,其语法与HTTP语法相同,默认端口是443。
基本格式:
https://<host>:<port>/<path>?<query>#<frag>
示例:
https://www.joes-hardware.com/secure.html - 3.FTP
文件传输服务器可以从FTP服务器上下载或向其上传文件,并获取FTP服务器上的目录结构内容的列表。
基本格式:
ftp //<user>:<password>@<host>:<port>/<path>;<params>
示例:
ftp //anonymous:joe%40joes-hardware.com@prep.ai.mit.edu:21/pub/gnu/
网友评论