域名(Domain Name):是由一串用点分隔的名字组成的interne 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。
DNS(网域名称系统,Domain Name System,有时也简称为域名):是因特网的一项核心服务,它作为可将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的巧问互联网,而不用去记住能够被机器直接读取的IP地址数串。提供主机名字和IP地址之间的转换。
DNS提供了允许服务器和客户程序相互通信的协议。
对DNS的访问是通过一个地址解析器(resolver)来完成的。
解析器通常是应用程序的一部分。解析器并不像TCP/IP协议那样是操作系统的内核。
域名服务主要是基于UDP实现的,服务器的端口号为==53==。
作用:为客户机提供域名解析,根据域名查出对应的 IP 地址。
DNS 系统
www.baidu.com
)来表示lP地址:220.181.111.188随着互联网的快速扩张,主机数量迅速增加,导致域名的数量也急速增加,接踵而来的问题:
答案:树状的名字空间
例:www.colasoft.com
级别最低的域名写在左边,级别最高的域名写在右边。.com
为顶级域名,.colasoft
是二级域名,www
是三级域名。
国家顶级域名:cn,jp…
商业顶级域名:com
政府顶级域名:gov
军事顶级域名:mil
教育顶级域名:edu
有域名结构还不行,还需要有一个东西去解析域名,域名需要由遍及全世界的域名服务器去解析,域名服务器实际上就是装有域名系统的主机。
域名解析过程
如果本机的host中没有,就会去本地的DNS服务器查找,如果本地的DNS服务器中有就会告诉客户机。
如果本地的DNS服务器中没有就会去根服务器查找,根服务器并不会告诉ip地址是什么,而是会让你去查找,会去**.com
的服务器中去查找。因为.com
的服务器是查不到的所以要去baidu.com
服务器中查找。找到后本地服务器会把www.baidu.com
**域名所解析的ip地址存到本地的DNS缓存中,再向客户机发送地址。
对于流量分析来讲,一般是在客户端抓包,可以看到递归查询的步骤。
这个报文是由12字节的首部和4个长度可变的字段组成。
整个 DNS 格式主要分为 3 部分内容,即基础结构部分、问题部分、资源记录部分。
每个字段的含义:
标识(identification):DNS 报文的 ID 标识。对于请求报文和其对应的应答报文,该字段的值是相同的。通过它可以区分 DNS 应答报文是对哪个请求进行响应的。
标志(Flags):DNS 报文中的标志字段。
问题数(Questions):DNS 查询请求的数目。
资源记录数(Answer RRs):DNS 响应的数目。
授权资源记录数(Authority RRs):权威名称服务器的数目。
额外资源记录数(Additional RRs):额外的记录数目(权威名称服务器对应 IP 地址的数目)。
标志字段之后的4个16bit字段说明最后4个变长字段中包含的条目数。
基础结构部分中的标志字段(Flags)又分为若干个字段。
标志字段中每个字段的含义如下:
该部分中每个字段含义如下:
查询名(Domain Name):一般为要查询的域名,有时也会是 IP 地址,用于反向查询。
查询类型(Type):DNS 查询请求的资源类型。通常查询类型为 A 类型,表示由域名获取对应的 IP 地址。
查询类(Class):地址类型,通常为互联网地址,值为 1。
查询名是要查找的名字,它是一个或多个标识符的序列,每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为0结束,长度为0的标识符是根标识符,计数字节的值必须是0~63的数,因为标识符的最大长度仅为63,如:
资源记录格式中每个字段含义如下:
下图显示,此DNS响应报文被封装在UDP数据报中,返回的两个回答除了IP地址不同外,其余是一样的,每个指针值为12,表示从DNS首部开始的偏移量:
使用Wireshark抓包查看
发现只有两个包,是递归查询。
DNS请求包
DNS应答包
使用OmniPeek抓包查看
DNS请求包
DNS应答包
DNS可以使用TCP作为传输协议进行交互吗?
DNS名字服务器使用的熟知端口号无论UDP还是TCP都是53端口号。这意味着DNS均支持UDP和TCP访问。
可以使用TCP,衡量效率后在查询时使用UDP,效率高速度快,使用TCP查询话打开网页速度慢三次握手四次挥手开销大。但在域名服务器同步数据时使用TCP更加可靠。因此DNS协议可以根据需要选择使用UDP或者TCP作为传输协议,以满足不同的网络环境的需求。
区域传送使用TCP(因为数据量大,使用TCP效率高)。