当你上网时,在地址栏输入: www.baidu.com 的时候,你知道弹出的那个百度首页是从哪里来的吗?
对,是从网站服务器调取过来的,这个过程是通过域名解析获得IP地址后,然后向网站服务器发送请求,网站服务器做出响应,最后再将这个网页发送到你的浏览器。
再详细一点的描述是,每个域名( www.baidu.com )背后实际上是有个地址,这个地址代表的是网站服务器的地址。在互联网上,域名的存在只是便于记忆,它背后真实的识别方式是IP地址。
当我们在浏览器上输入域名后,我们的电脑会通过一个叫DNS的系统去解析这个域名,并获得IP地址。
这个过程中还会涉及到域名指向的设置,我们知道域名是有顶级域名( baidu.com ),二级域名( www.baidu.com )之分的,当多个域名都指向一个网站服务器上时,需要将这些子域名(顶级域名下面的二级域名、三级域名都称之为子域名)设置并指向自己的网站服务器上的,这个动作一般称之为A记录,又称IP指向。
说到这里实际上就会产生一个问题,就是当服务器需要更换时,这些原本指向这台服务器的域名就需要重新设置,并指向新的服务器,这样就会产生比较大的工作量。
说到这我们就要来说下CNAME。
简单来说,A记录就是把一个域名解析到一个IP地址,而CNAME记录就是把域名解析到另外一个域名。
比如 www.baidu.com ,这个二级域名解析到的是一个服务器的IP地址,比如8.8.8.8,而CNAME是将新域名,比如: a.www.baidu.com 解析到另外一个域名,比如: www.baidu.com 。
当新域名产生后都指向CNAME域名后,在发生服务器需要更换或者迁移时,就只需要把 www.baidu.com 这个域名做重新设置就可以了,这样就减少了很多工作量。
CNAME的应用还远不止于此,在CDN(内容分发网络)上也是不可缺少的一环。
CDN的主要功能是将原本离用户比较远的源站服务器,通过丰富的节点(缓存服务器)放到离用户最近的地方,实现用户对互联网上资源的快速访问。
这个快速访问的过程就需要CNAME的参与。
原理是这样的:
用户向浏览器提供要访问的域名,浏览器对域名进行解析,由于 CDN 参与后,对域名解析过程进行了调整,解析的结果不再一个IP地址,而是该域名对应的 CNAME 。
但 CNAME 无法完成最终内容的获取,所以,浏览器需要再次对获得的 CNAME 进行解析,以得到实际的 IP 地址。在此过程中,CDN会根据用户的实际地理位置信息解析对应的 IP 地址,使得用户能就近访问。
这个过程中, CNAME的主要作用是配合CDN的负载均衡系统将CNAME背后对应的节点IP分配给不同的用户去访问。
总的来讲, CNAME提供了单一服务器和海量服务器的在管理
访问上的灵活性。单一服务器的场景下,通过将大量子域名指向到CNAME,再由 CNAME 指向到单一域名,解决了服务器更换、迁移带来的大量域名重新指向的问题。
另一方面,CNAME配合负载均衡系统,还可以实现将大量访问需求通过CNAME指向到多台服务器,以提高用户访问的速度。
由于用户访问源站业务有性能瓶颈,通过cdn技术把源站的内容缓存到多个节点。用户向源站域名发起请求时,请求会被调度至最接近用户的服务节点,直接由服务节点直接快速响应,有效降低用户访问延迟,提升可用性。
了解cdn需要先了解一下知识点:
说再多也不如实际应用,让我们从例子中了解dns解析流程
nslookup 是dns解析的命令,server 10.0.0.1是公司内部的dns服务器的ip. 139.196.3.197是请求域名的ip。
详细的流程使用dig命令查看
让我们来一步步分析解析流程:
CNAME 即:别名记录。这种记录允许您将多个名字映射到另外一个域名。通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“ host.mydomain.com ”(A记录)。它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。这两个别名的全称就 http://www.mydomain.com/ 和“ mail.mydomain.com ”。实际上他们都指向“ host.mydomain.com ”。
在cdn中实现原理是:给源站域名添加CNMAE,别名为加速节点的域名。当用户向源站发起请求时,dns服务器解析源站域名时会发现有CNMAE记录,这时dns服务器会向CNAME域名发起请求,请求会被调度至加速节点的域名。
假设您的业务源站域名为 www.test.com ,当域名接入 CDN 开始使用加速服务后,您的用户发起 HTTP 请求,实际的处理流程如图所示:
链接: https://www.jianshu.com/p/14dede92b02f
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)