文章目录

  • DNS协议
    • DNS提供的服务
      • DNS简介
      • 服务
    • DNS工作原理概述
      • DNS服务器分类
        • 根DNS服务器
        • 顶级域(TLD)DNS服务器
        • 权威DNS服务器
        • 本地DNS服务器
      • 一趟DNS查询过程解析
        • 递归查询
        • 迭代查询
        • 实际中遵循的查询模式
      • DNS缓存
    • DNS记录和报文
      • DNS记录
      • DNS报文
        • DNS报文解析

DNS协议

DNS提供的服务

DNS简介

  • 由于IP地址较为难记,因此引入了DNS协议
  • DNS(Domain Name System),即域名系统
  • 主机名用来标识主机,但是主机名几乎不提供主机在因特网中的位置信息,主机也可用IP地址来标识
  • DNS是一个由分层的DNS服务器实现的分布式数据库
  • 它是一个使得主机能够查询分布式数据库的应用层协议
  • DNS服务器通常时运行BIND(Berkeley Internet Name Domain)软件的UNIX服务器
  • DNS协议运行在UDP之上,使用53号端口
  • DNS通常由其他应用层该协议所使用
  • 域名结构:主机名…三级域名、次级域名(二级域名)、顶级域名、根域名(根域名一般不写,为.root)

服务

  • DNS提供由主机名到IP地址之间的转换服务

  • 应用程序通过调用DNS来获得主机别名对应的规范主机名以及主机的IP地址

    一个主机通常有多个主机名,一般其中较为复杂的一个为规范主机名,其他的为主机别名,我们一般记着的为主机别名

  • 一个邮件服务器和web服务器可以使用相同(别名化的)的主机名

  • DNS用于在冗余的服务器之间进行负载分配

    DNS数据库中存储着一个站点对应的多台服务器的IP地址集合,然后DNS可以返回域名对应的不繁忙的服务器IP地址

DNS工作原理概述

由于只是用一个DNS服务器会造成种种问题,如:

  • 单点故障(若DNS服务器瘫痪,则整个互联网都会陷入瘫痪状态);
  • 通信容量(所有的DNS请求都要一台服务器来处理);
  • 远距离的集中式数据库(若请求主机和DNS服务器距离过远,会造成很大的时延);
  • 维护(单个DNS服务器要为互联网中所有主机保留记录)。

因此DNS服务器采用分布式、层次的数据库

DNS服务器分类

  • DNS使用大量的DNS服务器,他们以层次的方式组织,并且分布在全世界范围内
  • DNS服务器的分层模型由树形结构来理解非常好理解。树的根为根DNS服务器,它的孩子为TLD服务器,TLD的孩子为顶级域服务器,顶级域服务器的孩子为权威DNS服务器…
  • DNS域名服务器一般分为三种:根DNS服务器、顶级域DNS服务器、权威DNS服务器,除此之外还有一个本地DNS服务器

根DNS服务器

  • 全球有400多个,由13个不同的组织进行管理
  • 根DNS服务器负责提供TLD服务器的IP地址
  • 根DNS服务器持有顶级域DNS服务器的NS记录和A记录
  • 当本地DNS服务器无法解析域名时,首先会向根DNS服务器发送查询报文,根DNS服务器负责将顶级域DNS服务器的IP地址发送给本地DNS服务器,然后本地DNS服务器再去请求顶级域服务器

顶级域(TLD)DNS服务器

  • 对于每个顶级域(com、org、net、edu和gov)和国家的顶级域都有TLD服务器或服务器集群
  • TLD服务器负责提供权威DNS服务器的IP地址
  • 顶级域DNS服务器持有权威DNS服务器的NS记录和A记录
  • 本地DNS服务器通过根DNS服务器返回的顶级域的IP地址再次发送查询报文,顶级域DNS服务器将权威DNS服务器的IP地址进行返回

权威DNS服务器

  • 一个组织为用户提供的可以访问的域名和IP地址的解析的服务器,为用户提供最权威的DNS域名解析,每个域名在互联网上都可以找到一台权威服务器
  • 权威服务器持有主机名对应的A记录
  • 本地DNS服务器根据顶级域DNS服务器返回的权威DNS服务器的IP发送查询报文,权威DNS服务器将主机名对应的IP地址进行返回

本地DNS服务器

  • 通常每个ISP都有一台本地DNS服务器,也叫默认域名服务器
  • 当一个DNS查询报文发出时,首先发送到本地DNS服务器

