域名
www.baidu.com
这个是域名吗?
http://www.baidu.com
那这个是域名吗?
答案:都不是
这里的域名是:baidu.com
www代表的是服务器名称,例如:mail.163.com,这个地址中,163.com是域名,而mail只是它的服务器名称。
http:// 代表超文本传输协议,它就相当于一个通行证,域名一旦加上这个协议就可以在网络中传输。
每个域名都是独一无二的,而域名的最大作用是用来定位网站。互联网上有很多网站,要想准确的找到这些网站,就需要有一个易于识别和记忆的东西来代表,域名正好起到了这个作用。
浏览器输入:baidu.com,点击回车。
网页打开后地址变成:
这意味着域名在http:// 传输协议的作用下,在 www 这个服务器中找到一个网页。http://www.baidu.com 我们通常叫网址,实际上它还有另外一个名字叫:URL,统一资源定位符,它的主要作用是定位互联网资源的位置。
访问
域名是互联网上的身份标识,是不可重复的唯一标识资源,但这个标识来源于人的认知方式,比如我们知道百度,它的域名baidu.com同样跟百度有关,所以我们就很容易记住这个域名。
互联网世界的本质还是机器与机器之间的交互,所以机器对这种域名并不敏感,它们需要的是机器能读懂的语言。
也就是说,当我们在浏览器输入一个域名,机器要通过这个域名识别出它们懂的语言才能执行任务,而这个信息就是IP地址。IP地址代表域名下对应内容的存放地。
说到这里我们就要谈到DNS。
DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。——百度百科
可以把DNS理解为一个“翻译官”,它的主要工作就是把域名翻译成机器能读懂的语言,专业点的说法就是域名解析。
这个时候我们再回看上网的过程,首先在浏览器中输入域名,来看URL的变化,以百度为例:首先是:baidu.com,回车后变成:http://www.baidu.com ,多了传输协议和服务器名称;网页打开后又变成了:http://www.baidu.com/ ,这里多了一个/,这个符号是根目录的意思,代表这个网页存在服务器的具体位置。
这个过程,DNS从域名输入回车后就开始启动,首先解析出域名对应IP地址,然后通过这个IP 地址找到源站并访问对应页面,这样就完成了一次访问。
访问速度
关于访问速度,这里指的是网站从输入地址到完整呈现出来的时间。实际操作中我们会发现,有些网站响应速度很快,而有些则比较慢,这是什么原因呢?
这里首先抛开用户端和源服务器接入互联网链路的带宽,以及运营商之间的交互问题,仅从DNS的工作过程中来找答案。
上图比较清晰的呈现出当一个请求:我要访问www.163.com 从客户端发出后要经历的过程。
首先是发出请求,第二步,本地的DNS对域名进行解析,解析的过程实际上就是找IP地址的过程。当本地DNS服务器没有找到这个地址时,本地DNS就会向DNS根服务器请求,根服务器没有找到,就会到域名所属服务器.com 那里找。
图中.com也没有对应地址,于是.com 又让本地DNS去163.com去找,最终在163.com服务器找到了地址。
通过这个过程我们发现请求环节比较多,这势必会造成响应慢的问题。但实际上上图演示的只是第一次的情况,如果客户端这次找到了这个地址,那么这个地址就会被存在本地DNS服务器中,如果用户再次访问,本地的DNS服务器就会直接告诉客户端地址,这样就会比较快。
但这种情况在web1.0时代和流媒体还不是很发达的时期还能被用户接受,但随着互联网内容的增多,流媒体的盛行,互联网上每天都会产生无数新的内容,这套访问内容的方式就很难满足用户的需求。
加速
要提供网站的访问速度,就要提到一个技术:CDN(内容分发网络)。
内容分发网络,顾名思义,它是一个网络,这个网络的主要功能就是做内容分发。下面我们从一个网站加载CDN的过程来了解这个技术。
首先不需要改动网站架构,只需要修改自己的DNS解析,设置一个CNAME指向CDN服务商即可。
CNAME(Canonical Name)指别名记录也被称为规范名字,CNAME可以理解为对域名设置别名。比如一个域名www.domain.com,设置一个CNAME指向它,由于www.domain.com与一个ip进行绑定,如果设置多个CNAME指向它,以后修改CNAME指向的服务器时,只需要修改一个www.domain.com对应的ip即可。
这个时候,用户向浏览器提供要访问的域名;浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析得到的是该域名对应的CNAME记录(由于现在已经是使用了CDN服务,CNAME为CDN服务商域名)。
为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析,以得到实际的IP地址;在此过程中,CDN通过全局负载均衡技术进行DNS解析,这个过程的核心是解析出距离用户会更近,且负载压力小缓存服务器地址。
接下来,通过缓存服务器内部专用DNS解析得到此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求。
缓存服务器从实际IP地址得得到内容以后,会进行两个操作,一个是把获取的数据返回给客户端,完成数据服务;另一个是在本地进行保存,以备以后使用。
整个过程看似更加复杂,实际上CDN技术是在原来网络基础上建立了很多缓存服务器节点,用户访问域名时,CDN会先找到这个IP地址最近的缓存服务器,然后再由缓存服务器进行解析,然后获取IP地址,完成用户访问。
这就类似我们打电话,没有CDN参与的时候,我们打电话到美国纽约可能需求先转到北京,然后再由北京再转到美国华盛顿,然后再由华盛顿转到纽约。有了CDN参与后,我们就可以直接转到纽约。这样速度自然会比之前的快很多。
总结
本篇主要讲了域名的组成,然后由域名引发到如何访问域名,我们发现域名其实只是为了满足人的习惯性认知,而机器需要的是通过DNS解析出来的IP地址,我们日常通过域名访问网站,实际上就是在访问域名背后隐藏的ip地址。
这个IP地址就像一个家庭住址,我们只有知道了这个住址,才能找到这个地方,然后获得想要的东西。
但随着互联网用户增加,势必会导致一些热门站点的访问剧增,这样就会导致去这个地方的道路总是拥堵。这里我们就提到了CDN 技术,它主要是通过将域名进行重新定向,即把用户需求先定向到离源站最近的缓存服务器上,然后再由缓存服务器进行DNS解析,解析出的IP地址再返回给用户,这样就绕开了拥堵路线,实现快速访问。