域名和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文件中,以#号开头的为注释,不起作用 -
一起交流学习
加群交流看沸点