文档介绍:CDN及缓存小讲
一个访问如何完成?
浏览器发起请求最基本的几项:Host、URL、Method
扩展项:Accept、Referer、Cookie、User-Agent等等
Host处理
如果是IP,直接走路由找IP
如果是域名:1、查找本机hosts和DNScacheWin:C:\WINDOWS\system32\drivers\etc、hostsLinux:/etc/hosts2、向localDNS发送resolve请求
localDNS处理
TTL(Time To Live)DNS都有一个TTL配置,以我们现在使用bind9为例:
如果LocalDNS上正好forwarder过这个Host,且TTL没有过期,那么直接返回结果。
localDNS处理
否则LDNS将通过TCP53向它所知的其他DNS发送查询递归查询、迭代查询
最终归到根服务器“.”
真正的域名最后都有一个“.”,如下:
解析结果
如果DNS应答的结果是A记录,那么已经获得了Host的IP,可以发起请求了;
如果是C记录,那么得到的还是一个域名,继续重复上面的过程,直到获得IP为止。
服务器响应
如果没有缓存,那么请求最后的“旅程”可能就是这样:
CDN原理
GSLB(Gobal Server Load Balance)
最基本的GSLB控制器,就是一个智能DNS
以bind9为例,通过acl和view完成该功能
ACL
acl "CNCIP"{
;
;
;
;
;
……
}
(GSLB会分得很细,我们自己双线,C)
VIEW
view "CNC" {
key "cnc" {
algorithm hmac-md5;
secret "mSzVmAeYKMnUplLTbyAQZw==";
};
match-clients {
key "cnc";
;
!;
CNCIP;
};
zone "" in {
type master;
file "named.-bj";
allow-query { any;};
// allow-transfer { s; };
};