例说图解TCPIP协议族--DNS篇(1)DNS协议基础

    xiaoxiao2022-07-12  156

        如下图,是windows下网卡的配置界面,相信大家都有见过,除了基本的IP地址、子网掩码、网关以外,还有主DNS服务器、备DNS服务器需要配置。

        如果我们不涉及到域名相关的请求,通常是不需要配置DNS服务器的。有时候我们上网很慢,可能改下DNS服务器到另外一台就解决问题。而这些都涉及到互联网中很基础的一个协议,DNS协议。

     

    1 初识DNS协议

    (1)DNS协议是用来干嘛的

        相信大家都听说过DNS,大概都知道DNS就是用来告知每个域名对应的IP地址是多少。但这只是DNS的功能之一,很小的一个功能。

        这点用专业术语来说应该是叫作DNS的A记录,A记录即记录了一台主机的域名和IPv4地址的映射关系。记录主机的域名和IPv6地址的映射关系,那就是AAAA记录。

        除了以上的A和AAAA记录以外,DNS还有好多其他类型的记录,功能不一,例如SOA、NS、CNAME、DNAME、MX、SRV、TEXT等等。

    (2)任何域名的解析都需要DNS处理吗

         如果只是简单的域名和IP地址的映射关系,我们完全可以用一个文件来记录,当客户端需要查找指定域名对应的IP地址(无论IPv4还是IPv6地址),优先查找此文件,在此文件没找到,再去向DNS服务器查找。

        而这个文件,我们称之为hosts文件,无论是Windows、还是Linux都存在这个文件,如下图所示。我们可以按照文件中的格式新增域名和IPv4/IPv6地址的映射关系。

    Windows下Linux下

    (3)DNS协议与OSI模型

        DNS协议属于应用层协议,位于OSI七层模型的最高层,底层是传输层UDP协议(也可以是TCP协议),占用的端口是53/udp(和53/tcp),如下图所示。

     

    2 DNS协议包的类型与报头

        DNS协议包的种类主要是两种,Query和Response,每个包里面的字段大同小异,如下图所示。

    DNS包DNS包举例(wireshark解析)各个字段解释DNS QueryTransaction ID:事务ID,用于区分一个完整的DNS会话Flags:标志,指定该包是查询包还是响应包Questions:Answer RRs:Authority RRs:Additional RRs:Queries:查询的内容DNS ResponseAnswers:查询的响应值Additional records:查询的附加值,非必需,看服务器

         DNS的常用记录

    常用记录格式说明SOA$ORIGIN crdc.cisco.com. @               IN      SOA     @ admin.crdc.cisco.com (                                         0       ; serial                                         1D      ; refresh                                         1H      ; retry                                         1W      ; expire                                         3H )    ; minimum

    对应zone的相关信息,每个zone只能有1个SOA记录。

    @: 表示zone的名字,如本例中的@表示【crdc.cisco.com.】。

    在服务端的域名最后一定要加上点号(.)。

    NS@              IN      NS     ns.crdc.cisco.com.zone下的DNS服务器的FQDNMX@              IN      NS     mail.crdc.cisco.com.zone下的邮件服务器的FQDNSRV_http._tcp.crdc.cisco.com.       IN      SRV     0       5       80        www.crdc.cisco.com. _sip._tcp.crdc.cisco.com.        IN      SRV     0       5       5060    cucm.crdc.cisco.com. _sip._udp.crdc.cisco.com.       IN      SRV     0       5       5060    cucm.crdc.cisco.com. _ldap._tcp.crdc.cisco.com.      IN      SRV     0       5       389      dc.crdc.cisco.com _imap._tcp.crdc.cisco.com.     IN      SRV     0       5       143      mail.crdc.cisco.com.zone下的应用服务器的FQDN,例如SIP服务器、HTTP服务器   Ans.crdc.cisco.com.      IN      A           10.74.97.122zone下某台主机FQDN对应的IPv4地址AAAAns.crdc.cisco.com.      IN      AAAA    2001:10:74:97::122zone下某台主机FQDN对应的IPv6地址CNAME

    ns.crdc.cisco.com       IN      CNAME   dns.crdc.cisco.com.

    ns.crdc.cisco.com       IN      CNAME   dns.test.com.

    zone下某台主机FQDN的别名(另一个FQDN)   PTR125.97.74.10.in-addr.arpa    IN    PTR    dc.crdc.cisco.com.反向zone下某台主机IPv4/IPv6地址对应的FQDNNAPTER  TEXT  DNAME  

     

    3 DNS常用工具

    (1)nslookup

            nslookup是一个用来测试服务器各种记录是否配置正确的工具,在Windows和Linux下默认都已经安装好了,常用参数如下所示。

    nslookup -type=A caowen-cucm-pub.crdc.cisco.com 10.74.97.125 10.74.97.125 代表要查询的服务器,不写的话,会调用网卡配置文件上的DNS服务器 -type=A caowen-cucm-pub.crdc.cisco.com 代表要查询该域名对应的IPv4地址,该域名是一台主机 还可以是 ------------------------------------------------------ -type=AAAA caowen-cucm-pub.crdc.cisco.com 代表要查询对象对应的IPv6地址,该对象是一台主机 -type=NS crdc.cisco.com 代表要查询对象对应的NS记录(DNS服务器的域名),该对象是一个域的名称,不是域内的主机 -type=MX crdc.cisco.com 代表要查询对象对应的MX记录(邮件服务器的域名),该对象是一个域的名称,不是域内的主机 -type=SRV crdc.cisco.com 代表要查询对象对应的SRV记录(应用协议对应服务器的域名),该对象是一个域的名称,不是域内的主机 caowen-cucm-pub.crdc.cisco.com 不带参数-type=“ ”,代表查询该对象的A/AAAA记录,该对象被当作一台主机 -type=X 10.74.97.123 查询该IP地址对应的域名,即PTR记录查询(反向记录查询)

    (2)ipconfig /displaydns

            Windows下查看DNS缓存的命令       

    (3)ipconfig /flushdns

            Windows下清除DNS缓存的命令   

    (4)dig

            该命令参数比较多,功能比较强大,在后面的高级课程会重点讲解。一般Linux下都默认安装,Windows没有安装,需要另外下载。

    最新回复(0)