当我们在地址栏输入:www.baidu.com 的时候,我们的电脑会通过DNS系统去解析这个域名,并获得IP地址。
DNS(Domain Name System[域名系统]),万维网上作为域名和IP地址相互映射的一个[分布式数据库]能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
在这个解析的过程中还会涉及到域名指向的设置。
我们知道域名是有顶级域名(baidu.com),二级域名(www.baidu.com)之分的,当多个域名都指向一个网站服务器上时,需要将这些子域名(顶级域名下面的二级域名、三级域名都称之为子域名)设置并指向自己的网站服务器上的,这个动作一般称之为A记录,又称IP指向。
A (Address) 记录是用来指定域名对应的IP地址记录(将一个域名指向一个ip)。
说到这里实际上就会产生一个问题,就是当服务器需要更换时,这些原本指向这台服务器的域名就需要重新设置,并指向新的服务器,这样就会产生比较大的工作量。说到这我们就要来说下CNAME。
CNAME
CNAME:即别名记录。这种记录允许您将多个域名映射到另外一个域名。
简单来说,A记录就是把一个域名解析到一个IP地址,而CNAME记录就是把域名解析到另外一个域名。
比如www.baidu.com,这个二级域名解析到的是一个服务器的IP地址,比如8.8.8.8,而CNAME是将新域名,比如:a.www.baidu.com解析到另外一个域名,比如:www.baidu.com。
当新域名产生后都指向CNAME域名后,在发生服务器需要更换或者迁移时,就只需要把www.baidu.com这个域名做重新设置就可以了,这样就减少了很多工作量。
当您拥有多个域名需要指向同一服务器IP,此时您就可以将一个域名做A记录指向服务器IP,然后将其他的域名做别名(即CNAME)到A记录的域名上;那么当您的服务器IP地址变更时,您就可以不必对一个一个域名做更改指向了,只需要更改A记录的那个域名到服务器新IP上,其他做别名(即CNAME)的那些域名的指向将自动更改到新的IP地址上(以上操作均需要在DNS处执行)。
如图中所示,如果ip地址(8.8.8.8)改变,普通的dns的每个服务器指向都要便,使用了cname记录后,只需改变baidu.com的指向。
CNAME在CDN中的应用
CNAME的应用还远不止于此,在CDN(内容分发网络)上也是不可缺少的一环。
CDN的主要功能是将原本离用户比较远的源站服务器,通过丰富的节点(缓存服务器)放到离用户最近的地方,实现用户对互联网上资源的快速访问。这个快速访问的过程就需要CNAME的参与。
原理是这样的:
用户向浏览器提供要访问的域名,浏览器对域名进行解析,由于 CDN 参与后,对域名解析过程进行了调整,解析的结果不再一个IP地址,而是该域名对应的 CNAME 。
但 CNAME 无法完成最终内容的获取,所以,浏览器需要再次对获得的 CNAME 进行解析,以得到实际的 IP 地址。在此过程中,CDN会根据用户的实际地理位置信息解析对应的 IP 地址,使得用户能就近访问。
这个过程中, CNAME的主要作用是配合CDN的负载均衡系统将CNAME背后对应的节点IP分配给不同的用户去访问。
总的来讲, CNAME提供了单一服务器和海量服务器的在管理
访问上的灵活性。单一服务器的场景下,通过将大量子域名指向到CNAME,再由 CNAME 指向到单一域名,解决了服务器更换、迁移带来的大量域名重新指向的问题。
另一方面,CNAME配合负载均衡系统,还可以实现将大量访问需求通过CNAME指向到多台服务器,以提高用户访问的速度。
转载自:诺曼底的救赎