DNS的作用
DNS(Domain Name System,域名系统),提供将域名与IP转换地址的服务,网络通信大部分是基于TCP/IP协议的,所以通讯时只能识别IP地址,而不能识别域名,每台主机或服务器都有自己的IP地址,但是我们不可能记下一串数字,通过DNS只需记住有直观意义的域名(主机名)就行
主机名到IP地址的映射有两种方式:
- 静态映射:每台设备都配置常用的主机与IP地址的映射表(hosts文件)
- 动态映射:DNS域名解析系统,域名与IP地址相互映射的一个分布式数据库
一般是先采用静态映射,不成功再采用动态域名解析的方法,可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率
Hosts文件作用
- 加快域名解析:
对于经常访问的网站,直接将映射关系添加在Hosts文件中,不需请求网络上的DNS服务器 - 方便局域网用户:
局域网很少假设DNS服务器,为了访问方便直接建立Hosts文件 - 屏蔽网站:
对于不能或是不应该访问的网站,在Hosts文件中建立错误映射 - 优先级:
Hosts>DNS缓存>DNS主服务器>DNS从服务器
域名的理解
域名:标识主机名称和主机所属的组织机构的一种分层结构,域名使用 . 连接。
就拿www.baidu.com举例:
com:一级域名,表示这是一个企业域名,还有net(网络提供商),org(非盈利组织);
biadu:二级域名,公司名称。
www: www网络协议
只用一台域名服务器不可能来响应所有DNS查询,只能合理组织一个分层的域名服务器集群
域名可分为不同级别,包括顶级域名(根域名)、二级域名、三级域名、注册域名(查找是递归查找)
域名解析过程
- 输入域名后,默认优先查找浏览器缓存,看缓存中是否含有域名对应的IP地址
- 当浏览器中找不到时,会检测系统中的Hosts文件中DNS缓存是否有对应的IP地址
- 如果hosts里没有这个域名的映射,则查找DNS缓存服务器查找
- 若没有,通过DNS服务器就向上级域名服务器中进行查找;
- 最多查到根域名服务器,一定能找到这个域名对应的IP地址。
- 返回结果时,本地回将结果保存,已备下一次使用
在浏览器输入URL后发生了什么
- 根据上面域名解析查找IP地址
- 浏览器给服务器一个HTTP请求
- 服务器决定是否需要重定向(域名与IP地址多对一,需要下载(转移开销远小于处理请求开销))
- 服务器处理请求(请求行,报头,正文)发送响应(状态行,报头,正文)
- 服务器返回一个HTML:没有完全接受时已经开始显示页面了
- 浏览器发送嵌入HTML中的对象资源(图片等),每个资源URL都再经历类似过程
- 浏览器与服务器保持连接,发送异步请求(支持长连接)