一趟DNS查询过程解析

  • 首先,需要将域名转化为IP地址的应用程序(如,Web浏览器或者邮件服务器)会调用DNS客户端并指明需要转换的域名,如在浏览器上输入www.baidu.com网址进行请求访问
  • 然后,DNS客户端会向本地DNS服务器发送查询报文,本地DNS服务器将查询报文发送到根DNS服务器
  • 根DNS服务器将顶级域名(com)解析出来,并将负责顶级域名的顶级域DNS服务器(com DNS服务器)的IP地址列表进行返回给本地DNS服务器
  • 本地DNS服务器再次向这些顶级域DNS服务器之一发送查询报文,顶级域DNS服务器将二级域名解析出来,然后将负责二级域名的DNS服务器的IP地址返回给本地DNS服务器
  • 本地DNS服务器再次向权威DNS服务器发送查询报文,权威DNS服务器将域名对应的IP地址进行返回
  • 本地DNS服务器将域名对应的IP地址返回给调用它的应用程序,交给应用程序进行处理

递归查询

递归查询要求服务器端接收到客户端请求,必须使用一个准确的查询结果恢复客户端,若DNS服务器本地没有缓存,则去请求其他服务器并将结果返回

迭代查询

迭代查询要求DNS服务器能向客户端提供其能够解析查询请求的DNS服务器地址,当客户端发送查询请求时,服务器并不直接返回结果,而是告诉客户端另一台服务器的地址,由客户端再次去请求。

实际中遵循的查询模式

从请求主机到本地DNS服务器的查询是递归的,其余的查询是迭代的,即上面的一趟DNS查询过程解析

DNS缓存

  • 产生原因:为了改善时延性能并减少在因特网到处传输的DNS报文数量
  • 在一个请求链中,当某DNS服务器接受一个DNS回答时,他能将映射缓存在本地存储器中
  • DNS服务器一般通常在两天后丢弃缓存的信息

DNS记录和报文

DNS记录

  • 所有的DNS服务器存储了资源记录(Resource Record,RR),RR提供了主机名到IP地址的映射

  • 每个DNS回答中包含一条或多条资源记录

  • 资源记录是一个4元组(Name, Value,Type,TTL)

  • 根据Type值不同将DNS记录分为四种:

    • Type=A,此时Name是主机名,Value是主机名对应的IP地址。A记录提供了标准的主机名到IP地址的映射

    • Type=NS,此时Name是一个域,Value是知道该域名所在位置的权威DNS服务器的主机名。NS记录用来沿着查询链来路由DNS查询

    • Type=CNAME,此时Value是别名为Name的主机的规范主机名。该记录能向查询的主机提供一个主机名对应的规范主机名

    • Type=MX,此时Value是别名为Name的邮件服务器的规范主机名

      当为了获取邮件服务器的规范主机名时,DNS客户端应当请求MX记录;为了获取其他服务器的规范主机名时,DNS客户端应该请求CNAME记录

DNS报文

DNS只有两种报文:查询报文和回答报文

DNS报文解析

  • 首部区域:共有12个字节,分为6个字段

    • 第一个字段(标识符):是一个12比特的数,用于标识该查询。这个标识符会被复制到回答报文中,来匹配用户发出的请求和收到的回答
    • 第二个字段(标志):标志字段含有若干标志。比如,
      • 1比特“查询/回答”标志指出是查询报文(0)还是回答报文(1);
      • 被请求的权威DNS服务器会将1比特的”权威的“标志位被放置到回答报文中;
      • 递归查询时会设置1比特的”希望递归“标志位;
      • 若DNS服务器支持递归查询,他会在回答报文中对1比特的”递归可用“标志位
    • 第三个字段(问题数)
    • 第四个字段(回答RR数)
    • 第五个字段(权威RR数)
    • 第六个字段(附加RR数)
  • 问题区域:包含正在进行的查询信息
    • 名字字段:正在被查询的主机名
    • 类型字段:查询类型,如NS查询、A查询等
  • 回答区域:包含对最初请求的名字的资源记录。可能包含多条RR记录,一个主机名可能对应多个IP地址
  • 权威区域:包含了其他权威副武器的记录
  • 附加区域:包含了其他有帮助的记录。如一条MX请求的回答报文的回答区域包含一条邮件服务器的规范主机名的资源记录。该附加区域包含一个类型A记录,该记录提供了用于该邮件服务器的规范主机名的IP地址

