DNS与CDN

DNS域名解析过程

用户通过浏览器访问某个地址时(https://www.baidu.com),DNS解析大致会有以下几个过程:

  1. 浏览器检查自身缓存中是否有该域名的解析结果,如果有,解析结束;浏览器域名缓存时间可以通过TTL属性设置;

  2. 如果浏览器的缓存没命中,浏览器会检查操作系统的缓存中是否有该域名的解析结果。操作系统本身也会有一个域名解析过程:windows操作系统可通过C盘的hosts文件来配置域名和ip的映射关系,浏览器会使用这个进行域名解析。但是黑客可以篡改这个文件来进行域名劫持,因此在windows7中hosts文件是readonly的,以防止被恶意篡改。

  3. 如果操作系统域名解析未命中,才会真正请求本地域名服务器(Local DNS,LDNS)。LDNS服务器ip一般是由本地网络服务商(如电信、联通、移动)提供,一般是通过DHCP自动分配,当然也可以手动配置。LDNS服务器一般在请求城市里,距离不会很远,且服务器性能一般比较好,一般都会缓存域名解析结果,大约80%的域名解析请求都会命中;

  4. 如果LDNS仍然没有命中(未缓存or缓存过期),LDNS就会向Root根域名服务器请求解析,根域名服务器ip一般是固定的,所以LDNS服务器一般都内置了根域名服务器ip地址;

  5. 根域名服务器为了能更高效完成全球所有域名的解析请求,根域名服务器本身并不会直接去解析域名,而是会把不同的解析请求分配给下面的其他服务器完成

    因此,根域名服务器收到LDNS的域名解析请求后,发现顶级域名是.com,所以会返回给LDNS一个所查询域的主域名服务器(gTLD Server,国际顶尖域名服务器,如.com、.cn、.org等)ip地址;

  6. LDNS再向上一步返回的gTLD请求域名解析;

  7. gTLD收到域名解析请求后会查找并返回这个域名对应的权限服务器(Name Server)ip地址,权限服务器是请求网站注册的域名服务器。例如用户在某个域名服务提供商申请的域名,那么这个域名解析任务就由这个域名提供商的服务器来完成

  8. LDNS再向权限服务器请求,权限服务器再根据映射关系找到目标ip并返回给LDNS;

  9. LDNS缓存这个域名和对应ip;

  10. LDNS把域名解析结果返回给浏览器,浏览器根据TTL属性将映射关系缓存到本地缓存中,域名解析过程至此结束。


tips: DNS域名解析中,A记录 与 CNAME 区别

A记录:把域名解析到ip地址(Address,特指数字ip地址)

CNAME记录:Canonical Name,通常称别名指向,把域名解析到另一个域名

存在一些场景(CDN、ip收到攻击等),域名对映ip地址可能不是一样的,但是如果直接用A记录,每次ip地址一改,所有映射到这个ip地址的A记录都得改一遍,而用CNAME记录,只需要改这个CNAME记录的A记录就行了,是的,CNAME记录只是别名映射,最终还是需要一个A记录,映射ip地址。

CNAME具体场景:

例如,有一台服务器上存放了很多资料,可以使用docs.example.com去访问这些资源,但又希望通过documents.example.com也能访问到这些资源,那么就可以在DNS解析服务商添加一条CNAME记录,将documents.example.com指向docs.example.com,添加该条CNAME记录后,所有访问documents.example.com的请求都会被转到docs.example.com,获得相同的内容。


CDN

CDN(Content Delivery Network),内容分发网络,其目的是通过在现有的Internet中增加一层新的CACHE(缓存)层,将网站的内容发布到最接近用户的网络”边缘“的节点,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因,提高用户访问网站的响应速度。

简单的说,CDN 的工作原理就是将您源站的资源缓存到位于全球各地的 CDN 节点上,用户请求资源时,就近返回节点上缓存的资源,而不需要每个用户的请求都回您的源站获取,避免网络拥塞、缓解源站压力,保证用户访问资源的速度和体验。

CDN好处

  • 解决服务器端的“第一公里”问题
  • 缓解甚至消除了不同运营商之间互联的瓶颈造成的影响
  • 减轻了各省的出口带宽压力
  • 缓解了骨干网的压力
  • 优化了网上热点内容的分布

CDN架构

  1. 浏览器向LDNS发起域名解析请求,若命中LDNS缓存直接返回,否则去Root DNS查询;
  2. LDNS逐级迭代查询,Root DNS -> 顶级DNS -> 权限DNS;
  3. LDNS向权限DNS发出域名解析请求,到这里和普通DNS一样;
  4. 权限DNS通常会将域名CNAME(如果有CNAME,则解析CNAME对应的CDN服务,否则默认为是普通请求,直接返回解析到的ip)解析到另一个域名,这个域名最终会指向CDN网络中的智能DNS负载均衡系统;
  5. LDNS获取到权限服务器返回的CDN DNS ip地址,并发出域名解析请求;
  6. DNS负载均衡系统根据一些智能算法,将最合适的CDN节点ip地址返回给LDNS;
  7. LDNS缓存这个域名和对应ip;
  8. LDNS把域名解析结果返回给浏览器,浏览器根据TTL属性将映射关系缓存到本地缓存中,域名解析过程至此结束。

CDN最主要的5 6两步。浏览器拿到CDN服务器ip后会发出请求,CDN服务器第一次接收到请求时还是会向源站请求,而后缓存数据,后面的请求(未过期前)就不会再去请求源站了。


参考:
https://blog.csdn.net/m0_37812513/article/details/78775629
https://mp.weixin.qq.com/s/kC7d1ZpM-hbX9ei3DbwcDg
https://www.zhihu.com/question/22916306
https://zhuanlan.zhihu.com/p/58108010
https://blog.csdn.net/yangsnow_rain_wind/article/details/80454064

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值