使用域名访问是什么意思(其他的域名访问我的网站)

关注Java领域的优质技术,欢迎关注来自:1: 25作者:1: 25最近在了解了边缘计算之后,我们发现我们经常听说的CDN也是边缘计算的一部分。所以说到CDN,

关注Java领域的优质技术,欢迎关注来自:1: 25作者:1: 25

最近在了解了边缘计算之后,我们发现我们经常听说的CDN也是边缘计算的一部分。所以说到CDN,我好像只知道中文叫内容分发网。那么具体CDN的原理是什么呢?在浏览网站时能给用户带来哪些好处?解决这两个问题是本文的目的。

CDN概念

CDN的全称是“内容分发网络”,中文叫内容分发网络。

实际上,CDN的概念是由麻省理工学院的一个研究小组在1996年提出的,旨在提高互联网的服务质量。那么它是如何提高互联网服务质量的呢?

原理分析

我们知道,当我们使用域名访问一个网站时,实际上是通过网络将请求包(例如Http请求)传输到一个服务器,比如访问www.baidu.com时:

首先解析出该域名所对应的IP地址(DNS域名解析)然后将Http请求包通过网络路由到IP地址所对应的服务器我们通常说“服务器的IP地址”,这其实不太准确,IP地址是和网卡绑定的,一个服务器可以有多个网卡,也就是可能有多个IP地址。

我们来看第一步:域名解析。

域名解析

有两种类型的域名解析:

将一个域名解析为一个IP地址将一个域名解析为另外一个域名

其实分析思路并不难。域名服务商购买域名后,我们需要映射一个IP地址,可以用Map来表示:{域名:IP}。

同时,我们也可以给一个域名起一个别名,比如“www.baidu.com”和“test.baidu.com”。这种关系也可以用Map来表示:{域名:别名}。这里的别名在专业上叫做CNAME,我相信你对这个词很熟悉,就是这个意思。

域名解析,其实就是解析指定域名对应的IP地址或者域名的一个CNAME。

DNS系统负责域名解析。DNS服务接受外部请求并从请求中提取域名。

如果这个域名对应的是IP地址,则返回这个IP地址,如果这个域名对应的是CNAME,则继续查找CNAME域名的IP地址,然后将该地址返回给请求发送者。

发送方得到IP地址后,就完成了真正的请求调用。

其实DNS系统非常庞大,这里就不赘述了。大家都把它当成黑匣子。这个盒子的功能如上所述。这里用一个简单的图表来说明。

没有CNAME:

使用域名访问是什么意思(其他的域名访问我的网站)插图

就CNAME而言:

注:在CNAME的案例中,我们可以发现CNAME实际上在域名解析过程中充当了中介(或代理)的角色,这是CDN实施的关键。

CDN原理

首先,CDN是为了提高互联网的服务质量。通俗地说,其实就是加快访问速度。

假设百度网站现在只有一台服务器,现在有一个人在上海访问百度。如果服务器也在上海,访问通常会快一些,但是如果服务器在拉萨,访问就相对慢一些。那么这个问题的根本原因就是网络传输依赖于网线。网线越长,时间肯定会越长。

那么如何解决这个问题呢?其实想法很简单。百度应该在全国各地部署相同的服务器。这个专业叫做冗余。

想法很简单,但是实现起来比较麻烦。服务器上有两种资源:静态资源和动态资源。

静态资源:这种资源通常是很少变动的,比如图片,视频,css,javascript等等动态资源:这种资源不同用户不同时刻访问通常是不一样的,比如ftl,jsp等等。

那么,如果百度要在全国部署服务器,如果每台服务器都有相同的动态资源,可能还需要配置相应的数据库,因为动态资源记录的信息通常都存储在数据库中,所以这就涉及到数据同步等问题,会导致成本很高。这种做法其实是专业集群化,但目前集群架构最多是三地五中心,并不是说全国很多地方集群化是不可能的,主要原因还是成本太高。

那么有没有低成本的办法呢?是的,每台服务器上只部署静态资源。静态资源通常不涉及数据库,所以成本较低,也可以提高用户的访问速度。

这里介绍一下CDN的目的,那么如何达到这个目的呢?

如果现在要比较CDN系统,可以考虑两点:

CDN系统中存储静态资源服务器的性能以及网速怎么样。CDN系统中全国甚至全球范围内服务器节点的数量以及部署情况。

第一点很好理解,第二点也应该大家都懂。如果有很多静态资源的服务器节点,让每个用户不用“跑长途”就能访问,那么自然这就是CDN系统的优势。

有公司看到了这个需求,所以现在其实有很多CDN提供商,比如阿里,腾讯等等,都有自己的CDN服务。只要你自己的系统接入这些大厂提供的CDN服务,你把自己的静态资源传递给CDN服务,那么这些静态资源就会自动分布到全世界。

好了,那么现在的问题是,用户访问静态资源的时候,也是通过域名访问的,域名会被解析到某个IP地址。关键问题是,DNS系统在做域名解析时,如何解析出离用户最近的IP地址?

普通的DNS系统做不到,需要专门的DNS服务器,这个需要知道。

用户当前所在位置还需要知道用户现在访问的这个域名对应哪些IP地址,以及这个IP地址分别在哪?

要解决第一个问题,可以直接从用户的请求中提取用户的ip地址。比如这个ip地址解析到北京电信,上海移动等等。

谁来解决第二个问题?我们现在正在考虑CDN。CDN提供商必须知道他们的公司在哪里部署了机器,以及他们的IP地址,所以这个问题只能由CDN提供商来解决。CDN提供商将提供这种特殊的DNS服务器,我们称之为CDN专用DNS服务器。

这样,只要用户使用域名访问静态资源,如果用户直接将自己电脑的DNS地址配置为CDN的专用DNS服务器。那么问题自然就解决了,但是在需要考虑的时候,我们不能要求世界上所有的用户都修改自己电脑的DNS地址。所以这是在DNS中使用CNAME的时候了。

当用户使用一个域名访问静态资源时(这个域名在阿里cdn服务中称为“加速域名”),比如这个域名是“image.baidu.com”,对应的是一个名为“cdn.ali.com”的CNAME,那么普通DNS服务器(不同于CDN专用DNS服务器)解析“image.baidu.com”时,会先解析为“cdn.ali.com”。当普通DNS服务器发现域名对应某个DNS服务器时,会将域名解析传递给该DNS服务器,该DNS服务器是CDN的专用DNS服务器。cdn的专用DNS服务器对“cdn.ali.com”进行分析,然后根据服务器上记录的所有CDN服务器的地址信息,选择最近的CDN服务器的地址,返回给用户,让用户访问最近的CDN服务器。

总结

通过上面的文章可以发现,CDN的实现原理是依赖于DNS的。因为我不是专门研究网络的,所以本文有不准确的地方请指出。

焦点

有痛点才有创新,一项技术一定是为了解决某个痛点才出现的。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/230453.html

发表回复

登录后才能评论