CSE_lecture20:network-dns-cdn
DNS & Naming Scheme
the design of DNS
实现hostname和IP地址的转换,从而实现用户友好
一个域名可以对应多个IP地址,从而实现负载均衡,允许用户访问一个更近的IP地址;一个IP地址也可以对应多个域名;这种映射关系可以发生变化,但需要向DNS服务商发送请求
为了能够扩大规模,需要引入hierarchy的思想,即进行分层,分成不同的域,每个zone使用不同的name server解析
name server分为:
- root zone由ICANN管理,非盈利
- “.com” zone由VeriSign管理,盈利
- 从root zone到”.com” zone一层一层管理下面的域名
以”ipads.se.sjtu.edu.cn”为例,lookup算法为:
- 从root开始,告诉我们”cn”的name server的IP
- “cn” name server告诉我们”edu.cn”的name server的IP
- 以此类推,直到知道”ipads.se.sjtu.edu.cn”的IP
即每一层的name server并不需要记住过多的域名,只需要记录下一层的几个节点即可
DNS的name都是全局的,因此没有上下文的问题。域名使用”.”分割,因此实际为”ipads.se.sjtu.edu.cn.”,最后的点表示root
每个zone会对应多个name server,从而提高容错
look-up算法可以进行改进:
- 第一个DNS请求可以到任何name server,降低root的压力,这是依靠缓存实现的
- recursion: 降低client的压力,即由name server来帮忙递归找域名地址,好处是更快,缺点是请求是有状态的,因此只用于小范围

- caching: 将访问过的地址缓存在DNS client和name server中,但会设置TTL
behind the DNS design
DNS设计的优点有:
- hierarchy的设计让管理分化,只需要将新的域名分配给直属的上级name server,简化了域名的管理
- global name防止了DNS指定上下文,而是产生一个唯一的域名
- lookup的性能要求不高,使得性能具备scalable
- 一个zone有多个name server,提高了容错
DNS设计的缺点有:
- 谁去控制root zone和”com” zone等等?
- root server的负载依然很高,尤其是当访问不存在的域名时,可能出现缓存穿透
- client无法确定DNS服务器的响应是否正确
content distribution
需要减小访问网络上大型文件的延迟,client端可以使用cache,而server端也会使用cache,但由于文件很大可能装不下,因此额外使用一些服务器专门用于缓存大型文件,即CDN
CDN离发出请求的client越近越好,content提供者会进行预热,在大量请求到达之前将大型文件提前缓存在CDN上,从而提升性能
HTTP redirection中,一个服务器收到请求后,会让client redirect到一台更近的服务器。好处是可以细粒度分发资源,缺点是增加了一次RTT,但对于大型文件而言可以接受
也可以通过DNS选择服务器,即在资源对应的多个IP地址中选择更近的那个。好处是降低时延,缺点是强依赖IP地址
naming scheme
naming schemes包括:names, values, look-up algorithm
binding即实现name和value的绑定,可以是一对一,也可以是一对多、多对一;而resolve实现了name的解析
naming context包括两大类:context和name分开,如inode;context是name的一部分,内嵌在其中,如邮件。当name space只有一个context时为universal name spaces,全球唯一
决定context的方法有:
- 硬编码在resolver里面,如universal name spaces
- 从环境变量中寻找,但需要正确的context
name mapping的算法有:
- 查表
- 递归查找
- 并列查找,如
$PATH,冒号隔开的是并列关系