CDN是什么?与DNS有什么关系?及运行原理

CDN测评 0 18

20分钟理解什么是网络、DNS与CDN

(前言:很早就想写这样一篇科普性质的文章,来帮助对感兴趣的同学更快更形象地理解网络、DNS与CDN。本文是入门级别的,如果是业内人士就可以不看了,如果发现了文中错误请联系我改正。)

比较细心的同学在上网的时候,可能会碰到如下网络词语:域名,IP地址,DNS,CDN,也会听到这样的一些说法:XXXX的服务器被攻击啦,XXXX花多少钱买了XXX域名啦,你的本地DNS配置的不正确啦,等等。这些玩意都是什么鬼?今天就来说一说。

域名与IP地址

我们先看一个表格,左下表格中第一行的:中国工商银行上海分行xxx支行,对应的地理位置:上海市浦东新区xxx路xxx号;如果你要去这个银行,你脑子当中记忆的肯定不是后面的xxx路xxx号,而是前面的银行名称。因为地址位置没有逻辑性,人脑完全无法记忆和理解。

域名(Domain Name或简称Domain)与IP地址(IP Address)的关系就如同一个地点的名称与其实际地理位置的关系。我们上百度的时候,不可能记住百度的IP地址是115.239.210.27,但是我们可以记住www.baidu.com。简单来说,域名就是IP地址的一种形象化的表达方式。


DNS


那么问题来了,如果我知道一个域名,我怎么获取它对应的IP呢?当你准备去xx沃尔玛超市买鸡蛋的时候,你就可以去附近的“问路亭”;而“问路亭”里有个值班人员,通过查询一个大手册来告诉你这个沃尔玛超市在哪里。

而这里“问路亭”的角色,就是DNS(Domain Name Service)。当你在家接入宽带连接,或者手机连上3G/4G的时候,运营商都会帮你分配一个DNS服务器(这个DNS服务器对于你来可叫作本地DNS,或者local DNS,LDNS等)。而对于所有你不知道的域名-IP,都会先去这里查询一次,得到IP地址后再前往。这个过程就叫做DNS解析。

【Linux或mac用户可以使用dig www.zhihu.com来实验一下】



当然你本身也没有那么笨,如果你昨天才去了一次沃尔玛,很可能今天还没有忘记地址。我们的操作系统会把域名查询结果在本机缓存一段时间,缓存多久也是DNS告诉我们的(一般这个时间是100~300s之间)。


那么在解析到IP之后发生了什么?要注意你不是到了沃尔玛就ok了,你是要去买鸡蛋的。假设你访问的地址是zhihu.com/pics/beautifu,拿到IP之后浏览器将会访问118.89.225.170,并且请求/pics/beautifulFlowsers.jpg这个资源;就如同你到了沃尔玛之后,去了食品区,再去了某一个鸡蛋货架。

细心的同学会发现,DNS结果可能返回多个IP。是的,一般客户端就使用第一个IP了,如果第一个IP不能访问,客户端可以决策是否按顺序使用后续的IP。

权威服务器

那么下一个问题又来了:DNS是怎么知道这个域名和IP的对应关系的呢?


这里就要提到域名服务供应商和权威服务器了。拿知乎作例子,知乎的所有者(或者网站的运营运维人员)买下了zhihu.com这个域名,实际上就是向域名服务供应商买下了将这个域名解析到哪个IP的权力,将这个域名-IP的解析关系,注册在了对应的权威服务器上。

而当DNS服务不知道域名解析的时候,它就会向权威服务器询问,如下图的过程。


这里还要说明一下域名的分级逻辑。域名分级是从后向前的,比如pic.zhihu.com,实际上是知乎向.com购买了zhihu.com,从而获得了其下所有子域名(例如xxx.zhihu.comxxx.xxx.zhihu.com)的解析权力。


全世界有很多域名服务供应商,最有名的就是“.com”,其他的例如“.cn”,“.org”,".net"等等。举个形象的例子,某人准备开个连锁超市,于是他朝着“超市”管理局做了一次申请,申请自己的名字是“沃尔玛”,“沃尔玛超市”就属于他了。然后他在全市开了一些连锁店,可以在前面加任意定语来定义自己的超市,比如黄埔区沃尔玛超市,按照域名来翻译则是“黄埔区.沃尔玛.超市

另外,LDNS对于域名解析的查询结果也有缓存,缓存的时间由权威服务器决定。这也就是为什么网站的拥有者想要调整域名-IP的解析,会有一定的滞后性。这个滞后性就是由缓存时间来决定的。

域名的解析 - A记录与CNAME记录

域名在解析过程中,可能直接被解析为IP地址,这种方式叫做域名解析的“A记录”;比如问路亭直接回复你,这个沃尔玛超市在xxx路xxx号。

而另外一种情况是,域名会被解析成为另一个域名,这种方式叫做“别名”或者“CNAME记录”,例如问路亭发现,这个沃尔玛超市是由另外一个叫做沃尔爸超市代理的,则会继续查询沃尔爸超市的地理位置。

域名的别名,也可以继续有别名,可能一层一层像链条一样传导下去,最终得到A记录及其IP地址。这个链条一般叫做“CNAME链”。(当然需要避免回环)

域名的解析 - 视图与分地区解析

前面提到了连锁超市,也就是说,沃尔玛超市可能在全国范围内都有,而你总是希望自己到达离自己最近的连锁店。另一个问题是,也许你只是自己要去沃尔玛超市,并不知道自己该去哪个沃尔玛超市,这又该如何解决呢?

所以域名解析中出现了视图(view)的概念。视图一般由“地区”和“运营商”两个因素组合而成,例如上海电信,北京联通;也可能是一些更加宽泛的描述,例如华东地区,国内,美国,南美洲等等;当然还有一个叫做“默认”的视图。

