dns协议 订阅
域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。DNS协议是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。 展开全文
域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。DNS协议是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。
信息
外文名
DNS protocol
作    用
完成域名地址与IP地址的转换
中文名
域名解析协议
dns协议简介
DNS是一种可以将域名和IP地址相互映射的以层次结构分布的数据库系统。DNS系统采用递归查询请求的方式来响应用户的查询,为互联网的运行提供关键性的基础服务。目前绝大多数的防火墙和网络都会开放DNS服务,DNS数据包不会被拦截,因此可以基于DNS协议建立隐蔽信道,从而顺利穿过防火墙,在客户端和服务器之间传输数据。 [1]  DNS允许终端用户设备将给定的人类可读URL转换为网络可以理解的机器可用IP地址。Internet Engineering Task Force(IETF)标准组对HTTP和DNS进行了标准化定义。原始的DNS标准是在1987年发布的,因为用户在使用网络浏览器的同时需要使用其他应用程序,例如将电子邮件地址转换为IP地址。 [2] 
收起全文
精华内容
下载资源
问答
  • DNS协议

    千次阅读 2014-05-17 21:02:40
    DNS协议

    说明:本文仅供学习交流,转自请标明出处,欢迎转载! 

    本文是以下文献相关内容的总结:
    [1] 《TCP/IP详解 卷1:协议》
    [2] 《TCP/IP协议族 第4版》
    [3] 《计算机网络 第5版》

           如果说ARP协议是用来将IP地址转换为MAC地址,那么DNS协议则是用来将域名转换为IP地址(当然也可以将IP地址转换为相应的域名地址)。 在讨论DNS协议之前,先回答几个容易想到的问题。

           问题一:网络中的主机为什么不直接使用域名而用IP地址进行通信?

           因为IP地址是固定长度的,IPv4是32位,IPv6是128位,而域名是变长的,不便于计算机处理,但便于用户使用,例如www.baidu.com这是百度的域名,我们一看就明白。总结一点就是IP地址是面向主机的,而域名则是面向用户的。

          问题二:假如用户希望通过FTP客户进程来访问运行在一台远程主机上的FTP服务器,该FTP服务器的域名为xxx.com.,给出整个处理流程大致描述?(假设xxx.com是一个实际存在的服务器域名)

           1.用户将xxx.com.传递给其主机上的FTP客户进程;

           2.FTP客户程序将xxx.com.传递给DNS客户进程;

           3.由于每一台主机在加载内核后都能获得其DNS服务器的IP地址,DNS客户进程便通过该IP地址向DNS服务器发送DNS查询报文,要求服务器给出xxx.com对应的IP地址;

           4.DNS服务器进程在收到该DNS查询报文后,通过一系列的查询操作(递归查询或迭代查询)获得xxx.com对应的IP地址后将xxx.com的IP地址写入到DNS响应报文中发回给DNS客户进程;

           5.DNS客户进程将获得的xxx.com的IP交付给FTP客户进程;

           6.FTP客户进程在收到FTP服务器的IP地址后,就可以访问FTP服务器了。

           Notice:客户进程在于服务器进程发送数据报之前,必须要知道服务进程所在服务器的IP地址,因为socket地址=(IP地址:端口号),网络进程间的通信是通过socket进行的。

          下面详细地介绍下DNS协议的工作原理。

          一、域名

           像Linux目录结构一样,现代因特网采用层次树状结构的命名方法,任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,该名字称为域名

            

               

               (1)域名的分级:域名可以划分为各个子域,子域还可以继续划分为子域的子域,这样就形成了顶级域、二级域、三级域等。

            

            其中顶级域名分为:国家顶级域名、通用顶级域名、反向域名

            国家顶级域名:中国:cn, 美国:us,英国uk...

            通用顶级域名:com 公司企业  edu教育机构 gov政府部门  int国际组织  mil军事部门  net网络

                                      org非盈利组织...

            反向域名:只有一个arpa,用于PTR查询(IP地址转换为域名) 。

           (2)域名的完整性:根据域名的完整性,我们将域名分为FQDN和PQDN。

             FQDN(Full Qualified Domain Name):完全合格的域名,也称为绝对域名(还记得绝对路径吗?Linux中的绝对路径是以/开头,而此处的绝对域名则是已.结尾)。

            PQDN(Partiallly qualified domain name):标号不是以.结束,在将该地址传递给DNS服务器之前,本主机的DNS客户进程中的解析程序可以补充缺少的部分(称为后缀),使得PQDN变为FQDN,显然DNS客户程序通常保存了一份有关后缀的列表

           一个域名服务器所负责的范围,或者说有管理权限的范围,就称为,每一个区中所有的结点必须是连通的,每一个区中都设置相应的权限域名服务器,用来保存该去中的所有主机的域名到IP地址的映射。所以,DNS服务器的负责范围不是以“域”为单位的,而是以“区”为单位,区可能小于或等于域,但一定不会大于域,区是“域”的子集


           NOTICE:同一个区可能存在多个权限域名服务器。

           域名服务器主要分为:根域名服务器、顶级域名服务器、权限域名服务器、本地域名服务器。

           根域名服务器:相当于一个总指挥,每一个域名服务器都必须知道如何与根域名服务器联系;

           顶级域名服务器:负责管理所有的二级域名;

           权限域名服务器:负责管理一个区。当一个权限域名服务器还不能给出最后的查询回答时,就会告诉查询请求的DNS客户进程,下一步应当找哪一个权限域名服务器;

           本地域名服务器:可以看成是默认域名服务器,DNS客户进程收到主机发送过来的域名后,就会最初向该域名服务器发送查询请求。

            为了保证数据的安全性,一个区域的管理者必须为该区域提供一个主域名服务(primaryserver)和 辅助域名服务器(secondary server)主域名服务器从磁盘文件中调入该区域的所有信息,而辅助域名服务器则从主域名服务器调入所有信息,我们将辅助域名服务器从主域名服务器调入信息的过程称为区域传送。当主域名服务器的磁盘文件更新时,辅助名字服务器会定时(通常为3h)向主域名服务器询问是否有数据更新,如果有,则通过区域传送方式获得新数据。建立辅助域名服务器的目的是为了保证数据的安全性,当主域名服务器出现故障时间,其辅助域名服务器可以继续对客户提供服务。

             NOTICE:一个服务器可以是某个区域的主域名服务器,同时又是另一个区域的辅助域名服务器。

           二、递归查询与迭代查询       

           在理解递归查询与迭代查询之前,必须要弄明白“递归”与“迭代”的区别。我们从C++的角度来理解递归与迭代的区别,所谓递归就是函数自己调用自己,而迭代则是函数内部循环地调用他人。下面,我们举出递归与迭代的C++程序:

    递归程序:f(n)=f(n-1)+n,f(1)=1,我们用C++递归实现如下

    #include<iostream>
    int f(int n)
    {
    	if(n==1)
    		return 1;
    	else
    		return f(n-1)+n;<span style="color:#ff0000;">//递归过程</span>
    }
    迭代程序:f(n)=1+2+3+...+n,我们用C++迭代实现如下

    #include<iostream>
    int f(int n)
    {
    	int i,sum=0;
    	for(i=1;i<=n;i++)
    	{
    		sum+=i;<span style="color:#ff0000;">//迭代过程</span>
    	}
    	return sum;
    }

           NOTICE递归和迭代的区别,通俗地说:递归就是把一件事情交给别人,如果事情没有办完,哪怕已经办了很多,都不要把结果告诉我,我要的是你的最终结果,而不是中间结果;如果你没办完,请你找别人办完;而迭代则是我交给你一件事,你能办多少就告诉我你办了多少,然后剩下的事情就由我来办。

            下面给出这两种查询方式在DNS查询中的应用图:

             递归查询


             迭代查询:


             Notice:通常情况下,主机向本地域名服务器的查询一般都是采用递归查询,本地域名服务器向根根域名服务器的查询通常采用迭代查询。

             三、DNS报文格式

             

             下面注意介绍下DNS报文中的标志部分(注意不是标识,标识只是给出一个序列号,客户在每次发送查询时使用不同的标识好,服务器在响应的响应中重复这个标识号):

                                  

          QR:定义报文类型,QR=0表示查询报文,1表示响应报文;

          opcode:定义查询或响应的类型,0表示标准的,1表示反向的,2表示服务器状态请求;

           AA(Authoritative answer):授权回答,只用于响应报文。1表示该域名服务器是该区域的授权服务器;

           TC(Truncated):可截断的,使用UDP服务时,若响应报文的总长度超过512B,则只返回前512B;

           RD(Recursion Desired):期望递归,0表示DNS客户进程希望迭代查询,1表示DNS客户希望递归查询;

           RA(Recursion Available):递归可用,只用于响应报文。若域名服务器支持递归,则该服务器便在响应报文中将 RA=1。

           (zero):保留字段;

           rcode:表示在响应中的差错状态,只有权限服务器才能做出该判断。具体如下:

                         0:无差错               1:格式差错            2:问题出在域名服务器上

                         3:名字差错           4:查询类型不支持  5:在管理上被禁止           6~15:保留

          查询问题(问题记录):


          查询名:包含域名的可变长度字段,每个域以计数开头,最后一个字符为0(零),每个字符占1B。如:www.baidu.com可以这样记录:3www5baidu3com0

          查询类型:每一个问题的查询有一个类型,响应也有一个类型。


                               其中最常用的查询是A类型和PTR类型:A类型就是域名到IP地址,PTR查询就是IP地址到域名。

           查询类:定义了使用DNS的特定协议,1表示因特网。

           资源记录(RR)

            响应报文中的三种资源记录回答、授权、附加)均采用相同的格式,如下图所示:


            上图域名、类型和类与查询报文中的问题记录中的查询名、查询类型、查询类对应;

             生存时间:    以s为单位,定义了此回答的有效期(一般为2天)。在这段有效期内,客户长须可以将此回答保存在caching中,当TTL设置为0表示该资源记录只能用于本次回答,而不能存放在caching中;

             资源数据长度:用于记录后面资源数据的长度;

             资源数据:包含对查询的回答(在回答部分),或者权限服务器的域名(在授权部分),或者一些附加信息(在附加信息部分)。这个字段的格式和内容取决于类型字段的值。它可以是下述之一:

              a.数值  这个数以八位组为单位,例如IPv4是4个八位组的整数倍;

              b.域名   记录域名由两种方法,方法一就是查询报文中所提到的如:3www5baidu3com0,方法二是采用指针的方法,因为一个回答报文中可能同时包含多种资源记录RR,而对于每一种资源记录RR,都会重复域名部分,为了节约空间,在后面的RR(非第一个RR)的域名部分,我们采用偏移指针的方式。偏移指针(占用16位)指的是偏离DNS响应报文首部最开始的位置(以字节为单位)且以11开头,偏移值范围为0~63B。例如偏离首部最开始部分12B可以记录为:1100 0000 0000 1100。

    Notice:当在响应报文中出现域名重复时,DNS要求用偏移指针来代替域名,DNS定义了2B的偏移指针,格式“11+偏移长度”,最高位固定为11,从而实现压缩

             c.字符串 字符串用1B的长度字段紧跟着一串长度的字符。长度字段并不像域名长度哪有受限。字符串可以多打255个字符(包括长度字段)

            四、高速缓存Caching 

            DNS客户程序将查询报文交给某个DNS服务器后(通常是主机域名服务器),若被查询的域名不在该DNS服务器的映射表中,则该DNS服务器会向另外一个DNS服务器请求 映射并在接收到响应后,把该映射信息返回给DNS客户程序之前,先要将该映射存储在自己的Caching中。若同一个客户或另一个客户请求同样的映射时,它就检查caching,并能够快速实现解析。当然,由于该服务器不是DNS程序的所请求域名的权限服务器,为了告知DNS客户程序这个响应是来自caching,而不是一个授权的信息源,这个服务器要把响应标记为未授权的。

             Caching可以提高解析效率,当然“如何更新Caching”是一个问题。可以采取如下方案反正Caching过时:

             方案一:权限域名服务器把TTL的信息添加到映射上,因为TTL定义了接收信息的服务器可以把映射信息放入Caching的时间长度(通常为2天),经过这段时间后,这个映射就变为无效的,因而任何查询都必须在发送给权限服务器。

            方案二:DNS要求每一个权限服务器对Caching中的每一条映射都有保持一个TTL计数器。Caching必须定期地搜索并清除那些TTL到期的映射。

            五、DNS请求中UDP和TCP的选择

             DNS可以使用UDP/53,也可以使用TCP/53,当响应报文的长度小于512B时就使用UDP(因为UDP的最大报文长度为512B),若响应报文的长度超过512B,则选用TCP。DNS协议关于UDP和TCP的选择通常为以下两种情况:

            (1)若DNS客户程序事先知道响应报文的长度512B,则应当使用TCP连接;

              NOTICE:主域名服务器与辅助域名服务器在进行区域传送时,通常数据量都比较大,所有DNS规定,区域传送使用TCP协议。

            (2)若解析程序不知道响应报文的长度,它一般使用UDP协议发送DNS查询报文,若DNS响应报文的长度大于512B,服务器就截断响应报文,并把TC(truncated)位置1,在这种情况下,DNS客户程序通常使用TCP重发原来的查询请求,从而它将来能够从DNS服务器中收到完整的响应。

              综上所述,我们可以得出结论:DNS客户程序在不知情(不知道DNS响应报文的长度是否超过512B)的情况下通常采用UDP与DNS服务器程序连接,在知情的情况下则采用TCP进行连接

    展开全文
  • DNS 协议

    千次阅读 2015-02-24 21:45:45
    DNS 协议 12(共 15)对本文的评价是有帮助 - 评价此主题 DNS 协议包含不同类型的 DNS 消息根据其邮件域中的信息来处理的。 本节讨论的 DNS 消息类型以及每种消息类型中的字段。 在此部分中...

    DNS 协议

    12(共 15)对本文的评价是有帮助 评价此主题

    DNS 协议包含不同类型的 DNS 消息根据其邮件域中的信息来处理的。 本节讨论的 DNS 消息类型以及每种消息类型中的字段。

    在此部分中,讨论了下列 DNS 邮件主题:

    • 消息类型 

    • DNS 查询邮件格式 

    • DNS 查询邮件头 

    • DNS 查询问题条目 

    • DNS 资源记录 

    • 名称查询消息 

    • 名称查询响应 

    • 反向名称查询消息 

    • 利用 DNS 更新邮件格式 

    • 利用 DNS 更新邮件标志 

    • 动态更新响应消息 

    消息类型

    有三种类型的 DNS 消息:

    • 查询 

    • 响应 

    • 更新 

    查询和响应中的原始 DNS 标准,定义和 RFC 2136 中定义的更新。 所有三种类型按照常见的邮件格式。

    DNS 查询邮件格式

    常见的 DNS 邮件格式具有固定长度、 12 字节的标头和变量的位置,保留的问题、 答案、 授权和其他 DNS 资源记录。 常见的邮件格式如下所示:

    标准 DNS 查询邮件格式

    DNS 邮件格式

    DNS 标头 (固定长度)

    问题的条目 (可变长度)

    应答资源记录 (可变长度)

    颁发机构资源记录 (可变长度)

    其他资源记录 (可变长度)

    DNS 查询邮件头

    DNS 消息标头包含以下字段,按以下顺序:

    DNS 查询消息标头字段

    字段名称 说明

    事务 ID

    16 位字段,用于标识一个特定的 DNS 事务。 事务 ID 创建的邮件原始发件人,并复制到其响应消息的响应情况。 使用事务 ID,DNS 客户端可以匹配其请求的响应。

    标志:

    包含 DNS 客户端和 DNS 服务器之间通讯的各种服务标志的 16 位字段包括:

    请求/响应

    1 位字段设置为 0,则表示名称服务请求,或者设置为 1,以表示名称服务的响应。

    操作代码

    4 位字段表示数据包的名称服务操作: 0x0 是一个查询。

    权威性应答

    1 位字段表示响应方是查询消息中的域名具有权威性。

    截断

    如果响应总数超过用户数据报协议 (UDP) 数据报被设置为 1 的 1 位字段。 除非启用了 UDP 数据报大于 512 字节或 EDNS0,只有第一个 512 字节的 UDP 答复返回。

    所需的递归

    1 位字段设置为 1 以指示递归查询,并且对于迭代查询 0。 如果 DNS 服务器收到查询消息与该域设置为 0 时,它将返回客户端可以联系其他 DNS 服务器的列表。 此列表是从本地缓存数据填充的。

    可用的递归

    1 位设置字段 1 以表示一个 DNS 服务器的 DNS 服务器可以处理针对递归查询。 如果禁用递归,则 DNS 服务器将适当地设置的字段。

    保留

    3 位字段是保留,设置为 0。

    返回代码

    4 位字段中保存的返回代码:

    • 0 表示成功的响应 (答案是查询响应中的查询)。 

    • 0x3 是名称错误,指示的权威性 DNS 服务器响应查询消息中的域名称不存在。 有关返回代码的详细信息,请参阅 DNS 的参考信息 . 

    试题资源记录计数

    16 位字段代表 DNS 消息中的问题一节中的条目数。

    应答资源记录计数

    16 位字段代表 DNS 消息的应答部分中的条目数。

    颁发机构资源记录计数

    16 位字段代表的 DNS 消息中的颁发机构资源记录数。

    其他资源记录计数

    16 位字段表示 DNS 消息中的其他资源记录的数目。

    DNS 查询问题条目部分

    DNS 消息的问题项部分包含的域名称,被查询,并且具有以下三个字段:

    DNS 查询问题输入字段

    字段名称 说明

    问题名称

    正在查询的域名。 DNS 域名称的表示为一系列的标签,如 microsoft.com,但在问题名称字段中的域名称被编码为一系列的长度-值对包含 1 字节的文件,指示该值,跟值 (标签) 的长度。 例如,域 microsoft.com 表示为0x09microsoft0x03com0x00,其中十六进制数字表示每个标签的长度、 ASCII 字符表示单个标签,并最终 0 指示名称的结尾。

    问题类型

    16 位整数,用于表示应返回的资源记录类型,如下面来表示:

    类型值

    返回的记录

    0x01

    主机 (A) 记录

    0x02

    名称服务器 (NS) 记录

    0x05

    别名 (CNAME) 记录

    0x0C (12)

    反向搜索 (PTR) 记录

    0x0F (15)

    邮件交换 (MX) 记录

    0x21 (33)

    服务 (SRV) 记录

    0xFB (251)

    增量区域传输 (IXFR) 记录

    0xFC (252)

    标准的区域传输 (AXFR) 记录

    0xFF (255)

    所有记录

    问题类别

    代表 IN (Internet) 问题类并且通常设置为 0x0001。

    DNS 资源记录

    答案、 授权和 DNS 响应消息的部分可以包含应答的查询消息问题部分的资源记录的其他信息。 资源记录的格式如下:

    DNS 资源记录的消息字段

    字段名称 说明

    资源记录名称

    为可变长度字段后面与问题名称字段相同的格式记录的 DNS 域名。

    资源记录类型

    资源记录类型值。

    资源记录类

    资源记录类代码,互联网类,0x0001。

    生存时间

    将秒显示为一个 32 位无符号字段以表示 TTL。

    资源数据长度

    2 字节指示资源数据的长度字段。

    资源数据

    对应于该资源记录的可变长度数据类型。

    除非名称已存在 DNS 消息,此时 2 字节的字段来代替一个长度值编码名称和充当一个指针,指向已存在的名称中的其他地方,资源记录名称字段进行编码问题名称字段的方式相同。

    名称查询邮件格式

    名称查询邮件格式是上面所述的 DNS 消息格式相同。 在典型的名称查询邮件中,设置 DNS 消息字段如下:

    DNS 名称查询消息字段

    字段名称 说明

    查询标识符 (事务 ID)

    若要启用 DNS 客户端解析程序以匹配对查询的响应,将设置为一个唯一的编号。 查询响应事务 ID 始终匹配查询请求事务 id。

    标志

    设置以启用递归指示一个标准查询。

    试题计数

    设置为 1。

    问题条目

    返回设置为查询的域名和资源记录类型。

    名称查询响应消息格式

    名称查询响应邮件格式是上面所述的 DNS 消息格式相同。 在典型的名称查询邮件中,将按以下方式设置 DNS 消息字段:

    DNS 名称查询响应字段

    字段名称 说明

    查询标识符 (事务 ID)

    若要启用 DNS 客户端解析程序以匹配对查询的响应,将设置为一个唯一的编号。

    标志

    设置以启用递归指示一个标准查询。

    试题计数

    设置为 1。

    问题条目

    返回设置为查询的域名和资源记录类型。

    反向名称查询邮件格式

    反向名称查询邮件使用常见的邮件格式具有以下区别:

    • DNS 客户端解析器构造基于查询的 IP 地址在 in-addr.arpa 域中的域名。 

    • 指针 (PTR) 资源记录查询而不是主机 (A) 资源记录。 

    利用 DNS 更新邮件格式

    利用 DNS 更新格式使用标头定义更新操作执行的消息和一个包含更新的资源记录集。 利用 DNS 更新消息格式包含了以下字段:

    • 标识 由 DNS 客户端请求分配一个 16 位标识符。 此标识符对应的回复中复制,并可用于以匹配答复未完成的请求,请求程序或由服务器检测到来自某些请求程序的复制的请求。 

    • 标志 16 位 DNS 更新邮件标志字段。 有关每个标志的说明,请参阅下面的"DNS 更新邮件标志字段"。 

    • 区域的条目数 在区域条目部分的资源记录的数量。 

    • 系统必备的资源记录的数量 在系统必备的资源记录部分中的资源记录的数量。 

    • 更新资源记录的数量 在更新资源记录部分中的资源记录的数量。 

    • 其他资源记录的数量 在其他资源记录部分中的资源记录的数量。 

    • 区域项 表示正在更新的记录的区域。 更新的所有记录都必须在同一区域中,并因此允许区域部分包含一个记录。 它有三个值: ZNAME 是区域名称、 ZTYPE 必须是 SOA,和 ZCLASS 是该区域的类。 

    • 系统必备的资源记录 包含一组的资源记录的系统必备组件必须满足在主 DNS 服务器接收到更新消息的时间。 有五个组可能的值可以表示的: 

      • 资源记录集存在 (值无关)。 必须存在具有指定的名称和类型 (在区域和区域部分中所指定的类) 的至少一个资源记录。 

      • 资源记录集存在 (相关的值)。 具有指定的名称和类型的资源记录的一组存在,并且具有相同的成员具有相同的数据作为此部分中指定的资源记录集。 

      • 不存在资源记录集。 没有具有指定的名称和类型 (在区域和区域部分由表示的类) 的资源记录存在。 

      • 名称正在使用中。 使用指定的名称 (在区域和区域部分中所指定的类) 的至少一个资源记录存在。 由空 nonterminals,则不满足此先决条件。 

      • 名称不在使用中。 任何类型的任何资源记录不属于指定的名称。 通过空的 nonterminals,则满足此先决条件。 

    • 更新资源记录 包含要添加或删除从区域的资源记录。 在更新过程中,将执行四个操作之一: 

      • 向资源记录集添加资源记录。 

      • 删除资源记录集。 

      • 从名称中删除所有资源记录集。 

      • 从资源记录集中删除资源记录。 

    • 其他资源记录 包含此更新,或正在被更新添加的新资源记录相关的资源记录。 

    利用 DNS 更新消息标志字段

    利用 DNS 更新邮件标志字段使用了以下标志:

    • 请求/响应 1 位字段设置为 0 表示更新请求和 1 来表示一个更新的响应。 

    • 操作代码 4 位字段设置为 0x5 DNS 更新。 

    • 保留 7 位保留的字段设置为 0。 

    • 返回代码 4 位字段包含代码,以表示更新查询的结果。 代码如下所示: 

      利用 DNS 更新邮件标志字段返回代码值 

      结果代码值 说明

      0 (NOERROR)

      没有错误;成功的更新。

      1 (FORMERR)

      格式错误。DNS 服务器不理解更新请求。

      0X2 (SERVFAIL)

      DNS 服务器遇到内部错误,如转发超时。

      0X3 (NXDOMAIN)

      应该存在的名称不存在。

      0X4 (NOTIMP)

      DNS 服务器不支持指定的操作代码。

      0X5 (拒绝)

      DNS 服务器将拒绝执行更新。

      0X6 (YXDOMAIN)

      不应存在的名称确实存在。

      0X7 (YXRRSET)

      不应存在的资源记录集不存在。

      0X8 (NXRRSET)

      应存在的资源记录集不存在。

      0X9 (NOTAUTH)

      无法在区域部分中命名该区域的权威 DNS 服务器。

      0XA (NOTZONE)

      系统必备组件或更新部分中使用的名称不是通过区域部分中指定的区域内。

    展开全文
  • DNS协议隧道、DNS协议隧道-dns2tcp

    千次阅读 2018-08-24 14:27:06
    DNS协议隧道 防火墙禁止TCP出站访问流量 - SSH隧道、端口准发全部失效 - 使用基于UPD协议的隧道 - DNS的工作原理适合用于实现隧道 DNS工作原理 ...

    DNS协议隧道

    防火墙禁止TCP出站访问流量

    - SSH隧道、端口准发全部失效           
    
    - 使用基于UPD协议的隧道               
    
    - DNS的工作原理适合用于实现隧道       
    

    DNS工作原理

    - DNS隧道原理: 注册受自己控制的DNS记录
    

    DNS协议隧道—–dns2tcp

    Dns2tcp

    - 利用合法DNS服务器实现DNS隧道            
    
    - C/S(dns3tcpc / dns2tcpd)结构          
    
    - 通过TXT记录加密传输数据(A记录长度有限)
    
    - 隧道建立后保持连接                      
    
    - 默认记录生存时间TTL值为3秒              
    

    安装

    - apt-get install dns2tcp                 
    
    - Kali默认安装
    

    ** This is mOnOwall, version 1.8.1

     built on Web Jan 15 13:32:38 GET 2014 for generic-pc
    
     Copyright (C) 2002-2014 by Manuel Kasper. All rights reserved.
    
     Visit http://mOnO.ch/wall for updates.
    
     LAN IP address: 192.168.1.1
    
     WAN IP address: (unknown)
    
     Port configuration:
    
     LAN    -> em0
    
     WLAn   -> em1
    

    mOnOwall console setup


    1) Interfaces: assign network ports

    2) Set up LAN IP address

    3) Reset webGUI password

    4) Reset to factory defaults

    5) Reboot system

    6) Ping host

    7) Install on Hard Drive

    Enter a number:

    yuanfh@Bodhi:~$ ifconfig

    1.1.1.10

    yuanfh@Bodhi:~$ netstat -nr

    Kernel IP routing table

    Destination Gateway Genmask Flags MSS Windows irtt Iface

    0.0.0.0 1.1.1.1 0.0.0.0 UG 0 0 0 eth0

    1.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

    monowall IP: 192.168.1.123

    yuanfh@Bodhi:~$ sudo apt-get install dns2tcp wireshark firefox

    DNS协议隧道—–dns2tcp

    演示环境-1

    - Win 2003: 安装DNS服务;配置转发器;创建区域lab.com;指派二级域
    
      test.lab.com,NS记录指向Kali                                  
    
    - 防火墙:只允许出站UDP 53端口流量                             
    
    - Bodhi Linux:                                                  
    
          安装dns2tcp、wireshark、firebox                           
    
          dns2tcpc -c -k pass -d 1 -l 2222 -r ssh -z test.lab.com
    

    安装DNS

    开始运行“appwiz.cpl”—–>添加/删除windows组件—–>网络服务—–>域名系统—–>确定—–>下一步

    DNS—–>正向查找区域—–>主要区域—–>lab.com—–>创建新文件,文件名为(C):lab.com.dns—–>不允许动态更新—–>完成

    新建主机记录—–>kali—–>192.168.1.110—–>添加主机—–>完成

    lab.com—–>右键”新建委派”—–>受委派域名,test—–>名称服务器,添加“kali”—–>完成

    配置转发器

    服务器图标“W2K3”—–>属性—–>转发器—–>所选与的转发器的IP地址列表:127.207.160.106,添加。219.239.26.42,添加—–>应用,确定

    yuanfh@Bodhi:~$ cat /etc/resolv.conf

    Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)

    DO NOT EDIT THIS FILE BY HAND – YOUR CHANGES WILL BE OVERWRITTEN

    nameserver 172.0.0.1

    search local

    yuanfh@Bodhi:~$ sudo vi /etc/resolv.conf

    Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)

    DO NOT EDIT THIS FILE BY HAND – YOUR CHANGES WILL BE OVERWRITTEN

    nameserver 192.168.1.124

    search local

    yuanfh@Bodhi:~$ nslookup

    set q=ns

    lab.com

    Server: 192.168.1.124

    Address: 192.168.1.124#53

    lab.com nameserver = w2k3

    set q=ns

    test.lab.com

    Server: 192.168.1.124

    Address: 192.168.1.124#53

    Non-authoritative answer:

    test.lab.com nameserver = kali.lab.com.

    Authoritative answer can be found from:

    kali.lab.com internet address = 192.168.1.110

    set q=a

    kali.lab.com

    Server: 192.168.1.124

    Address: 192.168.1.124#53

    Name: kali.lab.com

    Address:192.168.1.110

    www.baidu.com

    Server: 192.168.1.124

    Address: 192.168.1.124#53

    Non-authoritative answer:

    www.baidu.com canonical name = www.a.shifen.com.

    Name: www.a.shifen.com

    Address: 119.75.218.70

    Name: www.a.shifen.com

    Address: 119.75.217.109

    www.taobao.com

    Server: 192.168.1.124

    Address: 192.168.1.124#53

    Non-authoritative answer:

    www.taobao.com canonical name = www.taobao.com.danuoyi.thcache.com.

    Name: www.taobao.com.danuoyi.thcache.com.

    Address: 124.193.235.253

    Name: www.taobao.com.danuoyi.thcache.com.

    Address: 124.193.235.253

    DNS协议隧道—–dns2tcp

    服务器配置文件

    - /etc/dns2tcpd.conf                      
    
    - .dns2tcprcd                             
    
    - 资源可以是其他地址                      
    

    启动

    - dns2tcpd -F -d 1 -f /etc/dns2tcpd.conf  
    
    - F:前端运行                             
    
    - d:debug level 1-3                      
    
    - f:指定配置文件
    

    listen = 0.0.0.0

    port = 53

    user = nobody

    chroot = /tmp

    key = password123

    domain = test.lab.com

    resources = ssh:127.0.0.1:22 , smtp:127.0.0.1:25 , socks:127.0.0.1:1082,

    https:127.0.0.1:8087 , http:127.0.0.1:3128


    root@K:~# vi /etc/dns2tcpd.conf

    listen = 0.0.0.0

    port = 53

    user = nobody

    chroot = /tmp

    domain = test.lab.com

    resources = ssh:127.0.0.1:22 , smtp:127.0.0.1:25 , socks:127.0.0.1:1082,

    http:127.0.0.1:3128 , https:127.0.0.1:8087

    root@K:~# vi /etc/ssh/sshd_config

    PermitRootlogin yes

    PasswordAuthentication yes

    root@K:~# service ssh start

    root@K:~# dns2tcpd -F -d 1 -f /etc/dns2tcpd/conf

    19:22:22 : Debug options.c:97 Add resource ssh:127.0.0.1 port 22

    19:22:22 : Debug options.c:97 Add resource smtp:127.0.0.1 port 25

    19:22:22 : Debug options.c:97 Add resource socks:127.0.0.1 port 1080

    19:22:22 : Debug options.c:97 Add resource http:127.0.0.1 port 3128

    19:22:22 : Debug options.c:97 Add resource https:127.0.0.1 port 8087

    19:22:22 : Debug options.c:55 Listening on 0.0.0.0:53 for domain test.lab.com

    Starting Server v0.5.2…

    19:22:22 : Debug mian.c:132 Chroot to /tmp

    19:22:24 : Debug main.c:142 Change to user nobody

    root@K:~# service ssh start

    root@K:~# vi /etc/sshd_config

    listen = 0.0.0.0

    port = 53

    user = nobody

    chroot = /tmp

    domain = test.lab.com

    key = pass123

    resources = ssh:127.0.0.1:22 , smtp:127.0.0.1:25 , socks:127.0.0.1:1082,

    http:192.168.1.1:80 , https:127.0.0.1:8087

    root@K:~# dns2tcpd -F -d 1 -f /etc/dns2tcpd/conf

    19:22:42 : Debug options.c:97 Add resource ssh:127.0.0.1 port 22

    19:22:42 : Debug options.c:97 Add resource smtp:127.0.0.1 port 25

    19:22:42 : Debug options.c:97 Add resource socks:127.0.0.1 port 1080

    19:22:42 : Debug options.c:97 Add resource http:192.168.1.1 port 3128

    19:22:42 : Debug options.c:97 Add resource https:127.0.0.1 port 8087

    19:22:242 : Debug options.c:55 Listening on 0.0.0.0:53 for domain test.lab.com

    Starting Server v0.5.2…

    19:22:42 : Debug mian.c:132 Chroot to /tmp

    19:22:42 : Debug main.c:142 Change to user nobody

    yuanfh@Bodhi:~$ dns2tcpc -c -k pass123 -d 1 -l 2222 -r ssh -z test.lab.com

    No DNS given, using 192.168.1.124 (first entry found in resolv.conf)

    debug level 1

    Listening on port : 2222

    No response from DNS 192.168.1.124

    19:46:26 : Debug session.c:54 Session created (0xd97d)

    19:46:26 : Debug auth.c:94 Connect to resource “ssh”

    19:46:26 : Debug client.c:141 Adding client auth OK:0xd97d

    19:46:26 : Debug requests.c:274 send desauth

    19:46:26 : Debug client.c:69 free client

    ^C

    yuanfh@Bodhi:~$ sudo wireshark

    [sudo] password for yuanfh:

    (!(ipv6.version == 6)&&!(ip.src == 192.168.56.1)

    yuanfh@Bodhi:~$ ssh root@127.0.0.1 -p 2222

    The authenticity of host ‘[127.0.0.1]:2222 ([127.0.0.1]:2222)’ can’t be established.

    ECDSA key fingerprint is 6f:bf:fc:e5:d0:96:65:34:99:7d:81:06:b6:5e:44:50.

    Are you sure want to continue connectione (yes\no)? yes

    Warning: Permanently added ‘[127.0.0.1]:2222’ (ECDSA) to the list of known hosts.

    root@127.0.0.1’s password:

    The programs included with the Kali GHU/Linux system are free softwere:

    the exact distribution terms for each program are described in the indicidual files in /usr/share/doc/*/copyright.

    Kali GNU/Linux comes with ABSOLUTELY NO WARRANTY. to the extent

    permitted by applicable law.

    yuanfh@Bodhi:~$ dns2tcpc -c -k pass123 -d 1 -l 2222 -r http -z test.lab.com

    No DNS given, using 192.168.1.124 (first entry found in resolv.conf)

    debug level 1

    Listening on port : 2222

    yuanfh@Bodhi:~$ dns2tcpc -c -k pass123 -d 1 -l 7001 -r https -z test.lab.com

    No DNS given, using 192.168.1.124 (first entry found in resolv.conf)

    debug level 1

    Listening on port : 7001

    root@K:~# whois 107.178.195.142

    root@K:~# apt-get install squid

    squid squidclient squid-deb-proxy squidguard-doc squidtaild

    squid3 squid-common squid-deb-proxy-client squid-langpack squidview

    squid-cql squid-dbg squidguard squid-purge

    root@K:~# apt-get install squid3

    DNS协议隧道—–dns2tcp

    资源访问

    - 本地SSH资源                                    
    
    - 远程http资源                                   
    
    - http资源(squid)                              
    
      apt-get install squid3                          
    
    - http代理                                       
    
    - 隧道嵌套                                       
    
      基于SSH资源将SSH动态端口转发隧道嵌套与DNS隧道中
    
      ssh -CFNg root@127.0.0.1 -p 2222 -D 7001        
    
      XP IE、Firefox使用嵌套的Socks代理上网           
    

    抓包分析DNS隧道通信

    yuanfh@Bodhi:~$ netstat -pantu | grep 7001

    (Not all processes could be identified, non-owned process info

    will not be shown, you would have to be root to see it all.)

    tcp 0 0 127.0.0.1:7001 0.0.0.0:* LISTEN 2588/dns2tcpc

    tcp 0 0 127.0.0.1:7001 127.0.0.1:55888 CLOSE_WAIT 2588/dns2tcpc

    tcp 0 0 127.0.0.1:7001 127.0.0.1:55716 CLOSE_WAIT 2588/dns2tcpc

    tcp 0 0 127.0.0.1:7001 127.0.0.1:55724 CLOSE_WAIT 2588/dns2tcpc

    tcp 0 0 127.0.0.1:55714 127.0.0.1:7001 TIME_WAIT -

    tcp 0 0 127.0.0.1:7001 127.0.0.1:55768 CLOSE_WAIT 2588/dns2tcpc

    tcp 0 0 127.0.0.1:7001 127.0.0.1:55766 CLOSE_WAIT 2588/dns2tcpc

    tcp 0 0 127.0.0.1:7001 127.0.0.1:55718 CLOSE_WAIT 2588/dns2tcpc

    tcp 0 0 127.0.0.1:7001 127.0.0.1:55720 CLOSE_WAIT 2588/dns2tcpc

    tcp 0 0 127.0.0.1:7001 127.0.0.1:55712 CLOSE_WAIT 2588/dns2tcpc

    tcp 0 0 127.0.0.1:7001 127.0.0.1:55722 CLOSE_WAIT 2588/dns2tcpc

    tcp 0 0 127.0.0.1:55730 127.0.0.1:7001 TIME_WAIT -

    tcp 0 0 127.0.0.1:55888 127.0.0.1:7001 FIN_WAIT2 -

    tcp 0 0 127.0.0.1:7001 127.0.0.1:55770 CLOSE_WAIT 2588/dns2tcpc

    tcp 0 0 127.0.0.1:7001 127.0.0.1:55736 CLOSE_WAIT 2588/dns2tcpc

    yuanfh@Bodhi:~$ dns2tcpc -k pass123 -d 1 -l 2222 -r ssh -z test.lab.com

    No DNS given, using 192.168.1.124 (first entry found in resolv.conf)

    debug level 1

    Listening on port : 2222

    yuanfh@Bodhi:~$ ssh -CFNg root@127.0.0.1 -p 2222 -D 7002

    root@127.0.0.1 password:

    yuanfh@Bodhi:~$ netstat -pantu | grep 7002

    (Not all processes could be indentified, non-owned process info

    will not be shown, you would have to be root to se it all.)

    tcp 0 0 127.0.0.1:7002 0.0.0.0:* LISTEN 2692/sshd

    tcp6 0 0 ::1:7002 :::* LISTEN 2692/sshd
    这里写图片描述

    展开全文
  • DNS协议详解

    万次阅读 2018-01-05 15:46:08
    1、 什么是DNS协议?<1>DNS协议就是用来将域名解析到IP地址的一种协议,当然,也可以将IP地址转换为域名的一种协议。 <2>DNS协议基于UDP和TCP协议的,端口号53,用户到服务器采用UDP,DNS服务器通信采用TCP 大型...

    1、 什么是DNS协议?

    <1>DNS协议就是用来将域名解析到IP地址的一种协议,当然,也可以将IP地址转换为域名的一种协议。
    <2>DNS协议基于UDP和TCP协议的,端口号53,用户到服务器采用UDP,DNS服务器通信采用TCP
    <3>大型运营商、互联网机构等会向公众提供免费的DNS服务,例如,谷歌的8.8.8.8 8.8.4.4 阿里巴巴223.5.5.5 223.6.6.6
    <4>如果DNS服务器down掉了,那么你只能通过IP地址来访问服务了。
    <5>我们从以下几部分来理解DNS协议:

    • 域名结构
    • 域名服务器
    • 域名查询

    2、域名结构

    像Linux目录结构一样,现代因特网采用层次树状结构的命名方法,任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,该名字称为域名。

    例如:xxx.yyy.zzz.com
    从右边的com是顶级域名,到左依次是:二级域名,三级域名,四级域名

    域名的分级:域名可以划分为各个子域,子域还可以继续划分为子域的子域,这样就形成了顶级域、二级域、三级域等。

    其中顶级域名分为:国家顶级域名、通用顶级域名、反向域名。

        国家顶级域名:中国:cn, 美国:us,英国uk...
        通用顶级域名:com 公司企业  edu教育机构 gov政府部门  int国际组织  mil军事部门  net网络 org非盈利组织...
        反向域名:只有一个arpa,用于PTR查询(IP地址转换为域名) 。 
    

    3、域名服务器

    域名服务器主要分为:根域名服务器、顶级域名服务器、权限域名服务器、本地域名服务器。

    先举个例子来看一下各个服务器之间的联系:

    当一个应用要通过DNS来查询某个主机名,比如www.google.com的ip时,粗略地说,查询过程是这样的:它先与根服务器之一联系,根服务器根据顶级域名com,会响应命名空间为com的顶级域服务器的ip;于是该应用接着向com顶级域服务器发出请求,com顶级域服务器会响应命名空间为google.com的权威DNS服务器的ip地址;最后该应用将请求命名空间为google.com的权威DNS服务器,该权威DNS服务器会响应主机名为www.google.com的ip。
    
    实际上,除了上图层次结构中所展示的DNS外,还有一类与我们接触更为密切的DNS服务器,它们是本地DNS服务器,我们经常在电脑上配置的DNS服务器通常就是此类。它们一般由某公司,某大学,或某居民区提供,比如Google提供的DNS服务器8.8.8.8;比如常被人诟病的114.114.114.114等。
    
    • 根域名服务器
      根服务器主要用来管理互联网的主目录。
      所有根服务器均由美国政府授权的互联网域名与号码分配机构ICANN统一管理,负责全球互联网域名根服务器、域名体系和IP地址等的管理。
      全球共有13台根服务器。1个为根服务器架构主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。 据说,在主根服务器系统上还有一个更高级的、隐藏着的母服务器,当然也在美国,而全世界所有的顶级域名都是由这台母服务器来确定的。
      中国还没有自己的根服务器。都是根服务器的镜像(5个)

    • 顶级域名服务器
      负责管理所有的二级域名

    • 权限域名服务器
      负责管理一个区。当一个权限域名服务器还不能给出最后的查询回答时,就会告诉查询请求的DNS客户进程,下一步应当找哪一个权限域名服务器;

    • 本地域名服务器
      可以看成是默认域名服务器,DNS客户进程收到主机发送过来的域名后,就会最初向该域名服务器发送查询请求

    题外话:
    美国控制了域名解析的根服务器,也就控制了相应的所有域名和IP地址,这对于其他国家来说显然存在着致命的危险。如果哪一天美国屏蔽某国家的域名,那么它们的IP地址将无法解析出来,这些域名所指向的网站就会从互联网中消失了。由此联想,如果“.cn”从域名系统中删除,甚至将分配给中国境内使用IP地址取消的话,中国将成为国际主干网的看客。
    所以,从国家互联网安全的角度来看,我们是需要一个根服务器的。抛开中国政府屏蔽国外网站不说,为了我们整个国家的国防安全、在国际互联网的话语权,中国互联网络信息中心CNNIC已经努力向ICANN申请争取一台根服务器,使中国的网站都能有所保障。

    4、域名的查询

    查询方式分为递归查询和迭代查询,在理解递归查询与迭代查询之前,必须要弄明白“递归”与“迭代”的区别。我们从C++的角度来理解递归与迭代的区别,所谓递归就是函数自己调用自己,而迭代则是函数内部循环地调用他人。下面,我们举出递归与迭代的C++程序:
    递归程序:f(n)=f(n-1)+n,f(1)=1,我们用C++递归实现如下

    #include<iostream>  
    int f(int n)  
    {  
        if(n==1)  
            return 1;  
        else  
            return f(n-1)+n;//递归过程
    }  

    迭代程序:f(n)=1+2+3+…+n,我们用C++迭代实现如下

    #include<iostream>  
    int f(int n)  
    {  
        int i,sum=0;  
        for(i=1;i<=n;i++)  
        {  
            sum+=i;//迭代过程、  
        }  
        return sum;  
    }  

    递归查询就好比是我问A同学一个问题,他不知道,于是他就去问B同学,如果B知道,就告诉A,A再告诉我结果,如果B也不知道,那么就继续向C问,知道A知道答案,告诉我,最终也是A和我直接交互。
    如这一张图:

    迭代查询就好比我问A同学问题,A不知道,但是A告诉我,B知道,你去问B吧,于是B告诉了我答案,这就是与上面递归的区别。如下图所示:

    查询过程中,递归查询和迭代查询可能会都使用,客户和服务器之间采用递归查询,服务器之间采用迭代查询,可能会多次迭代。
    迭代查询的逻辑顺序按照域名系统的域名结构中的层次去查询
    如下所示:

    5、总结一下DNS查询过程

    1)当客户机提出查询请求时,首先在本地计算机的缓存中查找,如果在本地无法查询信息,则将查询请求发给DNS服务器
    2)首先客户机将域名查询请求发送到本地DNS服务器,当本地DNS服务器接到查询后,首先在该服务器管理的区域的记录中查找,如果找到该记录,则进行此记录进行解析,如果没有区域信息可以满足查询要求,服务器在本地缓存中查找
    3) 如果本地服务器不能在本地找到客户机查询的信息,将客户机请求发送到根域名DNS服务器
    4) 根域名服务器负责解析客户机请求的根域名部分,它将包含下一级域名信息的DNS服务器地址地址,返回给客户机的DNS服务器地址
    5) 客户机的DNS服务器利用根域名服务器解析的地址访问下一级DNS服务器,得到再下一级域名的DNS服务器地址
    6) 按照上述递归方法逐级接近查询目标,最后在有目标域名的DNS服务器上找到相应IP地址信息
    7) 客户机的本地DNS服务器将递归查询结构返回客户机
    8) 客户机利用从本地DNS服务器查询得到的IP访问目标主机,就完成了一个解析过程
    9) 同时客户机本地DNS服务器更新其缓存表,客户机也更新期缓存表,方便以后查询
    如下图所示:

    展开全文
  • DNS协议解析

    千次阅读 2017-09-15 16:10:46
    下面关于DNS说法正确的是() A、DNS的作用是域名和IP地址的相互映射 B、DNS协议运行在UDP协议之上 C、DNS协议端口号为53 D、DNS的默认缓存时间为1小时 解析: A. DNS(Domain Name Sy
  • DNS协议概述

    2019-11-30 21:02:41
    其实在我们看来,DNS协议像是一个黑盒子,请求传过去对应的域名,就会返回回来域名解析出来的IP地址 基本实现 1.0版本 因为DNS协议主要的工作是域名到IP的一个映射,所以我们现在假设一下,只有一台DNS...
  • 文章目录DNS协议DNS提供的服务DNS简介服务DNS工作原理概述DNS服务器分类根DNS服务器顶级域(TLD)DNS服务器权威DNS服务器本地DNS服务器一趟DNS查询过程解析递归查询迭代查询实际中遵循的查询模式DNS缓存DNS记录和...
  • DNS协议模拟实现

    千次阅读 2018-08-10 16:48:04
    二、DNS协议抓包分析 1、DNS解析过程 2、DNS协议报文结构 3、DNS查询报文中每个查询问题的格式 4、DNS响应报文中的资源记录格式 5、据包DNS查询(DNS query) 6、数据包 DNS 响应(DNS Response) 三、DNS...
  • DNS协议详解及报文格式分析

    万次阅读 多人点赞 2017-07-10 14:38:12
    DNS协议详解及报文格式分析 Posted on 2017-06-18 by Jocent — No Comments ↓ 目录 一. DNS协议理论知识 1.1. 域名结构1.2. 域名服务器1.3. 域名解析过程 二. DNS协议报文格式 2.1 头部2.2 ...
  • 详解DNS协议

    千次阅读 2018-05-27 23:06:22
    DNS协议 TCP/IP中使用IP地址和端口号来确定网络上某一台主机上的某一个程序,但是IP地址是点分十进制,不方便记忆。因此,就出现了域名,如:www.baidu.com。 实际上,人们将主机名叫做域名,其原因是Internet使用...
  • gopacket解析DNS协议

    2019-08-22 16:25:11
    通过gopacket解析DNS请求协议。...读取19777数据包DNS协议的TransactionID package main import ( "fmt" "time" "github.com/google/gopacket/layers" "github.com/google/gopacket" "github.com/googl...
  • 应用层协议 --- DNS协议

    千次阅读 2018-10-26 08:49:52
     DNS协议基于UDP,使用端口号53。由数字组成的 IP 地址很难记忆,所以我们上网使用网站 IP 地址的别名——域名。实际使用中,域名与 IP 地址是对应的,这种对应关系保存在DNS 服务器之中。  在浏览器中输入一个...
  • 一文搞懂DNS协议

    多人点赞 2021-05-09 12:24:28
    更多文章请关注我的个人公众号:极客熊猫 欢迎扫码关注: 什么是DNS? DNS是Domain Name System的首字母缩写,即域名系统。 网络上的主机有两种标识方法: ...DNS协议采用客户端/服务器模型,DNS协
  • 【Linxu】ARP协议、DNS协议和ICMP协议

    千次阅读 2018-07-04 16:31:27
    这篇文章旨介绍常用的三种协议:分别是ARP协议,DNS协议和ICMP协议 P协议 (1)ARP是地址解析协议,ARP不是一个单纯的数据链路层协议,而是一个介于数据链路层和网络层之间的协议。 (2)ARP协议的作用: 【1】...
  • 域名解析的DNS协议

    千次阅读 2018-05-03 11:09:23
    域名解析的DNS协议 DNS协议也是一种应用层协议。因为用户通常使用主机名或域名来访问对方的计算机,而不是通过IP地址问(比如说访问www.baidu.com就是通过域名) 背景最初一开始使用hosts文件来描述主机名和IP地址...
  • DNS协议

    千次阅读 2013-12-20 22:32:16
    DNS协议是个很重要的协议,运行在 UDP 53端口,是web应用不可或缺的部分。 这里主要介绍DNS的请求包和响应包的格式。 DNS请求包 请求包相对来说简单点,首先有一个固定大小为12字节的头部,接着是查询的问题。 ...
  • DNS协议抓包分析

    千次阅读 2019-03-02 14:40:30
    只需通过浏览器访问一个网页,然后在Wireshark里过滤DNS协议。 解析解析 &nbsp;&nbsp;&nbsp;&nbsp;DNS有两种报文,分别是查询报文和回答报文。它们的格式相同。 查询数据包 Domain Name System ...
  • dns协议及帧格式

    千次阅读 2017-09-11 14:32:21
    DNS(Domain Name System,域名系统),...DNS协议运行在UDP协议之上,使用端口号53。协议格式: ID(2字节):response 报文和request报文 ID一致 Flags(2字节): QR(1bit):查询/响应的标志位,1为响应,0为查询
  • DNS协议格式解析及说明。”DNS即域名系统(Domain Name System),是用来将域名与IP地址建立映射的协议,通过DNS协议,可以方便记忆。DNS可基于...
  • nDPI的DNS协议解析

    千次阅读 2015-06-25 16:45:56
    nDPI的DNS协议解析1. 说明把nDpi的DNS协议解析部分拿出来看看,写了一些注释。使用的是nDpi的1.6版本,该版本下的文件结构比较简单,协议解析的代码都在 src/lib/protocols目录下。dns的解析代码自然就是dns.c了。...
  • consul通过DNS协议查找服务

    千次阅读 2020-03-26 11:15:05
    consul通过DNS协议查找服务 1、centos默认没有dig命令,dig命令属于bind-utils工具包,安装这个包之后就可以使用dig命令了。 yum -y install bind-utils 2、使用DNS API来获取A记录ip地址 对于DNS API,服务的DNS...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 217,630
精华内容 87,052
关键字:

dns协议