目录
1 域名系统概述
许多应用层软件经常直接使用域名系统DNS,但网络通信底层是基于IP的。因此需要进行域名解析,即找到域名到IP地址的映射,这个功能是由若干个域名服务器程序完成的,运行域名服务器程序的机器叫做域名服务器。域名就像是IP地址的别名,方便记忆。指导这个过程的就是DNS域名解析协议。
2 互联网域名结构
任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。
如图,用点分割开不同级别的域名,越往右域名级别越高。
顶级域名比如国家级顶级域名,通用顶级域名等:
由这个域名空间层次图可以看到,查找域名应该用自顶向下的方法,先找顶级域名,因为找顶级域名管辖范围内的二级域名,依次三级域名........。根是负责管理所有顶级域名的,所以查找是从根开始的(但实际上,先找的是本地域名服务器)。
根服务器里记录了顶级域名与顶级域名服务器的IP地址之间的映射。
顶级域名服务器记录了二级域名与二级域名服务器地址之间的映射。
。。。。。。
3 域名服务器
树状结构的DNS域名服务器
一个域名服务器负责管辖的范围叫做区,这个服务器也被称为某个区的权限域名服务器,用来保存该区中所有主机的域名到IP地址的映射。一个区中的所有结点是互相连通的。
根域名服务器:负责查找顶级域名服务器
顶级域名服务器:负责查找权限域名服务器
本地域名服务器:不属于上边域名服务器的树状结构
根域名服务器全世界一共13套,世界上大部分DNS服务器都能就近找到一个根域名服务器。
本地域名服务器
当一个主机发出DNS请求的时候,报文最先送到的是本地域名服务器。每一个互联网服务提供商ISP,或一个大学,甚至大学里一个系,都可以拥有一个本地域名服务器。本地域名服务器也叫默认域名服务器。
本地域名服务器的作用是提升查询效率,降低上层服务器负担,原理是替主机进行查询,并保存查询结果。
域名的解析过程
域名解析过程分两大阶段:
第一阶段,主机向本地域名服务器查询,一般采用递归查询。即如果本地域名服务器不知道被查询域名的IP地址,那么它将以DNS客户的身份向根域名服务器发出查询请求报文。
第二阶段,本地域名服务器向根域名服务器的查询,一般采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所查询的IP地址,要么告诉本地域名服务器:”你下一步应当向哪一个域名服务器查询“。然后本地域名服务器进行后续的查询。
查询过程如下图所示:
注意一点,在整个查询过程中,主机只与本地域名服务器通信,即由本地域名服务器来代替主机进行DNS报文询问。
在本地主机上输入y.abc.com,然后回车,DNS解析过程如图所示八步,
第一步:主机问本地域名服务器,y.abc.com对应IP多少
第二步:本地域名服务器如果不知道,就替主机去问根服务器,顶级域名服务器com在哪?
第三步:根域名服务器告诉本地域名服务器顶级域名服务器com的地址
第四步:本地域名服务器跑去问顶级域名服务器com,二级域名服务器abc在哪?
第五步:顶级域名服务器com把二级域名服务器的地址告诉本地域名服务器
第六步:本地域名服务器按地址找到二级域名服务器abc,问,你下边有一个服务器y在哪?注意 这里y已经是真实服务器了,不再是域名解析服务器了。
第七步:权限域名服务器abc告诉本地域名服务器y的IP地址,然后本地域名服务器把 y.abc.com与 IP地址的映射关系保存下来(有时限,过时删除,这便是域名服务器的缓存机制),然后把IP地址给主机。
第八步:主机知道了y.abc.com对应的IP地址,就可以交给网络的下一层进行封装传输啦。
如果接下来再有其它主机要访问y.abc.com,那么当它向本地域名服务器查询的时候,本地域名服务器直接从保存的映射关系中找到对应IP地址给它用,就不用询问什么根域名服务器,顶级域名服务器了,既提升了查询效率,也减轻了上层服务器的负担。
4 万维网www
万维网概念
万维网提供分布式服务,是一个大规模、联机式的信息储藏所,即资源分布在很多的主机上,我们可以通过链接很方便地按需获取分布在其它主机上的资源。
万维网以客户-服务器方式工作。
浏览器就是用户计算机上的万维网客户端程序,要访问的万维网文档所在的计算机运行服务器程序,这个计算机是万维网服务器。客户端程序向服务器程序发出请求,服务器程序向客户端程序发送客户要的万维网文档,然后客户程序显示出万维网文档,这个窗口即页面(page)。
超媒体与超文本
统一资源定位符URL
我们已知万维网中点开某个链接就会打开一个页面,这个页面实际上是通过一个万维网文档得到的。那么怎么标志分布在整个互联网上的万维网文档呢?
这就需要统一资源定位符URL,万维网上的每一个文档在整个互联网的范围内具有唯一的标识符URL。这样,每一个页面都对应了独一无二的URL。URL其实就是某个网站(页面)的网址。
URL格式如下:其中主机即为域名或者IP地址,端口通常可以由协议推出来,端口和路径都可以省略,省略了路径以后通常URL指到互联网上的某个主页。
超文本传送协议HTTP
在万维网客户端程序与万维网服务器程序之间进行交互所使用的协议,是一个应用层协议,使用TCP进行可靠的传输。
超文本标记语言HTML
超文本标记语言HTML可以使万维网页面的设计者可以很方便地用一个超链从本页面的某处连接到互联网上的任何一个万维网页面,并且在自己的计算机上将这些页面显示出来。
搜索引擎
5 输入URL回车之后的过程
主要分为以下几步:
URL解析
DNS查询
TCP链接浏览器发出请求
服务器处理请求
浏览器接收响应
浏览器渲染页面
URL解析
浏览器判断输入的内容是URL还是待搜索的关键字。
DNS查询
浏览器请求解析域名对应的IP地址
首先查看浏览器缓存中有没有目标URL
查看操作系统自己的DNS缓存,本地的Hosts文件
查看路由器缓存
查看本地DNS服务器
如果以上步骤执行完都没有找到目标URL的缓存,则本地DNS服务器会将请求转发到互联网上的根域名服务器,然后进行上文中的迭代查询过程。
最后将解析出的IP地址传给主机。
TCP连接
得到了目标IP地址之后,浏览器客户端进程与服务器进程建立TCP连接(三次握手四次挥手)。
浏览器发出取文件指令,进行计算机网络数据的各层封装,发送数据。
服务器处理请求
服务器接收TCP报文后,对HTTP协议进行解析(请求方法,域名,路径等),并且进行一些验证。假如服务器器配置了HTTP重定向,就会返回一个301永久重定向响应,浏览器就会根据响应,重新发送HTTP请求。(重新执行上边过程)
浏览器接受响应
浏览器接收来自服务器的数据,对资源进行分析
浏览器渲染页面