初识网络协议:什么是域名

上一章我们讲了如何上网,可是实际生活中,我们基本上从来不使用IP地址访问网站,而是使用域名访问。

所谓域名,就是使用方便记忆能显示地址组织的名称和性质的由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称。如4399.comcnblogs.comchsi.com.cn

在我们购买域名的时候,平台会让你绑定IP地址。其实说白了,域名就是IP地址,只不过需要DNS解析而已。

DNS解析流程:

  1. 电脑客户端会发出一个DNS请求,问4399.com的IP是啥,并且发给本地域名服务器(本地DNS),本地DNS通常在网络运营商那里。

  2. 本地DNS收到来自客户端的请求后,会在服务器上查找4399.com对应的IP地址,有就返回IP地址,没有就去问它的根域名服务器。根域名服务器是最高层次的,全球共有13套,它不直接用于域名解析,而是指一条明路。

  3. 根DNS收到请求后,发现后缀是.com,就会让本地DNS转向.com顶级域名服务器

  4. 本地DNS转向顶级服务器域名,问4399.com的IP地址。

  5. 顶级域名服务器会让本地DNS找负责4399.com区域的权威域名服务器

  6. 本地DNS转向权威DNS服务器,权威DNS服务器就能直接找出4399.com对应的IP地址是X.X.X.X

  7. 权威DNS将查询结果告诉本地DNS。

  8. 本地DNS将IP地址返回客户端,客户端和目标建立连接。

上图中本地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。

 

参考资料:《趣谈网络协议》

posted @ 2020-02-26 14:15  灯无焰  阅读(623)  评论(0编辑  收藏  举报