精华内容
下载资源
问答
  • DNS协议概述

    2019-11-30 21:02:41
    基本介绍 DNS是应用层协议,基于传输层UDP协议,端口号为53 提供基本功能有: ...因为DNS协议主要的工作是域名到IP一个映射,所以我们现在假设一下,只有一台DNS服务器,里面包含了所有域名到IP...
    1. 基本介绍
      DNS是应用层协议,基于传输层的UDP协议,端口号为53
      提供的基本功能有:
      1. 主机到IP的映射
      2. 主机别名
      3. 邮件别名
      4. 负载均衡
        其实在我们看来,DNS协议像是一个黑盒子,请求传过去对应的域名,就会返回回来域名解析出来的IP地址

    在这里插入图片描述

    1. 基本实现

    1.0版本

    因为DNS协议主要的工作是域名到IP的一个映射,所以我们现在假设一下,只有一台DNS服务器,里面包含了所有的域名到IP的一个映射,用户的请求到会发到这个DNS服务器。
    优点: 设计简单,非常具有吸引力
    缺点: 不适合当今的因特网,因为因特网的拥有数量巨大的主机数量,而且这种集中式的设计的问题包括:

    1. 单点故障:如果该DNS服务器崩溃,整个互联网都会随之瘫痪
    2. 通信容量:这台DNS服务器处理的请求可能有上亿个
    3. 远距离的集中式数据库:如果这台DNS服务器在北极,请求从南极发来,必须跨越一个地球才能处理,有比较长的时延
    4. 维护:数据库大,需要频繁更新

    2.0版本

    分布式、层次数据库
    因为一台DNS服务器根本满足不了实际的需求,那么我们就多布置几台服务器,但是如何去布置呢?按照什么形式布置?
    为了更好处理扩展,需要大量的DNS服务器,他们以层次方式阻止,并且分布到世界各地,没有一台DNS服务器拥有因特网上所有的主机的映射。
    总的来说,有三种DNS服务器:

    1. 根DNS服务器
    2. 顶级域DNS服务器
    3. 权威DNS服务器

    在这里插入图片描述

    其实还有一个本地DNS服务器,由ISP进行布置,一般的,学校、大型公司都会布置一台本地DNS服务器,一般主机都是将请求发往本地DNS服务器,再由本地DNS服务器去查询


    在这里插入图片描述
    由图我们可以看到,获得一个主机到IP映射需要四次查询报文,四份回到报文,这样是及其复杂而且有长时延的,所有

    3.0版本

    DNS缓存
    主要目的:改善时延性能并能减少在互联网上到处传输DNS报文数量
    缓存就是:在一个请求中,当某DNS服务器接收到一个DNS回答,就能将映射缓存到本地存储器中
    但是这个缓存不能一直存在本地存储器中,要不然慢慢的,某台服务器就会拥有所有的映射,就会出现版本1.0的问题,所以,一般DNS服务器在一段时间后(一般是两天)将缓存信息丢弃

    经过了三个版本的迭代更新,就出现了现在我们所用到的一个体系
    我们就假设一下,在自己的电脑里面请求百度网页需要经历的过程:

    1. 主机访问www.baidu.com,这个请求会被发送到本地DNS服务器(①)
    2. 本地DNS服务器就回去缓存中找,有没有有关www.mail.baidu.com的缓存或者com的缓存,发现没有之后
    3. 请求根DNS服务器(②),说我需要顶级域名为com的DNS服务器的IP,然后根DNS服务器返回com的DNS服务器的IP为111.111.111(🌂)
    4. 本地服务器拿到这个IP之后,就去请求com DNS服务器(④),说:我需要要baidu.com的IP地址,com DNS服务器就会返回baidu.com的IP地址为222.222.222(🌫)
    5. 拿到www.baidu.com之后,就要去访问这个域名下的mail,本地DNS服务器就会发一个请求给222.222.222(⑥),说我需要mail的IP地址,那么baidu.com服务器就会返回333.333.333(⑦)
    6. 因为本地DNS服务器已经拿到了mail.baidu.com的IP地址,就会返回给主机(⑧),这样主机就可以直接访问444.444.444的首页了,这个时候本地DNS服务器还会缓存根域名、com的域名、www.baidu.com的域名www.mail.baidu.com的域名,保存到本地,这样,下次别人需要访问百度就可以直接返回IP了
    展开全文
  • DNS协议详解

    2019-01-28 15:03:00
    DNS(Domain Name System)域名系统,主要实现的功能是将域名转换成ip地址一个服务。它是由一个分层的DNS服务器实现分布式数据库,同时。他也是一个使得主机能够查询分布式数据库应用层协议DNS服务器通常是一个...

    DNS协议详解

    简介

    DNS(Domain Name System)域名系统,主要实现的功能是将域名转换成ip地址的一个服务。它是由一个分层DNS服务器实现的分布式数据库,同时。他也是一个使得主机能够查询分布式数据库的应用层协议。DNS服务器通常是一个运行BIND(Berkeley Internet Name Domain)软件的UNIX机器。DNS协议运行在UDP之上,使用53号端口。 DNS是一个应用层协议,其原因在于:

    • 使用客户端-服务器模式运行在通信的端系统之间。
    • 在通信的端系统之间通过下面的端到端运输协议来传送DNS报文。

    DNS的分层

    Host文件

    在讲DNS的分层之前,先说一下host文件,以window系统为例,在目录C:\Windows\System32\drivers\etc下有一个host文件,这个文件中记录了一个ip和域名的字典,当在浏览器中访问域名时,系统会默认先访问host文件查看是否存在访问域名的映射关系,如果不存在时,才将请求的域名发送给DNS系统进行解析获取对应的ip地址。

    DNS分层

    DNS的分层结构如下所示:

    graph TB A[根DNS服务器]-->B[com DNS服务器] A-->C[org DNS服务器] A-->D[edu DNS服务器] B-->E[yahoo.com DNS服务器] B-->F[amazon.com DNS服务器] A-->J[...] A-->K[...] C-->G[pbs.org DNS服务器] D-->H[poly.edu DNS服务器] D-->I[umass.edu DNS服务器] E-->L[...] E-->M[...]

    为了支持扩展性,DNS使用了大量的DNS服务器分布部署在各地,在各级DNS服务器子级又可以继续扩展出本地DNS服务器。这些DNS服务器大致可以分为三类:

    • 根DNS服务器
    • 顶级域(Top-lecel Domain,TLD)DNS服务器
    • 权威DNS服务器

    DNS缓存

    DNS的缓存是为了改善DNS解析的延迟性问题,同时减少因特网上的DNS报文数量。有了缓存之后,DNS服务器可以记住通过自己所解析的域名地址,并将他们缓存起来(缓存不是永久有效的,缓存时会有一个缓存时间设置TTL),同时,本地服务器也可以缓存TLD服务器的ip地址,从而在查询解析时绕过根DNS服务器,直接访问TLD服务器。

    DNS记录和报文

    资源记录

    共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(Resource Record, RR),RR提供了主机名到IP地址的映射。每个DNS的响应报文都会包含一条或多条RR.资源记录是一个包含了下列字段的4元数组:
    (Name,Value.Type,TTL)
    其详细含义为:

    • TTL记录了生存时间,即缓存中资源记录的过期时间。
    • Type=A:此时Name是主机名,Value是主机名对应的Ip地址。
    • Type=NS:Name是个域(此处是类似foo.com的域不是域名),Value是一个DNS服务器的主机名,这个DNS服务器可以获取到(直接或者间接)Name域中主机IP地址。
    • Type=CNAME:Value是别名为Name的主机对应的规范主机名。即Name为主机别名和Value主机实际名称的映射
    • Type=MX:Value是别名为Name的邮件服务器的规范主机名

    范例
    假如一台edu TLD服务器不是主机gaia.cs.umass.edu的权威DNS服务器,则该服务器将包含一条包括主机cs.umass.edu的域记录。如(umass.edu,dns.umass.edu,NS);该edu TLD服务器还将包含一条类型A的记录,如(dns.umass.edu,128.119.40.111,A),该记录将名字dns.umass.edu映射为一个IP地址。

    DNS报文

    报文格式如下所示

    标识符 标志
    问题数 回答RR数
    权威RR数 附加RR数
    问题(问题的变量数)
    回答(资源记录的变量数)
    权威(资源记录的变量数)
    附加信息(资源记录的变量数)

    详细解释:

    • 前三行共12个字节是首部区域
      • 第一个字段(标识符)是一个16比特的数,用于标识该查询,这个标识符会被复制到对查询的回答报文中,作为请求报文的唯一标识,16个比特中有1比特是标识是查询报文(0)还是回答报文(1)
    • 问题区域包含着正在进行的查询信息。该区域包括:
      • 名字字段,表示正在被查询的主机名字。
      • 类型字段,表示有关改名字的正被询问的问题类型,例如类型A:主机地址是与一个名字相关联;类型MX表示主机地址域邮箱服务器相关联。
    • 回答区域包含了对最初请求的名字的资源记录。回答报文的回答区域中可以包含多条RR,因此一个主机名能够有多个IP地址。
    • 权威区域包含了其他权威服务器的记录
    • 附加区域包含了其他有帮助的记录。

    DNS数据库中插入记录

    DNS数据库中插入记录,需要向专门的注册登记机构,注册域名,由注册登记机构验证域名的唯一性。想注册登记机构提供域名是还需要向该机构提供你的基本和辅助权威DNS服务器的名字和IP地址。然后注册登记机构会将以下两条资源记录插入该DNS系统中(以注册networkutopia.com为例)

    • (networkutopoa.com,dns1.networkutopia.com,NS)
    • (dns1.netwworkutopia.com,212.212.212.1,A)
      之后其他用户就可以访问networkupopia.com这个域名,DNS请求会到达dns1这个DNS服务器解析ip地址。

    DNS通信流程

    假设本地机器访问域名networkutopoa.com其详细的协议通讯过程如下:

    1. 浏览器地址栏中输入networkutopoa.com
    2. 浏览器从url地址中获取域名networkutopoa.com,然后将域名传递给本机的DNS应用的客户端。
    3. DNS客户端向本地DNS服务器发送一个包含域名networkutopoa.com)的请求。
    4. 本地DNS服务器先查看本地缓存有没有要查询的域名,如果没有在查看本地缓存中的TLD服务器有没有与域名匹配的服务器地址,如果有直接向TLD服务器发送请求。如果没有则向根服务器请求TLD服务器地址。
    5. TLD服务器直接向本地DNS服务器发送回答。回答中包含了域名对应的ip地址。
    6. 浏览器收到ip地址之后,将请求发送到对应的ip地址上。

    递归查找,迭代查找

    DNS解析域名时主要有两种查询方式:

    • 递归查询
    • 迭代查询

    迭代查询算法

    迭代查询的核心时所有的请求都是直接返回给本地的DNS服务器,然后本地DNS服务器去对应的权威服务器等请求解析地址。整个过程中,只有请求主机到本地DNS服务器的查询时递归的,其余都是迭代的。

    graph TB A[请求主机]-->|1| B[本地DNS服务器] B-->|8|A B-->|2|C[根DNS服务器] C-->|3|B B-->|4|D[TLD DNS服务器] D-->|5|B B-->|6|E[权威DNS服务器] E-->|7|B

    递归查询算法

    递归的查询算法所有的查询都是递归的,详细流程如下所示。

    graph TB A[请求主机]-->|1| B[本地DNS服务器] B-->|8|A B-->|2|C[根DNS服务器] C-->|7|B C-->|3|D[TLD DNS服务器] D-->|6|C D-->|4|E[权威DNS服务器] E-->|5|D

    DDoS

    分布式拒绝服务(DDos)带宽洪范攻击,是一种常见的DNS攻击方式,其主要途径是向每个DNS根/权威服务器发送大量分组,是的大多数合法的DNS请求得不到答案,

    DNS提供的其他服务

    DNS除了完成将域名翻译成ip的任务外,还提供了以下辅助功能

    • 主机别名(host aliasing):DNS除了维护域名和Ip的关系外,还可以维护一套域名和别名的映射关系。比如,域名为www.relay1.west-coast.enterprise.com的主机,我们可以给他起一个别名叫,www.enterprise.com。当我们访问www.enterprise.com的时候,DNS服务器可以自动的跳转到域名www.relay1.west-coast.enterprise.com对应的地址上。
    • 负载分配(load distribution):加入一个域名后面对应多个ip地址。当请求DNS客户端的请求过来之后,DNS服务器可以按照一定的策略对多个ip实行负载分配

    TIP

    Windows环境下清空DNS缓存的命令是 ipconfig/flushdns 也可以通过重启DNS client 和 DHCP client 两项服务清空DNS缓存 Windows环境下可以用命令 ipconfig /displaydns 来查看DNS缓存的内容 nslookup 命令可以用来查看域名对应的IP地址,比如 nslookup jocent.me

    参考资料

    《计算机网络自顶向下方法》

    转载于:https://www.cnblogs.com/liyong-blackStone/p/10330188.html

    展开全文
  • DNS协议

    千次阅读 2007-12-07 23:29:00
    主要的功能就是将我们容易记忆网址域名(Domain Name)与不容易记忆IP地址作自动解析互换。DNS 查询过程接下来我们要谈一谈,那么 DNS (1)架构是怎样? (2)查询原理是怎样?总是要先知道架构才能知道如何...

      DNS简单地说,就是Domain Name System(域名系统)。在一个以TCP/IP协议为主的网络环境中,DNS是一个非常重要而且常用的系统。其主要的功能就是将我们容易记忆的网址域名(Domain Name)与不容易记忆的IP地址作自动解析互换。

    DNS 的查询过程

    接下来我们要谈一谈,那么 DNS 的 (1)架构是怎样? (2)查询原理是怎样?总是要先知道架构才能知道如何查询的吶!所以底下我们先来介绍一下整体的架构。

    · DNS 的架构:




      上面就是一个简单的 DNS 阶层架构啰,最上方一定是 . 这个 root 的 DNS 主机,他底下管理的就只有 com, edu, gov, mil, org 与以国家为分类的第二层的主机名称了!例如台湾地区最上层的领域名称是以 .tw 为开头,管理这个领域名称的这部机器的 IP 是在台湾,但是他的记录则是记录在 . (root)那部机器里面的!还有其它的国家的最上层如 .cn 指的是大陆,.de 指的是德国一样!那么每个国家之下记录的主要的下层有哪些领域呢?呵呵!主要就是有这六大类: 



      其实最早之前在 . (root)之下只有这六大类的 domain name ,但是网络成长的速度太快了,因此后来又多出这些以国码来分的 domain name ,如此一来,在该国家之内,只要向该国家申请 domain name 即可,不需要再到最上层去申请啰!也因此,在这些国码之下,还是有这六大类的 domain name 为主的哩!当然啦,在目前,由于网际网络持续的发烧,说实在的 domain name 实在是有点不太够用,所以又有相当多的领域名称被设计出来,例如本小站的 .idv.tw 的个人网站啦!

      好了,再强调一次, DNS 系统是以所谓的阶层式的管理,所以,请注意喔!那个 .tw 只记录底下那一层的这六个主要的 domain 的主机而已!至于例如 edu.tw 底下还有个 ncku.edu.tw 这部机器,那就直接授权交给 edu.tw 那部机器去管理了!也就是说『每个上一层的 DNS 主机,所记录的信息,其实只有其下一层的主机名称而已!』至于再下一层,则直接『授权』给下层的某部主机来管理啰!呵呵!所以您就应该会知道 DNS 到底是如何管理的吧! ^_^ 会这样设定的原因不是没有道理的!这样设计的好处就是:每部机器管理的只有下一层的 hostname 对应 IP 而已,所以减少了管理上的困扰!而下层 Client 端如果有问题,只要询问上一层的 DNS server 即可!不需要跨越上层,除错上面也会比较简单呢!

    · DNS 的搜寻流程:

      刚刚说过 DNS 是以类似『树状目录』的型态来进行名称的管理的!所以每一部 DNS 主机都『仅管理下一层 DNS 主机的名称转译』而已,至于下层的下层,则『授权』给下层的 DNS 主机来管理啦!这样说好象很绕口,好吧!我们就以下图来说一说原理啰:



      首先,当你在网址列输入 http://aerosol.ev.ncku.edu.tw 时,你的计算机就会依据 /etc/resolv.conf 所提供的 DNS 的 IP 去进行联机查询,好了,由于目前最常见的 DNS 主机就属 Hinet 的 168.95.1.1 这个 DNS 了,所以我们就拿他来做例子吧!嗯!这个时候, hinet 的这部主机会这样工作:
     
    1. 先查看本身有没有纪录:刚刚说过啦,由于 DNS 是层阶式的架构,任何一部 DNS 都仅记录下一层里面的主机名称对应的 IP 而已,由于 hinet 并非学术网络里面的主机,所以自然也就没有办法直接提供给 client 端关于 aerosol.ev.ncku.edu.tw 这部机器的 IP 了,所以啦,一般而言,这个时候 168.95.1.1 就会向最顶层,也就是 . (root) 的主机查询 .tw 这部机器的地址;
     
    2. 向最顶层 ( root )查询:由于 168.95.1.1 没有纪录我们主机的 IP ,这个时候他就会向『最顶层』的 . (root) 这部主机来查询 . (root) 的下一层,也就是 .tw 这部机器的资料了!这个时候, . (root) 就会告诉 168.95.1.1 说『嘿!你要查 .tw 这个网域的管理者呀!?喝!我这里有 .tw 这个网域的管理的主机之 IP 信息,妳可以直接去找他!』;
     
    3. 向第二层查询:168.95.1.1 接着又到 .tw 去查询,而该部机器管理的又仅有 .edu.tw, .com.tw, gov.tw... 那几部主机,经过比对后发现我们要的是 .edu.tw 的网域,所以这个时候 .tw 又告诉 168.95.1.1 说:『你要去管理 .edu.tw 这个网域的主机那里查询,我有他的 IP !』;
     
    4. 向下层持续查询:好了,一步一步下来, .edu.tw 可以查到管理 .ncku.edu.tw 的主机 IP ; .ncku.edu.tw 可以查到管理 .ev.ncku.edu.tw 的主机 IP ,而最后我们 aerosol.ev.ncku.edu.tw 就可在管理 .ev.ncku.edu.tw 网域的那部主机的设定纪录当中查询到啦!
     
    5. 记录暂存内存:查到了 IP 之后,这部 168.95.1.1 的 DNS 机器总不会在下次有人查询 aerosol.ev.ncku.edu.tw 的时候再跑一次这样的流程吧!粉远粉累ㄋㄟ~而且也很耗系统的资源与网络的频宽,所以呢, 168.95.1.1 这个 DNS 很聪明的会先记录一份 aerosol.ev.ncku.edu.tw 对应 IP 的信息在自己的暂存内存当中,以方便下一次又有人对同一个主机名称的要求之查询!最后则将结果回报给 client 端!当然啦,那个记忆在 cache 当中的资料,其实是有时间性的,当过了 DNS 设定记忆的时间(通常可能是 24 小时),那么该记录就会被释放喔!


      由这样的分层负责你发现了什么?嗯!那就是:
     
    o 当一个『合法』的 DNS 主机里面的设定修改了之后,来自世界各地任何一个 DNS 的要求,都会正确无误的显示正确的主机名称对应 IP 的信息,因为他们会一层一层的寻找下来,所以,要找你的主机名称对应的 IP 就一定得要透过你的上层 DNS 主机的纪录才行!所以只要你的主机名字是经过上层『合法的 DNS』主机的设定的,那么就可以在 Internet 上面被查询到啦!呵呵!很简单维护吧,机动性也很高。

    Windows Server 2003下DNS架设攻略

      
      一、 环境假设:
      
      假设我们要建立一台应用于企业以下情况的主域名服务器
      
      企业IP地址网段为:192.168.0.1~192.168.0.254
      主域服务器IP地址为:192.168.0.1
      主机名为:dns.firstserver.com
      等待解析的服务有:
      
      www.firstserver.com (IP地址指定为192.168.0.2) ----Web服务器
      Mail.firstserver.com (IP地址指定为192.168.0.3) ---E-Mai
      Ftp.firstserver.com(IP地址指定为192.168.0.4)---FTP服务器
      
      二、 正向域名解析服务的实现。
      
      Windows2003默认已安装DNS服务,依次选择“开始”-“程序”-“管理工具”-“DNS”打开。
      
      一般我们就分别创建正向和反向查找区域,因为DNS不光是域名到IP的解析(正向查找),也包括IP到域名(反向查找)。
      
      1. 建立“firstserver.com”主区域名。
      在本机服务器名上点右键,选择“新建区域”,打开向导窗口后点下一步;在“区域类型”窗口里选择“主要区域”;再接着勾选“正向查找区域”点下一步进入如图1所示的“区域名称”窗口,此步是要输入欲解析的区域名,即www后面部分。
      

     

      接着会提示你创建区域文件,我们按其默认文件名点下一步;在“动态更新”窗口中,考虑到此DNS服务的安全性,一般按其默认“不允许动态更新”,当然如果已在服务端加装了硬件防火墙等安全措施,则可以选择“允许动态更新”;最后单击完成即可。
      
      2. 新建主机。
      
      在管理界面左框内右击刚才建立的区域名firstserver,选择“新建主机”;在如下图所示“新建主机”窗口的名称栏输入www,IP地址改为本文开头例中的WEB服务器地址192.168.0.2,单击“添加主机”返回管理界面,即可看到已成功地创建了主机地址记录“www.firstserver.com”。
      
     

      3. 其它相关服务地址记录的实现。
      
      除了WWW服务,本文开头例中还有FTP及Mail服务。有两种方法继续添加其它服务:
      方法一:在左边树形目录里右击刚建好的主域名firstserver.com,选择“新建别名(CNAME)”;如下图所示,在“别名”栏内输入mail、FTP等服务名;在目标主机的完全合格域名一栏输入www.firstserver.com即可。此方法意为其它相关服务与WWW服务共用192.168.0.2这个IP地址。
      
     

      方法二:即分别为每种服务建立不同的IP地址指向,本文开头例中也是这样。即依照建立WWW服务的步骤进行,再输入相对应的IP地址就行了。下图所示中,mail服务即用别名方式建立,FTP服务跟建立WWW服务一样采用“新建主机”而建。
      
     

      
      三、 反向查找的实现。
      
      即实现IP地址到域名的转换。基本建立步骤跟正向查找类似,在出现如下图所示窗口时,“网络ID”一栏是要输入欲建立反向查找的服务器网段,本例为192.168.0.X。其它步骤按前面所述进行后即可完成。在管理界面左边树形目录里,即可看到反向查找区域一栏已多了“0.168.192.in-addr.arpa.dns”的区域文件名。
      
     

      接着在此名称上点右键选“新建指针(PTR)”,在如下图所示窗口里,“主机IP号”就是IP地址的最后一位,如本例中的WWW服务IP地址最后一位为2;“主机名”一栏通过点击“浏览”选择在正向查找区域中建立的主机记录“www.firstsever.com”,点确定即可。通过反向区域名的建立,简单的讲在浏览器里输入192.168.0.2也可到达www.firstsever.com。
      

      最后提示:请大家记住,DNS服务器只提供域名和IP地址的映射工作,而那个域名究竟用来做什么,是由其对应的IP地址所绑定的相关服务器(如FTP、E-mail等)来决定的。比如我们在本机已安装上例中的E-mail服务器并指定了其IP地址指向“192.168.0.3”,如果我们在DNS服务器中一同将其它相关服务的域名如ftp.firstsever.com等都指向此IP地址,即是说我们不管是用此IP地址或此三个域名中的任何一个都可以访问到这个E-mail服务器!
      
      另外,上文讲的都是建立在局域网中的DNS过程。而如果我们要建立互联网上域名的DNS映射记录的话,在DNS服务器中配置的所有域名都要是在internet中经过注册的合法域名,且要有一个固定的公网IP地址。只要满足这两个条件,其它步骤就跟在局域网的配置一样了。  
    展开全文
  • 计算机网络—DNS协议

    2018-09-04 12:31:51
    DNS协议 应用层协议 主要内容 功能 将机器域名转换成IP地址。因为IP难以记忆使用域名会非常容易记忆。 DNS是一套分布式域名服务系统,每个DNS服务器存放着大量机器名和IP地址映射,并动态更新...

    写在前面

    DNS协议
    应用层协议

    主要内容

    功能

    将机器的域名转换成IP地址。因为IP难以记忆使用域名会非常容易记忆。
    DNS是一套分布式的域名服务系统,每个DNS服务器存放着大量的机器名和IP地址的映射,并动态更新。

    Linux在/etc/resolv.conf文件存放DNS服务器的IP地址

    使用host命令可以查询域名的IP

    DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类。但很少有人知道DNS分别在什么情况下使用这两种协议。

    如果用wireshark、sniffer或古老些的tcpdump抓包分析,会发现几乎所有的情况都是在使用UDP,使用TCP的情况非常罕见,神秘兮兮。

    其实当解析器发出一个request后,返回的response中的tc删节标志比特位被置1时,说明反馈报文因为超长而有删节。这是因为UDP的报文最大长度为512字节。解析器发现后,将使用TCP重发request,TCP允许报文长度超过512字节。既然TCP能将data stream分成多个segment,它就能用更多的segment来传送任意长度的数据。
    另外一种情况是,当一个域的辅助域名服务器启动时,将从该域的主域名服务器primary DNS server执行区域传送。除此之外,辅域名服务器也会定时(一般时3小时)向PDS进行查询以便了解SOA的数据是否有变动。如有变动,也会执行一次区域传送。区域传送将使用TCP而不是UDP,因为传送的数据量比一个request或response多得多。
    DNS主要还是使用UDP,解析器还是服务端都必须自己处理重传和超时。DNS往往需要跨越广域网或互联网,分组丢失率和往返时间的不确定性要更大些,这对于DNS客户端来说是个考验,好的重传和超时检测就显得更重要了。

    TCP与UDP的区别:

    UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。 与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。相对于TCP协议,UDP协议的另外一个不同之处在于如何接收突发性的多个数据报。不同于TCP,UDP并不能确保数据的发送和接收顺序。事实上,UDP协议的这种乱序性基本上很少出现,通常只会在网络非常拥挤的情况下才有可能发生。

    DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议
    DNS的规范规定了2种类型的DNS服务器,一个叫主DNS服务器,一个叫辅助DNS服务器。在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。当一个辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息,这就叫做区传送(zone transfer)。

    为什么既使用TCP又使用UDP?

    首先了解一下TCP与UDP传送字节的长度限制:
    UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节。当DNS查询超过512字节时,协议的TC标志出现删除标志,这时则使用TCP发送。通常传统的UDP报文一般不会大于512字节

    区域传送时使用TCP,主要有一下两点考虑:
    1.辅域名服务器会定时(一般时3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,则会执行一次区域传送,进行数据同步。区域传送将使用TCP而不是UDP,因为数据同步传送的数据量比一个请求和应答的数据量要多得多
    2.TCP是一种可靠的连接,保证了数据的准确性

    域名解析时使用UDP协议:
    客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,响应更快。虽然从理论上说,客户端也可以指定向DNS服务器查询的时候使用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。
    DNS的包一个数据包就可以了没必要使用流。

    TCP,UDP 区别

    UDP 与 TCP 的主要区别在于 UDP 不一定提供可靠的数据传输。事实上,该协议不能保证数据准确无误地到达目的地。UDP 在许多方面非常有效。当某个程序的目标是尽快地传输尽可能多的信息时(其中任意给定数据的重要性相对较低),可使用 UDP。ICQ 短消息使用 UDP 协议发送消息。 许多程序将使用单独的TCP连接和单独的UDP连接。重要的状态信息随可靠的TCP连接发送,而主数据流通过UDP发送。

    TCP的目的是提供可靠的数据传输,并在相互进行通信的设备或服务之间保持一个虚拟连接。TCP在数据包接收无序、丢失或在交付期间被破坏时,负责数据恢复。它通过为其发送的每个数据包提供一个序号来完成此恢复。记住,较低的网络层会将每个数据包视为一个独立的单元,因此,数据包可以沿完全不同的路径发送,即使它们都是同一消息的组成部分。这种路由与网络层处理分段和重新组装数据包的方式非常相似,只是级别更高而已。
    为确保正确地接收数据,TCP要求在目标计算机成功收到数据时发回一个确认(即 ACK)。如果在某个时限内未收到相应的 ACK,将重新传送数据包。如果网络拥塞,这种重新传送将导致发送的数据包重复。但是,接收计算机可使用数据包的序号来确定它是否为重复数据包,并在必要时丢弃它

    TCP协议与UDP协议的区别
    TCP基于面向连接的协议,数据传输可靠,传输速度慢,适用于传输大量数据,可靠性要求高的场合。
    UDP协议面向非连接协议,数据传输不可靠,传输速度快,适用于一次只传送少量数据、对可靠性要求不高的应用环境。

    TCP协议与UDP协议支持的应用协议
    TCP支持的应用协议主要有:Telnet、FTP、SMTP等;
    UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。

    展开全文
  • DNS(Domain Name System)主要提供是将主机名转换为IP地址的功能。 它是一个由分层的DNS服务器(DNS server)实现分布式数据库,也是一个使得主机能够查询分布式数据库应用层协议DNS服务器通常是运行BIND...
  • 网络之DNS协议图解

    千次阅读 2018-10-03 10:39:44
    域名服务器是指保存有该网络中所有主机域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。 域名服务器为客户机/服务器模式中服务器方,它主要有两种形式:主服务器和转发服务器。 域名解析是将域名...
  • 网络层功能 网络层主要负责地址管理以及路由选择。在网络中我们从一个ip到另一个ip有很多条路可以走,而网络层则是帮我们规划我们传输数据最佳路线。 ip协议 协议字段   1、4位版本:当前的协议是IPV4还是IPV6,...
  • IP 协议相关技术 DNS 系统ARP 是一种解决地址问题的协议ICMP 判断 IP 包成功发送到目标地址,当 IP 包被丢失...这章主要探讨是 IP 相关技术,前面总结到 IP 功能是让目标主机收到数据包,但是就凭 IP 这一个协议...
  • DNS 1.概念 DNS是: 1) 一个有分层的DNS...主要功能 是将主机域名转换为其背后IP地址。 2.简单过程 举例说明,当某个用户主机上浏览器请求URL"www.kkshishabi.com/index.html",这个过程中DNS做了什么? ...
  • BIND (Berkeley Internet Name Domain)是Domain Name System (DNS) 协议的一个实现,提供了DNS主要功能的开放实现,包括 域名服务器 (named) DNS解析库函数 DNS服务器运行调试所用的工具 是一款开放源码...
  • DNS的那些事儿(1)

    2013-04-15 10:28:49
    神马是DNS?  DNS是域名系统(domain name system)缩写。它是:(1)、一个由分层的DNS服务器(DNS server)实现分布式数据库。(2)、一个允许主机查询分布式数据库应用层协议。...它主要的功能在于提供
  • 2003下DNS服务器安装

    2009-05-22 20:45:55
    首先了解一下什么是DNS? DNS简单地说,就是...其主要的功能就是将我们容易记忆网址域名(Domain Name)与不容易记忆IP地址作自动解析互换。 Windows 20003默认已安装DNS服务,依次选择“开始”-“程序”-...
  • ubuntu搭建DNS

    2014-03-13 13:51:00
    ubuntu搭建DNS一、bind简介: BIND是Domain Name System (DNS) 协议的一个实现,提供了DNS主要功能的开放实现,主要包括以下三种:*域名服务器*DNS解析库函数*DNS服务器运行调试所用的工具它是一款开放源码的DNS...
  • ubuntu12.10配置dns

    2013-05-07 16:51:58
    Ubuntu配置DNS服务器 (bind) BIND (Berkeley Internet Name Domain)是Domain Name System (DNS) 协议的一个实现,提供了DNS主要功能的开放实现,包括
  • 基本概念DNS(Domain Name System):域名系统,DNS其实就是一个分布式数据库系统,它主要的功能是提供主机名和IP地址之间转换功能。我们每天在浏览器上输入网址,比如www.jianshu.com,当你敲击回...
  • Ubuntu搭建DNS服务器

    千次阅读 2018-08-30 13:27:49
     BIND是Domain Name System (DNS协议的一个实现,提供了DNS主要功能的开放实现,主要包括以下三种: *域名服务器 *DNS解析库函数 *DNS服务器运行调试所用的工具 它是一款开放源码的DNS服务器软件,由美国...
  • DNS(Domain Name System 域名系统),属于TCP/IP应用层,主要功能是将域名解析成ip地址。 为什么要使用DNS? 因为是这样,如果你看过TCP/IP协议族ipv4报文,就知道计算机只认识ip地址,比如123.125.114.144...
  • ubuntu搭建dns服务器

    2013-08-14 12:09:00
    ubuntu搭建DNS一、bind简介:BIND是Domain Name System (DNS) 协议的一个实现,提供了DNS主要功能的开放实现,主要包括以下三种:*域名服务器*DNS解析库函数*DNS服务器运行调试所用的工具它是一款开放源码的DNS...
  • Panabit主要工作在应用层上,采用应用层协议识别通用技术DPI/DFI。 DPI:深度包检测 DFI:深度流检测 Panabit采用DPI对应用蹭协议特征进行识别判断,并采用独有“节点跟踪技术+加密协议深度识别引擎”来探测
  • DNS区域主从复制。。

    2017-11-09 18:52:00
    DNS主要功能是将主机名称解析成IP,因此我们浏览网页时,只是输入一个网址,就能够访问到对方所提供网页。 DNS既然能够提供解析,那必须依靠自身数据库,才能提供解析功能,然而组成数据库内容,...
  • using System.Net; //命名空间为当前网络上使用多种协议提供了简单编程接口.using System.IO; //命名空间包含允许在数据流和...//DNS类:在.net中System.net命名空间下,主要的功能是从 Internet 域名系统 (DN...
  • DNS(Domain Name System)域名系统,主要实现的功能是将域名转换成ip地址一个服务。它是由一个分层的DNS服务器实现分布式数据库。同时,他也是一个使得主机能够查询分布式数据库应用层协议DNS服务器通常是一...
  • DNS主要功能是将主机名称解析成IP,因此我们浏览网页时,只是输入一个网址,就能够访问到对方所提供网页。 DNS既然能够提供解析,那必须依靠自身数据库,才能提供解析功能,然而组成数据库内容,...
  • LwIP协议

    2019-10-16 11:12:44
    LwIP是一款主要应用于嵌入式领域的开源TCP/IP协议栈,它的实现同BSD(LINUX)的实现有很大的相似性,可以作为TCP/IP协议的典型代表,它功能完备,除了实现TCP/IP基本通信外,其新版本还支持DNS\SNMP\DHCP\IGMP等高级...
  • Ubuntu采用bind9配置DNS服务器

    万次阅读 2015-03-20 14:26:15
     Ubuntu采用bind9配置DNS服务器 ...BIND (Berkeley Internet Name Domain)是Domain Name System (DNS协议的一个实现,提供了DNS主要功能的开放实现,包括 * 域名服务器 (name
  • DNS简单地说,就是Domain Name System(域名系统)。在一个以TCP/IP协议为主网络环境中,DNS是一个非常重要而且常用...其主要的功能就是将我们容易记忆网址域名(Domain Name)与不容易记忆IP地址作自动解析互换

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 338
精华内容 135
关键字:

dns协议的主要功能是