网络知识之DNS
DNS
一、基础知识
1、域名组成
域名组成为树形结构:根域名——>一级域名——>二级域名——>三级域名
根域名 ===> .
顶级域名 ===> com、cn、net、edu等。
二级域名 ===> baidu、huawei等
三级域名 ===> mail、www等。
比如:www.baidu.com.
- 根域:
.
- 顶级域:
.com
- 一级域名:
baidu
- 主机名:
www
PS:正常情况下每个域名最后都会有一个.
,表示根域名,之所以平时没有是因为浏览器通常会自动填充。
2、基本概念
DNS为域名解析系统(Domain Name System),用于域名与IP地址之间的相互解析,根据查询内容分为正向解析和反向解析。
正向解析:将域名解析成IP地址。
反向解析:将IP地址解析成域名。
3、DNS服务端口号
TCP:53
UDP:53
4、相关命令
nslookup 域名 //查询DNS解析域名记录
ipconfig /display //查看本地DNS缓存的命令
ipconfig /flushdns //清除本地DNS缓存
二、DNS解析
1、本地DNS缓存
本地DNS缓存是指DNS返回了正确的IP之后,系统就会将这个结果临时储存起来,并且为其设定一个失效时间(比如N小时),在这N小时之内,当再次访问该网站时,系统会直接从电脑的本地DNS缓存中把结果进行返回。
查看本地DNS缓存的命令(Windows):
ipconfig /displaydns
清除本地DNS缓存:
ipconfig /flushdns
2、本地hosts文件
hosts是一个系统文件,在Windows中的位置是C:\Windows\System32\drivers\etc\hosts
,其作用就是将一些常用的域名与对应的IP地址建立关系,当给定一个域名,系统可以从hosts文件中寻找对应的IP地址。(注意:每台主机的hosts文件需要手动更新!!)
3、DNS正向解析过程
在浏览器通过域名发起一个网络请求时(比如想访问www.baidu.com.
,浏览器会先检查本地DNS缓存中是否有域名对应的IP地址,如果本地DNS缓存中没有,则会检查本地hosts文件;如果没有,则会向本地DNS服务器发送请求,如果本地DNS服务器可以进行解析,则返回相应的结果;否则本地DNS服务器将帮助我们去根域名服务器请求解析,根域名服务器知道它的下一级(即:顶级域名)的对应DNS服务器的IP地址,会将顶级域名服务器的地址(比如.com)返回给本地DNS服务器,本地DNS服务器继续去向顶级域名服务器发送解析请求,顶级域名服务器为其返回二级域名服务器的地址,从而使本地DNS服务器继续访问,直到最后成功解析,本地DNS服务器会将结果返回给客户机。
从客户机到本地DNS服务器的DNS解析过程称为递归查询。(所问即所答,客户机向本地DNS服务器请求域名解析www.baidu.com
,最终的结果就是本地DNS服务器返回给客户机想要的结果)
从本地DNS服务器到根域、顶级域服务器等一系列DNS解析过程称为迭代查询。(所问非所答,本地DNS服务器向根域、顶级域服务器等请求域名解析www.baidu.com
,但每个服务器返回本地DNS服务器的结果都是让其寻找下一级的服务器)
4、DNS反向解析(rDNS)
反向DNS解析是将IP地址解析为域名,常见的应用场景有:拦截邮件服务系统中的垃圾邮件。一般情况下,垃圾邮件发送者使用动态分配的 IP 地址或者没有注册域名的 IP 地址来发送垃圾邮件,通过反向解析就可以判断邮件的合法性。当邮件服务器收到邮件时,邮件服务器会查看邮件由哪个 IP 地址发出,然后根据这个 IP 地址进行反向解析,如果反向解析得到的域名与发送方邮件的域名不一致则认为邮件发送者不是从真正的邮件服务器发出,则可以拒绝接收此邮件。比如当 me@qq.com
收到一份来自 fake@163.com
的邮件时,qq邮件服务器会查看邮件来源的 IP,根据 IP 进行反向解析,如果解析到的域名和 163.com
一致,则接收邮件,否则认为邮件来源 IP 伪造成了163服务器 的IP ,则拒绝这封邮件。
三、相关攻击
DNS欺骗
DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。如果攻击者冒充域名服务器,把查询的地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站主页。
nslookup
域名组成
www.sina.com.cn
,www是主机名,sina.com.cn被称为域名,“主机名.域名”被称为完全限定域名(FQDN)
管理员在命名其主机时一般按照功能来命名,比如www.baidu.com、mail.baidu.com
域名树形结构
根(.)——>顶级域名——>一级域名——>二级域名
www . baidu . com
找www.baidu.com解析的时候本地DNS服务器如果解析不了,会去找根域. 根域虽然也解析不了但是他知道他的下一级.com的域名服务器的位置,
递归查询:客户机与本地DNS服务器之间