计算机网络——DNS协议相关推荐

  1. 计算机网络 DNS协议 FTP DHCP

    1.DNS协议则是用来将域名转换为IP地址.DNS采用客户/服务器模型,协议运行在UDP上,使用53号端口. 从概念上可以将DNS分为3部分:层次域名空间,域名服务器和解析器. 层次域名空间:因特网采 ...

  2. [计算机网络] DNS 协议

    大家应该都知道,当我访问一个网址的时候,实际上我是在访问一个 IP 地址.那为什么不记 IP 地址,反而要去访问一个网站名字呢,比如谷歌. 你可以想想,现在有多少网站,数不过来对吧?就算数的过来, 直 ...

  3. 计算机网络——IP协议基础原理

    摘要 IP协议提供的一种统一的地址格式.它为互联网上的每一个网络和主机分配一个逻辑地址所以IP地址也叫逻辑地址,用来屏蔽物理地址的差异,MAC地址每一个机器都有一个编码.IP地址是32位二进制数据分为 ...

  4. 计算机网络——DNS域名解析服务器原理

    摘要 本博文主要介绍DNS协议和DNS服务器域名解析相关知识和原理,帮助大家在理解计算机网络中的域名解析服务原理. 计算机网络知识脑图 计算机网络--计算机网络知识脑图_庄小焱的博客-CSDN博客_计 ...

  5. 计算机网络——HTTP协议原理

    摘要 在日常的开发中,很多开发的同学可能很少了解的HTTP协议的底层原理.HTTP协议的底层涉及到请求响应模型,HTTP的工作流程.cookie和session的原理等.本博文主要介绍计算机网络中HT ...

  6. 计算机网络——ARP协议(地址解析)原理

    摘要 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的 ...

  7. 计算机网络——ARQ协议(自动重传请求)原理

    摘要 自动重传请求(Automatic Repeat-reQuest,ARQ)是OSI模型中数据链路层和传输层的错误纠正协议之一.它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输 ...

  8. 计算机网络应用层(二):DNS协议详解

    DNS协议详解 前言 DNS协议概述 DNS工作原理 DNS缓存 DNS记录和报文 资源记录 DNS报文 总结 前言 DNS是计算机网络中应用层的一个协议,可能很多同学碰到过DNS被劫持的情况,我们现 ...

  9. 计算机网络协议分析dns,DNS协议分析

    一直有一个愿望,能把知道的东西的原理搞明白:计算机网络.操作系统等等等等.今天好好研究了研究DNS协议. DNS协议是应用层协议,一般是基于UDP协议,不过我看了Golangnet 包里相关源码用的是 ...

最新文章

  1. 对软件工程与计算机科学之间区别的看法
  2. RocketMQ Apache顶级项目之路
  3. 我的梦想是十年内成为架构师,该怎么办?
  4. 再见了Dubbo!正式拥抱下一个神级Java开发框架!
  5. 二十五、Node中的Buffer缓冲器和EventEmitter事件触发器
  6. python dataframe 取每行的最大值,在python数据框中的每一行中查找最大值
  7. Theano中的Function
  8. B站,又被扫黄了!!!
  9. 一次线上商城系统高并发优化,涨姿势了~
  10. 书单 | 专为程序员而写的数学书
  11. matlab 透镜设计,一种用于均匀照明的LED透镜设计方法
  12. 记录一下,关于Instagram
  13. 图像篡改被动检测技术一览:基于特征提取和卷积神经网络的篡改检测
  14. 111.绘制正态分布曲线
  15. ORAN专题系列-28:5G基站如何升级到ORAN基站 - O-RU - 平台和传输层的改进(VLAN, PCP, DHCP, DNS)
  16. padStart()和padEnd()
  17. atom配置python_在Atom中设置Python开发环境
  18. 优雅的使用windows
  19. 无为无欲、与世无争,也就没有烦恼......
  20. 西门子 延时 光控 声控开关 5TG0 211 -1CC1 提高 灵敏度 的方法

热门文章

  1. forever安装和使用
  2. 机器学习实验 - MeanShift聚类
  3. (译)理解 (旧版本)grasshopper 触发更新 / 多线程处理
  4. TortoiseGit的使用
  5. 什么是FreeMaker?
  6. Linux su :user xxx does not exits
  7. ALV 添加自定义按钮 (REUSE_ALV_GRID_DISPLAY 一)
  8. 数据分析——股票双均线策略分析
  9. HP P1007共享打印问题解决
  10. App推广:七个常用渠道