假设某网站 ,如www.a.com, 上海有服务器一台,给的IP是1.1.1.1 ,北京有一台,给的是2.2.2.2 处于不同IDC,要求实现上海的用户访问在上海的服务器, 而北京的用户访问到北京的服务器.

角色1 Client 上海电信用户5.5.5.10

角色2 Client的DNS服务器 5.5.5.1 根据Client的网络接入的方式不同,DNS服务器的IP地址是
不一样的

角色3 a.com的soa dns,ip 3.3.3.3 由com. 授权,

角色4 www.a.com的2台服务器, 上海的IP1.1.1.1 北京的2.2.2.2

角色5 上海的DNS服务器 1.1.1.10

角色6 北京的DNS服务器 2.2.2.10

在确定好所有的角色后,我们来看看这个工作过程以及解决方案

DNS解析分为递归与跌代.

假定上海电信dns 是递归查询, 通过一个图我们来说明智能解析过程. (请把该图放大再看比较清楚)

因为递归查询,那么情况比较复杂,因为 最终访问到a.com dns 服务器的是上海电信dns服务器, 是Client DNS. 这样只能判定Client DNS比较距离 上海或者北京比较近,而无法断定Client
是距离那里比较近。
不过,由于网络接入的方式不一样,例如 网通的ADSL方式,其IP、DNS地址均由动态获取,这样此时 Client DNS服务器与Client应该是属于相同运营商IP,这样就能够通过判定Client DNS地址来大约断定Client所属运营商所处地区,从而给予Client一个正确的IP地址解析。
但是假如某上海用户手工指定DNS,恰好又指定了一个北京的递归查询DNS服务器,这个时候,就比较麻烦了,因为没有办法得知Client的实际位置。
考虑此时是递归查询,所知Client DNS的IP地址为北京IP,则a.com会解析北京服务器地址给该 Client DNS,那么Client作为上海用户最终得到的IP将是 www.a.com = 2.2.2.2 (该地址为北京地址) ,这样就会导致此用户得到错误的服务器地址。
不过,好运的是,现在的大多数DNS服务器都是迭代查询,因为没有多少DNS服务器可以承受递归的流量,所以对于99%的用户来说,都能得到正确的地址解析,从而正确的访问服务器。

那么迭代查询的情况又会如何呢?则最终向a.com询问谁是 www.a.com的 ,将是Client.
这样,a.com的DNS服务器将得到Client 的IP,再根据Client IP地址距离那里比较近,就可以决定返回www.a.com 的IP 1.1.1.1 还是 2.2.2.2; 但是这种工作模式的问题是必须选择一个好的算法。为什么呢?
应为需要考虑到中国网络的实际情况,南北电信分拆后,telecom与cnc之间的互相访问非常慢, 例如 某上海网通用户访问位于上海电信的www.a.com.,其速度可能还不如去访问位于北京网通的www.a.com.
关于如何解决这个问题,我已经再另外一个精华贴中有所解答,请大家参考在本论坛web子论坛中发表的文章
http://bbs.chinaunix.net/viewthread.php?tid=711346&extra=page%3D2

另外也可以使用静态算法,通过收集Client IP是属于某个地区的(上海还是北京),就可以决定返回某个IP地址,不过需要收集所有IP所处实际地区;目前网上已经有很多查询ip地址是属于某个地区的技术,看来这种方法还是有可能实现的。
目前手工配置DNS服务器来实现以上目的,好象没有什么现成的程序能做到,需要自己开发一些相关工作流程脚本程序,以及收集电信、网通IP地址段,所处地区等,工作内容比较复杂。

好消息是,现在已经有相关的商业产品能够做到这一点。 如果网站的级别已经到达需要做CDN的话,我想boss考虑问题时,钱应该不是首要问题了吧?

转载于:https://blog.51cto.com/xfgushi/157816

