DNS协议只有两种报文,分别是DNS查询和DNS应答报文。这两种报文有着相同的格式,如图6-4所示。
DNS数据报的前12 Byte是其首部。
首部的第一个字段是会话标志,用于识别查询,这个查询识别码会从查询报文复制到应答报文中,以便让客户机通过它来确定收到的应答与哪个查询报文对应。这个字段有2 Byte,这意味着一台主机(或者服务器)最多可以同时发送65 536个不同的查询请求。
首部第二个字段是标志字段,含有若干个标志,共16 bit。其中最基本的就是标志报文是查询报文还是应答报文的QR标志,0为查询,1为应答。其他较为基本的标志还有4 bit的返回码,0表示没有差错,3表示名字差错,2表示服务器错误。
首部上还有4个数量字段,各自表示后面4种类型区域的数据量。
数据报的主体部分记录着四种类型的数据,分别是问题数据、回答数据、授权数据和附加数据。
容纳问题数据的问题区域包含本次所进行查询的信息,会出现在DNS查询报文中,其中包含被查询主机的域名字段和标明此次查询类型的信息。
(www.xing528.com)
图6-4 DNS报文格式
回答区域、授权区域、附加区域一般在不同的应答报文中使用。
回答区域容纳对域名查询的资源记录,最核心的内容当然是IP地址。由于同一域名可能对应多个IP地址,因此回答区域可以有多条信息。例如,新浪这样门户网站可能有多个网络出口,同一域名通过哪个地址都可以访问得到。
授权区域指示了其他权威服务器的地址,指示了可获取域名映射的权威名称服务器名称。
附加区域包含其他一些对查询者“有帮助”的内容。
DNS选择相对简单的UDP作为其传输层。DNS查询通信占据互联网通信量的比例很低,其报文的数据量也比较小,不必担心由它带来的流量、拥塞等问题出现。DNS查询的过程也比较简单,如果报文出错,直接重新查询即可。所以,DNS可以选择相对简单的UDP作为其传输层。
DNS协议服务进程默认的监听端口号是53。需要查询域名对应IP地址的设备在生成DNS报文后,将其作为UDP数据报的数据部分被发送出去,UDP首部的接收方端口号设置为53。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。