域名和IP地址
-
域名
域名和
IP
地址一样都是用来做网络地址标识的,相对于IP
来说域名更便于用户记忆 -
IP地址
互联网协议地址(Internet Protocol Address),是
IP
协议提供的统一地址格式计算机之间想要实现相互通信,就必须要有唯一的网络地址标识,即
IP
地址。每台联网计算机都依靠IP
地址来互相区分、相互联系 -
域名和IP地址的关系
在互联网上,
域名
和IP
地址之间是一对一
或多对一
的关系,也就是说一个IP
地址可以对应多个域名,但一个域名只能有一个IP
地址 -
总结
IP
地址是面向网络的,而域名则是面向用户的计算机之间网络通信只认
IP
地址,所以域名和IP
地址之间的转换工作被称之为域名解析
域名解析由专门的域名解析服务器来完成,即
DNS
服务器
DNS域名解析过程
-
过程描述
当用户通过域名访问一个页面时,浏览器会先检查
DNS
缓存中有没有访问域名对应的解析过的IP
地址如果有,则解析结束,建立
TCP
连接如果没有,浏览器会检查操作系统的
hosts
文件,从中寻找对应的IP
地址如果有,则解析结束,建立
TCP
连接如果没有,操作系统会向本地域名服务器请求解析(这台服务器一般在所在城市的某个角落,距离比较近且性能相对较好)
如果有,则解析结束,建立
TCP
连接如果没有,见下图所示(文字描述省略)
-
过程图示
Name Server
服务器指的是访问的网站域名提供商的服务器递归查询
主机向本地域名服务器的查询迭代查询
本地域名服务器向根域名服务器的查询
DNS解析优化方案
-
HTTP页面自动解析
在页面加载的过程当中,浏览器会自动将超链接
href
属性中的域名解析为IP
地址,但为了确保安全性,HTTPS
页面中已不再允许自动解析 -
HTTPS页面自动解析
通过HTML标签方式
<meta http-equiv="x-dns-prefetch-control" content="on"> 复制代码
通过设置响应头的方式
ctx.set('X-DNS-Prefetch-Control', 'on') 复制代码
on
表示开启解析,off
表示关闭解析 -
手动解析
<link rel="dns-prefetch" href="//file.cdn.com"> 复制代码
开启指定域名的预解析功能,多用于 优化 CDN 资源,推荐在项目中使用。最佳使用位置如下
<meta charset="utf-8"> <link rel="dns-prefetch" href="//file.cdn.com"> 复制代码
-
优化总结
DNS
请求消耗的带宽非常小,但延迟有点高,尤其是在手机网络上尤为明显,通过DNS
预解析可以明显的减少一些延迟可以减少用户点击链接时的等待时间,从而提升页面的响应速度
拓展知识
-
什么是hosts文件
操作系统中一个没有扩展名的系统文件,可以用来存储
域名
和IP
的映射关系 -
修改hosts文件
在
hosts
文件中,以#
号开头的为注释,不起作用 -
一起交流学习
加群交流看沸点