最近使用了一个免费的的CDN,使用的是CloudFlare。
那先回顾一下,一个网站(网页)是怎么访问的。
首先,我们会在浏览器地址栏输入一个域名,例如www.baidu.com
,本例中输入的是usee.tk
,然后经过开始查询DNS,使用DNS解析,常见有两种方式解析到A记录或者CNAME记录,查询不到的话递归DNS直到查询到,递归顺序依次是浏览器、PC(hosts、DNS缓存)、网卡中设置的DNS……最终会到达DNS根服务器。
那么DNS是怎么设置的呢?
首先我们会在域名提供商那里有一个域名,他会提供自己的解析或者设置自己的DNS解析服务器,国内著名的有DNSPOD。然后这些服务商会广播你设置的解析信息,24小时之内全球即可刷新,一般来说minutes时间内就可以了。
CDN和上边有什么关系?
与传统访问方式不同,CDN网络则是在用户和服务器之间增加Cache层,将用户的访问请求引导到Cache节点而不是服务器源站点,要实现这一目的,主要是通过接管DNS实现,下图为使用CDN缓存后的网站访问过程:
由上图可见,使用CDN缓存后的网站访问过程演变为:
- 用户在浏览器中输入要访问的域名;
- 浏览器向域名解析服务器发出解析请求,由于CDN对域名解析过程进行了调整,所以用户端一般得到的是该域名对应的CNAME记录,此时浏览器需要再次对获得的CNAME域名进行解析才能得到缓存服务器实际的IP地址。
注:在此过程中,全局负载均衡DNS解析服务器会根据用户端的源IP地址,如地理位置(深圳还是上海)、接入网类型(电信还是网通)将用户的访问请求定位到离用户路由最短、位置最近、负载最轻的Cache节点(缓存服务器)上,实现就近定位。定位优先原则可按位置、可按路由、也可按负载等。 - 再次解析后浏览器得到该域名CDN缓存服务器的实际IP地址,向缓存服务器发出访问请求;
- 缓存服务器根据浏览器提供的域名,通过Cache内部专用DNS解析得到此域名源服务器的真实IP地址,再由缓存服务器向此真实IP地址提交访问请求;
- 缓存服务器从真实IP地址得到内容后,一方面在本地进行保存,以备以后使用,同时把得到的数据发送到客户端浏览器,完成访问的响应过程;
- 用户端得到由缓存服务器传回的数据后显示出来,至此完成整个域名访问过程。
通过以上分析可以看到,不论是否使用CDN网络,普通用户客户端设置不需做任何改变,直接使用被加速网站原有域名访问即可。对于要加速的网站,只需修改整个访问过程中的域名解析部分,便能实现透明的网络加速服务。