视图可以将客户端分组,而域名解析时,可以根据不同的分组,将域名解析到不同的地方去。这样,不同视图的LDNS收到请求时,会将域名解析到不同的IP上。例如,你是上海黄浦区的客户,你就应该去黄浦区的沃尔玛超市;如果你是长宁区的,但长宁区没有沃尔玛,你可能就近被安排到了静安区的沃尔玛超市。

CDN与VPN

沃尔玛如果要保障全国都有自己的连锁店可不是件很容易的时候,所以他们通常会找一个在全国范围内都做代理的代理商。这个角色就是CDN(Content Delivery Network,即内容分发网络)。

这样的连锁店代理商,他们在全国甚至全世界都有自己的大楼,它们有着巨大的仓库,保存了从沃尔玛总站运来的所有货物。如果有就近的客户光顾,就把货物提供给他们;如果这个货物在当前仓库不存在,则需要从沃尔玛总站运过来。并且,这个代理商不仅可以代理沃尔玛超市,还可以代理图书馆,甚至咖啡店和医院。

CDN也是同样的道理,他们在全国甚至全世界都有自己的机房(或者叫做CDN边缘节点)。每个节点上都缓存了最近访问的资源,如果有访问则可以快速响应;如果访问者所需资源不存在,则CDN需要从“源站”拉取资源(即下图中知乎的主站地址)。当然,这里缓存的资源是可以无限下载的,而不是像沃尔玛的鸡蛋会被买光。

我们可以看出CDN的主要好处,是帮助源站将资源分发到全世界各地;而实际上,CDN的另外一个用途是可以帮助源站分担访问压力。

那么我们通常听到另一个词汇,VPN(Virtual Private Network)又是什么呢?试想一下,如果全市范围内沃尔玛就只有一个超市,那么怎么让全市居民快速来到这里呢?没错,是超市巴士。VPN就类似于超市巴士,可以迅速的将访问者接入服务端附近的网络。

CDN与VPN显然是有区别的。CDN的作用是将服务端的体验做得更好,而客户端并不需要知道服务端在哪里,是怎么做的,这也叫反向代理;VPN则是让客户端能够统一接入,而服务端并不需要知道客户端在哪里,只要知道他们被拉近了,这也叫正向代理。

CDN的细节

在CDN上,资源的缓存也是有过期时间的,这个过期时间可以由源站来决定,或者人工做自定义配置。就如同沃尔玛的鸡蛋在出厂时有保质期,一旦保质期过了就必须扔掉。你可以选择跟随出厂的保质期(跟随源站),也可以重新定个保质期(自定义缓存时间)。而鸡蛋,火腿肠,酸奶,他们的保质期还可以不一样。

缓存的刷新和预取,是CDN提供的相关功能。刷新就意味着主动抛弃CDN节点上的缓存内容(类似于,沃尔玛突然发现这批鸡蛋有问题,需要马上全部丢掉);而预取就意味着,在没有外部访问的时候,提前把内容缓存到所有CDN节点上(类似于,让每个连锁店都提前从主站进一次货,防止需要的时候没有货)。

关于一些常见现象的问答

Q:什么是劫持?

A:劫持通常指的是DNS劫持,这是你的运营商做的坏事。他们指使他们架设的问路亭,将某些地点的地理位置给篡改了(不遵守权威服务器)。这样你就到不了真的沃尔玛超市,而是某山寨超市,或者干脆一个不是超市的地方。

Q:什么是篡改?

A:有的同学在上网时可能遇到过,某些站点突然出现了该站点不想要的浮动窗口,广告栏等等。这就类似于有人在你买鸡蛋的返程路上,给你塞了一些小广告。

Q:什么是Https,有什么安全提升?

A:Https是Http+SSL安全体系的合称。通过在服务端部署一个经过公证的证书,让客户端信任这个服务端返回的内容;同时传输的内容是被加密的,到达客户端才能解开。这就如同,沃尔玛推出了一个防伪商标,并且在你买了鸡蛋后,把购物袋用胶带封起来,再贴上这个防伪商标作为封条。那么就解决了被劫持和被篡改的两个问题。

Q:什么是302调度?

A:302指的是Http的一个响应码,同时提供了一个跳转地址。客户端收到之后需要再去跳转地址访问。这就类似于,你去的沃尔玛超市已经搬家了,在原址上贴了个条子说:原沃尔玛超时已经搬去xxxxxxxx啦,然后你再去新的地址访问。

Q:什么是攻击,什么是DDOS攻击?

A:攻击就像是,有沃尔玛的竞争对手,找到一波暴民,恶意去沃尔玛超市疯狂购买东西,导致该超市崩溃并且无法接待正常顾客。DDOS(Distributed Denial of Service),即分布式服务攻击,就是从全国各地找到了很多不同地区的暴民,实时恶意攻击。要注意,这里的暴民通常是良民,他们可能是因为某些原因(电脑中木马了)才会听从命令实施攻击。

Q:什么是带宽?

A:带宽就类似于马路的宽度,可以同时走多少人,开多少车。我们家庭宽带里面说的十兆带宽,百兆带宽就是它。但是,我们是不是经常发现,我们上网的速度完全达不到这个数字呢?这个的主要原因是,假设接入你家里马路是很宽的-10米,与你同一幢楼的用户有100家,运营商就要为你这个楼对外铺设一个非常宽的马路-1000米。这是几乎不可能的,一般合理的宽度可能是100米,运营商是在期望你们100家不会同时上网。而到了晚上大家都上网的话,运营商只好限制每家的实际能够使用的带宽,从10米降到5米,2米,甚至更低。


絮絮叨叨说了这么多,不知道是否能解决大家心里的疑惑和问题。


也许您对下面的内容还感兴趣:

留言0

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。