URL(Uniform Resource Locator),统一资源定位符,目的是定位互联网上面的资源,由互联网之父蒂姆·伯纳斯-李发明。
URL的标准格式如下:
[协议类型]://[服务器地址]:[端口号]/[文件路径][文件名]?[查询]#[片段ID]下面分别就上面的组成部分进行讨论:
协议类型
URL中用到的协议类型主要有三种:
- HTTP:超文本传输协议
- HTTPS:超文本安全传输协议,与HTTP相比增加了TLS/SSL层
- FTP:文件传输协议
协议类型部分的的作用在于指定资源要通过何种协议来进行获取,譬如说我要访问百度的主页,那就需要用到HTTP或者HTTPS协议,用FTP协议是无法获取的
服务器地址
URL中的服务器地址可以分为两类:
- 域名
- IP地址
IP地址互联网为连接到它的主机所分配的独一无二的地址,它的作用相当于地球的经纬坐标,用于定位互联网上面的主机,而域名则是IP地址的别称,譬如说坐标(116.403971,39.916605)的别称为故宫博物院。
当我们输入域名到浏览器当中,浏览器是无法根据域名直接定位到服务器地址的,它需要将域名交给DNS服务器(Domain Name System,域名系统),让它返回域名具体的IP地址,然后才能向服务器发起请求。这个过程相当于如果我们仅仅知道故宫的名字是没办法去到那里的,我们还需要根据故宫这个名字查询到它的坐标才能知道它在地球上的具体位置。
IP地址与域名的关系可以分为三类:
- 一个域名对应一个IP地址
- 一个域名对应多个IP地址。这就类似故宫这个名字可以对应北京故宫和台北故宫两个地方的坐标,典型应用是负载均衡
- 多个域名对应一个IP地址。类似北京故宫与紫禁城都是指同一个地方,典型的应用是共享主机。
再回到域名,域名系统是具有层级结构的,下面这张图清晰展现了这个层级结构

- 最顶层"."为根域
- 第二层".org"为顶级域,隶属于根域
- 第三层".wikipedia.org"为二级域,隶属于.org顶级域
- 第四层"en.wikipedia.org"为三级域,隶属于.wikipedia.org二级域
端口号
端口号的作用在于让同一台服务器提供多种服务,一个端口对应着一种服务。以医院为例,在同一个医院里面,挂号跟拿药是需要在不同的窗口操作的。当我们请求资源的时候,是需要指定对应服务器上面的端口号,否则服务器是不知道你要的资源要通过哪个服务来获取你需要的资源。
资源路径
服务器上面放置着各种各样的资源,当我们确定了端口号,我们还需要提供我们需要的资源的具体位置,也就是资源路径,确定了这个具体位置,服务器就能获取对应的资源给我们了。就好比我们去麦当劳点餐,确定了其中一个服务员以后,还要说出我们需要的是餐牌上面的什么套餐,服务员才能给我们对应的食物。
查询
我们请求一个资源的时候,可能还需要某些额外的要求,此时就需要查询部分提供对应的信息了。以麦当劳为例,我们要了一杯可乐,但是不要冰,这个不要冰的要求就是查询的作用。
片段ID
片段ID的作用是定位到具体资源的某个位置,这部分是不会发送给服务器的,因为服务器只会把资源整体发送用户,具体要看哪个位置需要用户得到资源以后自行操作。这就好比你到麦当劳要了一个鸡腿堡,但是只想吃鸡腿肉,服务员是不会只把鸡腿肉给你的,你也只能拿到鸡腿堡以后再拿鸡腿肉出来吃。
总结
总而言之,将URL从左到右看是一个对资源定位逐步细化的过程,先确定协议,然后确定主机,确定主机上面具体的服务,再确定主机具体服务中资源的具体位置,然后对资源的具体要求,最终确定资源的具体片段。