初识网络协议:什么是域名
上一章我们讲了如何上网,可是实际生活中,我们基本上从来不使用IP地址访问网站,而是使用域名访问。
在我们购买域名的时候,平台会让你绑定IP地址。其实说白了,域名就是IP地址,只不过需要DNS解析而已。
DNS解析流程:
-
-
本地DNS收到来自客户端的请求后,会在服务器上查找
4399.com
对应的IP地址,有就返回IP地址,没有就去问它的根域名服务器。根域名服务器是最高层次的,全球共有13套,它不直接用于域名解析,而是指一条明路。 -
根DNS收到请求后,发现后缀是
.com
,就会让本地DNS转向.com
的顶级域名服务器。 -
本地DNS转向顶级服务器域名,问
4399.com
的IP地址。 -
顶级域名服务器会让本地DNS找负责
4399.com
区域的权威域名服务器。 -
本地DNS转向权威DNS服务器,权威DNS服务器就能直接找出
4399.com
对应的IP地址是X.X.X.X
。 -
权威DNS将查询结果告诉本地DNS。
-
上图中本地DNS缓存就是电脑中的hosts文件,Windows在C:\Windows\System32\drivers\etc\hosts
,Linux在/etc/hosts
。
假如本地DNS有缓存的话,就直接返回缓存结果,而不用去请求本地DNS服务器了。
你可以在hosts文件最下面加上这么一段47.102.144.35 test.com
,这样当你访问test.com
的时候,实际上访问的是47.102.144.35
。
DNS除了可以通过名称映射为IP地址,还可以负载均衡。
内部负载均衡:访问数据库的时候,应该使用域名,这样子假如IP地址换了,只需要将域名映射为新的IP地址就好了。不然得把所有访问数据库的应用全部修改一遍,那得多麻烦。
全局负载均衡:当用户访问某个域名的时候,实际访问的IP地址可以轮询访问多个数据中心。假如一个数据中心挂了,只需要在DNS服务器里面将这个数据中心对应的IP地址删除就可以了,从而实现一定的高可用。
使用Nginx做负载均衡实例:
upstream test.com { server 47.102.144.35:8011 weight=3; server 47.102.144.35:8012 weight=10; } server { listen 80; location / { proxy_pass http://test.com; } } # 做了反向代理才能实现负载均衡,负载均衡是做反向代理的目的之一。
访问test.com
实际上就是访问47.102.144.35
,这里做了负载均衡,8011权重是3,8012权重是10。
参考资料:《趣谈网络协议》