有时大家会误以为URL就是网址,其实这是不准确的,在模糊的概念中输入网址后会出现一个页面,为什么输入网址就可以找到资源呢?网址起到了什么作用呢?其实这里面网址是为了方便记忆出现的,通过网址寻找资源是通过与网址绑定的IP寻找到相应的服务器并通过三次握手建立连接,根据URL内容生成HTTP请求,服务器响应并返回相应文件,浏览器进行渲染,显示,进行第四次请求--断开连接.而DNS协议就是为第一步提供域名和IP之间的解析服务的。
DNS(Domain Name System)那么如何通过DNS找到相应的IP呢?
假设我想访问www.baidu.com,需要得到百度的IP地址
首先查询本地hosts文件,没查到将会发送请求给本地的DNS服务器进行查询,而本地DNS服务器是一般网络接入服务商提供。
本地DNS查询将会对本地的缓存记录进行比对,有就返回,没有就继续向根DNS服务器发出请求。
根DNS服务器将会继续对域(com)服务器进行请求查询,域服务器将会返回对应的域名服务器(baidu.com)的解析服务器地址。
本地DNS服务器最后通过返回的域名解析服务器地址进行查询,并将域名和服务器对应关系缓存到本地。
以上是如何通过域名查找到相应IP,可是域名并不是完全体的URL,URL全称Uniform Resource Locator,(统一资源定位符)即互联网中资源(文件)的具体位置。
根据维基百科中定义的统一资源定位符的完整格式:
协议类型:[//[访问资源需要的凭证信息@]服务器地址[:端口号]][/资源层级UNIX文件路径]文件名[?查询][#片段ID]
其中【访问凭证信息@;:端口号;?查询;#片段ID】都属于选填项。]
格式书写入如下:
http://user:pass@www.example.com:80/dir/index.html?uid=1#ch1
其中的www.example.com
就是DNS可解析的地址即域名。
URI全称 Uniform Resource Identity,可以出钱理解为URI用字符串标识某一个资源,不限于网络资源,表示范围更加广泛。
格式如下
scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
http://example.org/absolute/URI/with/absolute/path/to/resource.txt
ftp://example.org/resource.txt
urn:issn:1535-3613
URI可以使用多种scheme来实现多种资源标识,URL 可以认为是 URI的子集。