DNS用来做什么?
通过DNS可以将域名转化为对应的IP地址,IP地址一般相对难以记忆,通过将IP与域名进行映射,只需记住相对好记的域名,就可以访问到想要访问的页面。
DNS服务的默认端口是53。
DNS寻址过程
以浏览器访问www.baidu.com为例:
- 首先从本地浏览器缓存查找,找到www.baidu.com就直接访问对应的IP地址;
- 浏览器缓存中未找到对应IP,操作系统会去检查自己的host文件,如果从中没找到对应关系,会再到系统dns缓存中查,如果缓存中有,就直接返回该域名所对应的IP;
- 如果本地计算机缓存中没有,则会向我们事先设置好的本地DNS服务器去请求,即所谓的“递归查询”,本地dns服务器首先会到自身解析数据库中去查,如果找到就返回;没有找到会向根服务器发送询问请求;
- 根服务器收到请求,发现后缀是.com,就会把com所在的ns服务器告诉本地DNS服务器,然后,本地DNS服务器就会去请求.com所在的ns服务器;
- 当请求到达.com ns服务器时,.com服务器发现域名是在baidu这个域下的,就会把baidu所在的ns服务器再告诉本地dns服务器;
- 本地DNS服务器收到回复,去访问baidu域下的DNS服务器;
- baidu这个域的ns服务器一看是要访问www,就直接找到了www对应的的IP,并把它丢给了本地DNS服务器;
- 本地收到最终的IP,返回给计算机,计算机通过该IP做请求;
DNS解析中用到的是TCP协议还是UDP协议
DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议;
DNS的规范规定了2种类型的DNS服务器,一个叫主DNS服务器,一个叫辅助DNS服务器。
为了防止DNS服务器由于各种软硬件故障导致停止DNS服务,建议在同一个网络中部属两台或两台以上的DNS服务器。其中一台作为主DNS服务器,其他的作为辅助DNS服务器。当主DNS服务器正常运行时,辅助DNS服务器只起备份作用。当主DNS服务器发生故障后,辅助DNS服务器立即启动承担DNS解析服务。
DNS区域传输的时候使用TCP协议:
辅域名服务器会定时(一般3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,会执行一次区域传送,进行数据同步。区域传送使用TCP而不是UDP,因为数据同步传送的数据量比一个请求应答的数据量要多得多。
域名解析时使用UDP协议:
客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过三次握手,这样DNS服务器负载更低,响应更快。理论上说,客户端也可以指定向DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。
DNS劫持
DNS劫持就是通过劫持了DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址。