智能DNS及其工作原理: CDN实现原理相关推荐

  1. DNS云学堂 | 智能DNS让CDN乘风破浪

    智能DNS是DNS领域经常被提及的一个概念.在和运营商客户进行技术交流时,也总是被问及,到底什么是智能DNS?智能DNS在CDN中扮演什么角色?它是怎么样的工作机制?今天DNS云学堂就来具体讲解下.e ...

  2. Linux随笔16-主从DNS服务搭建以及智能DNS服务搭建、基于CentOS7.6编译安装MySQL-5.7.32

    Contents 1. DNS主从服务器搭建 1.1. DNS简介 1.2. DNS主从服务搭建 1.2.1. 主DNS服务器配置 1.2.2. 从DNS服务器配置 1.2.3. Web服务器准备 1 ...

  3. CDN和智能DNS原理和应用 (原)

    CDN是什么? CDN的全称是Content Delivery Network,即内容分发网络. CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分发.调 ...

  4. CDN与智能DNS原理和应用

    1.cdn概念,DNS概念 CDN:Centent Delivery Network(内容分发网络) 使用户可以就近取得所需内容,提高用户访问网站相应速度 CDN=更智能的镜像+缓存+流量导流: DN ...

  5. DNS的工作原理及解析

    DNS的工作原理及解析 一.什么是DNS? DNS( Domain Name System)是"域名系统"的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP ...

  6. 单三相智能电表的工作原理及电能表模块介绍

    现在的智能电表已经不仅仅是简单的计量了,还要传输多种数据,还有防窃电功能,智能电表相对于之前的机械电表更加安全,现在甚至可以分析出我们的用电习惯,那么智能电表的工作原理到底是什么呢,现在把单相智能电表 ...

  7. AI智能图像识别的工作原理及行业应用

    AI智能图像识别(人工智能(AI)的一部分)是当今一个正在蓄势待发的人工智能大趋势.富维图像也正在从事图像识别技术研发和应用.数据显示,人工智能图像识别市场规模已达到近390亿美元.所以AI智能图像识 ...

  8. 计算机dns的工作原理,解析DNS工作原理

    DNS是互连网核心协议之一,不管是上网浏览,还是编程开发,都需要了解一点它的知识.本文就来学习DNS工作原理,希望您读完本文也对它有所了解. DNS(Domain Name System)是" ...

  9. 什么是域名服务器 (DNS) 及其工作原理?

    什么是域名服务器 (DNS)? DNS 是一种计算机服务器,其中包含许多 IP 地址及其相关域名的数据库.它用于将请求的域名转换为 IP 地址,以便计算机知道为请求的内容连接到哪个 IP 地址.Int ...

最新文章

  1. xml tools属性详解
  2. Cookie与Session的区别
  3. @echo off是什么意思_为什么执行自己的程序要在前面加./
  4. C#使用NPOI导出Excel文件
  5. py文件输出结果_24python中编码格式和文件操作
  6. 最近ubuntu+gpu装机记录
  7. Ext3.0中复杂表头样例
  8. win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
  9. 【3389】俄远程桌面多端口爆破
  10. 改善宝宝过敏就吃伊敏舒,azg与Aibeca爱楽倍佳携手守护中国宝宝成长
  11. 后盾网ThinkPHP微博项目
  12. shell脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别
  13. 计算机网络最新复习【太原理工大学】
  14. 使用React创建一个web3的前端
  15. 聚类算法Clustering-KMeans/DBSCAN/DenPeak/NormalizeCut/RCC
  16. android 屏幕方向监听,Android如何监听屏幕旋转
  17. 简历怎么制作?简历制作的步骤是什么?
  18. Systemd基础篇:workingdirectory事前不创建会导致的问题
  19. idea如何使用git从gitlab下载代码
  20. 【echarts 中国地图增加南海九段线】

热门文章

  1. 2017年------阿里大神带你详解Dubbo架构设计
  2. Spring Boot Spring MVC 异常处理的N种方法 1
  3. KVM虚拟化笔记(七)------kvm虚拟机VNC的配置
  4. Java语言与C++语言在作用域上的差异
  5. 请大家说一说:有没有必要针对VSS备份过程,做成一个开源小工具?
  6. 为什么说spark不稳定
  7. django报错500排查方法
  8. secureCrT夜间模式
  9. 本地第一次对接已经存在的github上的repository
  10. gitkraken同步建立repository与github上的repository