书籍有 ISBN 号,公交车有线路号,银行账户有账户编号,个人有社会保险号,而 URL 就是因特网资源的标准化名称,URL 指向每一条电子信息,告诉你它们位于何处,以及如何与之进行交互。
URL 是通过描述资源的位置来标识资源的,而 URN 则是通过名字来识别资源的,与它们当前所处位置无关。那么看一下它的组成部分。
https://www.baidu.com/index.html?query=test&userName=testName
1、协议(http),协议可以告知 浏览器客户端怎样访问资源,这里 URL 说明要使用 HTTP 协议,也可以是其他协议,如 https 、ftp 、rtsp 、smtp 等。
2、主机名又叫域名(www.abc.com),域名会对应一个ip地址,这部分告知 Web 客户端资源位于何处。
3、路径(index.html),资源路径说明了请求的是服务器上哪个特定的本地资源。
://:@:/;?#
协议(scheme):访问服务器以获取资源时要使用哪种协议
用户(user):某些方案访问资源时需要用户名和密码来认证(如 ftp),默认值是匿名用户
密码(password):用户名后面可能要包含的密码,中间由冒号分隔
主机(host):资源宿主服务器的主机名或点分 IP 地址
端口(port):资源宿主服务器正在监听的端口号,每个方案都有默认的端口号,如 HTTP 的默认端口号为 80
路径(path):服务器上资源的本地名,由一个斜杠将其与前面的 URL 组件分隔开来
参数(params):参数为应用程序提供了访问资源所需的所有附加信息(如 type=d 表明访问的资源是个目录),参数为 key/value 对,URL 中可以包含多个参数,用分号分隔
查询(query):用来查询某类资源,用问号与其他组件隔开,如果有多个查询,则用 & 隔开,如 https://www.taobao.com/inventory.cig?item=12731&color=blue
片段(frag):对一个带有章节的大型文本文档来说,资源的 URL 会指向整个文本文档,但是我们可以根据片段来显示我们感兴趣的章节,片段表示一小片或一部分资源的名字,用 # 与其他组件隔开
1、相对 URL :相对 URL 是一个资源的便捷缩略方式,如 ./index.html
2、绝对 URL :绝对 URL 中包含有访问资源所需的所有信息,如 http://www.abc.com/index.html
3、自动扩展 URL :比如我们访问百度的时候,我们直接访问 baidu.com 即可,浏览器会自动扩展,自动扩展有两种方式,第一种是根据主机名来扩展,比如你输入 yahoo ,则自动扩展为 www.yahoo.com ;第二种是根据历史记录来扩展,也就是浏览器将你访问过的 URL 历史存储起来,下次输入 URL 时会自动扩展。
URL 字符集:默认的计算机系统字符集通常都倾向于以英语(US-ASCII)为中心,虽然美国用户使用起来很方便,但却不支持其他国家的语言,现在我们一般都是用 utf-8 作为字符集(支持多国语言)
例1:http://mail.163.com/index.html
1)http://:这个是协议,也就是HTTP超文本传输协议,也就是网页在网上传输的协议。
2)mail:这个是服务器名,代表着是一个邮箱服务器,所以是mail。
3)163.com:这个是域名,是用来定位网站的独一无二的名字。
4)mail.163.com:这个是主机名(网站名),由服务器名+域名组成。
5)/:这个是根目录,也就是说,通过网站名找到服务器,然后在服务器存放网页的根目录
6)index.html:这个是根目录下的默认网页(当然,163的默认网页是不是这个我不知道,只是大部分的默认网页,都是index.html)。
7)http://mail.163.com/index.html:这个叫做URL,统一资源定位符,全球性地址,用于定位网上的资源。
例2:
像163一样,域名是163.com,想建立一个www服务器,所以www.163.com有了,又想整个邮箱服务器,ok,mail.163.com有了。
例3:
以http://www.sina.com.cn/为例,http是通信使用的协议,sina.com.cn是域名,www是提供服务的机器的名字(计算机名),计算机名+域名才是主机名,即www.sina.com.cn是主机名。再举个例子,http://blog.sina.com.cn/中,blog是提供博客服务的那台机器的名字,sina.com.cn是域名,blog.sina.com.cn是主机名。
域名还分级,从后往前级别依次降低,sina.com.cn中,cn是顶级域名,表示中国,com是二级域名,表示商业机构(commercial),sina是三级域名,一般用自己的名字。
补充:
http://mail.163.com/index.html,其中,index.html是默认网页。但是,我们输入网址的时候,一般直接输入mail.163.com或者www.baidu.com,为什么呢?当我们访问www.baidu.com时,浏览器会自动帮我们加上http://,变成http://www.baidu.com。
而百度的服务器,收到该请求后,会自动加上/,变成:http://www.baidu.com/。百度服务器会在该目录下寻找index.html或其他默认网页,也就是百度的主页,找到后,通过http协议返回给你,也就是你看到的百度主页。