- 作者:老汪软件技巧
- 发表时间:2024-12-18 07:08
- 浏览量:
一、写在开头
在OSI七层协议模型中应用层是距离我们最近,且日后开发使用到最多的一层,在上一篇博文中我们已经学习了应用层中的HTTP协议,在本文中我们再一起来学一下DNS。啥?DNS不是很了解?那还不快往下看!
其实早几年和一个朋友聊天,当时,他是一个网络条线的技术经理,向我吐槽说,现在来面试的很多都是学不好编程语言的,转来搞网络了,结果问一个DNS,他都整不明白,就这还好意思干网络?我当时吓得不敢说话,因为我自己对于网络编程也是那种浅尝辄止的心态,生怕他回头问我一个问题,哈哈。
二、DNS的定义
DNS(Domain Name System)域名管理系统,是当用户使用浏览器访问网址之后,使用的第一个重要协议。DNS 要解决的是域名和 IP 地址的映射问题。
DNS是一个联机的分布式数据库系统,它具有分布式、层次化、模块化等特点,它属于应用层的协议,基于UDP传输,端口为53。
三、DNS服务器类别
我们上面说到DNS具有层次化结构,而这个层次化主要体现在它的服务器部署之上,DNS的域名层次结构是一棵树,从根域名服务器到顶级域名服务器、权威域名服务器,再到本地域名服务器,而我们所有遇到的DNS服务器,都囊括在这四类之中。
那么了解了DNS的底层服务器结构,它们是如何合作的,或者说是通过怎样的机制,达到解析域名,响应到对应的IP上的呢?继续往下看!
四、DNS的解析过程
开局先上一张图:
现在假设我们用浏览器去访问“”的IP地址,那么DNS解析系统的整个解析过程大致可以分为如下这几步:
第一步:客户端向本地DNS服务器发送DNS请求报文,报文中包含域名,若本地DNS中有相应的记录,直接反馈客户端,若没有则访问根DNS服务器,继续处理请求;第二步:本地DNS服务器向根域名服务器发送请求,根域名服务器是域名系统的最顶层,它负责管理所有顶级域名(如.com、.net、.org以及国家和地区代码如.cn)。根域名服务器会返回所查询域(在这个例子中是“.cn”域)的主域名服务器的地址;第三步:本地DNS在接收到根服务器返回的地址后,便向cn顶级域名服务器发送请求,一般到这里是有可能找到了对应的域名映射的IP地址的,但若还没有,它会查询自己的记录以找到“.”域的主域名服务器(权威DNS服务器)地址返回;第四步:本地DNS服务器只得继续向权威DNS服务器发去请求,终于,已经向权威域名DNS备案过了,在这里找到了它对应的记录,便把记录返回给本地DNS;第五步:本地dns服务器将收到的返回地址发给客户端,同时写入自己的缓存,以便下次查询;
需要注意的是: 从请求主机到本地 DNS 服务器的查询是递归的,其余的查询时迭代的;当找不到相应记录,会返回空结果,而不是超时信息。
五、DNS报文格式
DNS报文格式是DNS协议中用于客户端和服务器之间通信的一种结构化数据格式。DNS报文主要分为两种:查询报文和回答报文,它们具有相同的格式。
DNS(Domain Name System,域名系统)报文是在域名解析过程中,DNS客户端和DNS服务器之间传输的消息,其报文格式主要包括以下几个部分:
我们可以将其分成三个部分来看:
报文头部问题部分回答部分、权威机构部分和附加信息部分
这三个部分的格式基本相同,每个部分都可以包含多个资源记录,每个资源记录的格式如下:
总结
以上就是DNS域名管理系统涉及到的知识点啦,虽然很多后端程序员吗,在日后的工作中几乎不再深追DNS的底层原理,但初期,我们还是有必要了解一些网络上的内容的,毕竟企业内转岗比较常见。