前两篇记录了一下UDP、广播和多播的相关笔记。
那么我们在打开TCP连接或者用UDP发送一个数据报之前,接收方往往是一个域名,例如xxx.com,此时需要将这个域名转换成IP地址,那么怎么进行转换的呢???
就是通过这个DNS域名系统进行转换。
今天就来记录一下DNS域名系统。
DNS域名系统(Domain Name System) 是一种用于TCP/IP应用程序的分布式数据库,提供主机名字和IP地址之间的转换及有关电子邮件的选路信息。
DNS提供了允许服务器和客户程序相互通信的协议。
从应用的角度上看,对DNS的访问是通过一个地址解析器来完成的。
解析器通过一个或多个名字服务器来完成主机名和IP的相互转换。
在一个应用程序请求TCP打开一个连接或使用UDP发送给一个数据报之前,必须将一个主机名转换成IP地址。
每个节点的标识最长63字符,不区分大小写,任何一个节点的域名就是将该节点到最高层的域名串连起来,用“.”分割。
以“.”结尾的域名被称为绝对域名或完全合格的域名FQDN,例如:sun.tuc.noao.edu.
如果非“.”结尾,则认为该域名是不完全的。如果不完整的域名由两个或两个以上的标号组成,则认为它是完整的,或者在该域名的右边加上一个局部后缀,例如,域名sun加上局部后缀 .tuc.noao.edu. 成为完整的。
「顶级域名被分成三个部分:」
(1)arpa是用作地址到名字转换的特殊域
(2)7个3字符长的普通域
(3)所有2字符长的域被称为国家域,或地理域
域 | 描述 |
---|---|
com | 商业组织 |
edu | 教育机构 |
gov | 其它美国政府部门 |
int | 国际组织 |
mil | 美国军事网点 |
net | 网络 |
org | 其它组织 |
我们日常能接触到的就是以com结尾的域名
比如学校的就是这样
至于后面的“.cn”域名表示的是我国顶级域名
为了提高DNS的解析性能,很多网络都会就近部署DNS缓存服务器。
「本地设置域名和IP转换」
在linux机器上通过在文件“/etc/hosts”中配置域名对应的IP地址
「设置DNS域名服务器」
需要在“/etc/resolv.conf”文件中配置
添加如下内容
nameserver 114.114.114.114
根据域名查询IP是一次DNS递归查询过程。本地DNS全权处理。在此过程中,DNS除了可以通过名称映射IP地址,还可以做另一件事,就是负载均衡。
DNS可以做内部负载均衡,域名和IP具有一对多的关系,配置域名比直接配置IP更具有灵活性。
DNS可以做全局负载均衡,高可用、就近访问
例如:DNS 访问数据中心中对象存储上的静态资源
假设全国有多个数据中心,托管在多个运营商,每个数据中心三个可用区(Available Zone)。对象存储通过跨可用区部署,实现高可用性。在每个数据中心中,都至少部署两个内部负载均衡器,内部负载均衡器后面对接多个对象存储的前置服务器(Proxy-server)。
对于复杂的应用、跨地域跨运营商的大型应用,则需要更加复杂的全局负载均衡机制,这就是全局负载均衡器(GSLB,Global Server Load Balance)。
权威DNS服务器中,一般通过配置CNAME的方式,给域名起一个别名,例如:www.vip.baidu.com,然后告诉本地DNS服务器,让它请求GSLB解析这个域名,GSLB就可以在解析这个域名的过程中,通过自身策略实现负载均衡。
图中画了两层的 GSLB,是因为分运营商和地域。不同运营商的客户,可以访问相同运营商机房中的资源,这样不跨运营商访问,有利于提高吞吐量,减少时延。