应用层-5、DNS

参考哈工大公开课。

DNS(域名解析系统)

DNS是Internet的核心服务且在应用层实现,它的核心作用就是把域名(www.baidu.com)转换为能够在互联网确定唯一服务器的IP地址。核心方法就是按照域名分层解析。

 

DNS服务:

DNS提供如下服务:

1、 域名向IP地址的翻译;

2、 定义主机别名;

3、 定义邮件服务器别名;

4、 负载均衡:Web服务器。例如:在双11,都访问www.taobao.com。一个服务器肯定不能处理这么大的访问量,所以阿里巴巴会提供一个服务器农场(多台服务器),每台服务器有个IP,你用这个域名访问的是服务器甲,而他用同一域名访问的是服务器乙。这就需要服务器把同一域名解析成不同的IP,让不同的服务器响应,从达到负载均衡的目的。

 

DNS的分层结构

当本地域名解析服务器无法解析域名,就访问根域名服务器。跟域名服务器在开始逐级查询并返回结果。且DNS的分层结构是每一各域名解析服务器只知道该DNS服务器下一层的域名。


图一:DNS的分层结构

在上文中提及的本地域名解析器不严格属于图一中的层级体系,每一个ISP(网络服务提供商)都有一个本地域名服务器,当主机进行DNS查询时,查询下被发送到本地域名服务器,由本地域名服务器代理查询。

 

DNS查询过程(迭代查询和递归查询)

迭代查询:类似于问路,走一截问一截,在DNS就是一层一层的查,它每查一层,返回应该去查的下一个服务器的地址,直到最后查到IP。

图二:迭代查询

 

 

递归查询:类似于递归函数调用的过程,函数逐层调用,找到IP后,再逐层return回来。


图三:递归查询

 

 

DNS协议:

DNS采用查询(query)和回复(reply)方式,且发送与回复消息格式格式相同。

消息头部:

1、 Identification:16位查询编号,回复使用相同的编号;

2、 flag:包括:查询或回复、期望递归、递归可用、权威回答等信息;

3、 更多的信息请参照图四;

 

 

 

图四:DNS消息格式