DNS工作原理

DNS工作原理

一、简介

它作为将域名IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网
DNS使用TCPUDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
DNS协议是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。

作用:

DNS是一种可以将域名和IP地址相互映射的以层次结构分布的数据库系统。

二、体系

2.1 报文:

DNS 定义了两种报文 ,一种为查询报文;另一种是对查询报文的响应,称为响应报文。无论是查询报文还是响应报文,都有12个字节的头和查询问题。

2.2 服务器体系

1.根域名服务器:

  • 最高层次的域名服务器,也是最重要的域名服务器,本地域名服务器如果解析不了域名就会向根域名服务器求助。
  • 全球共有13个不同IP地址的根域名服务器,它们的名称用一个英文字母命名,从a一直到m。
  • 每个根服务器都有镜像服务器,每个根服务器与它的镜像服务器共享同一个 IP 地址
  • 所有的根域名服务器都知道所有的顶级域名服务器的域名和地址

2.顶级域名服务器

  • 负责管理在该顶级域名服务器下注册的二级域名。

3.权限域名服务器

  • 负责一个区的域名解析工作

4.本地域名服务器

  • 当一个主机发出DNS查询请求的时候,这个查询请求首先就是发给本地域名服务器的。

三、工作原理

3.1解析步骤

<span>DNS工作原理</span>

有一台计算机:通过ISP(互联网服务提供商)接入了互联网,那么ISP就会给我分配一个DNS服务器,后续使用此DNS作为作为迭代查询的首选域名服务器(也可以手动配置首选域名服务器

在浏览器输入url后(www.baidu.com):

  1. 先在检查本地的Hosts表文件,看其中是否已经有相应的域名与IP地址的对应关系,如果有就会直接采用会被标记为非权威服务器的应答
  2. 然后向首选域名服务器的缓存中查找,如果有对应关系则返回
  3. 如果没有会从配置文件里面读取13个根域名服务器的地址
  4. 然后首选服务器向其中一台根域名服务器发起请求
  5. 根服务器拿到这个请求后,知道他是com这个顶级域名下的,所以就会返回com域中的域名服务器记录给首选服务器
  6. 然后首选服务器再次向该域名服务器(com)发起请求, 然后发现是baidu.com这个域(权威域名服务器),于是返回该域的服务器记录给首选服务器
  7. 首选服务器又向baidu.com这个权威域名服务器发起请求,然后该域查到有www的这台主机,就把这个IP返回给首选服务器了。
  8. 然后首选服务器拿到IP之后,就返回给客户端浏览器,并且把这映射关系保存在告诉缓存中

3.2注意:

  1. 域名对大小写不敏感

  2. 域名解析总体可分为两大步骤
    第一个步骤是本机向本地域名服务器发出一个DNS请求报文,报文里携带需要查询的域名;
    第二个步骤是本地域名服务器向本机回应一个DNS响应报文,里面包含域名对应的IP地址。

  3. DNS的查询顺序

    1、本地hosts文件
       2、本地DNS缓存
       3、本地DNS服务器
       4、发起迭代查询

  4. 使用递归查询+迭代查询(从主机视角看是递归,从首选服务器来看是递归)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115169.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • vue跨域解决方案反向代理_怎么解决跨域问题

    vue跨域解决方案反向代理_怎么解决跨域问题文章目录前言一、跨域是什么?二、解决跨域的办法前言跨域错误信息AccesstoXMLHttpRequestat‘http://192.168.2.92:3000/api/b/home’fromorigin‘http://localhost:8080’hasbeenblockedbyCORSpolicy:Responsetopreflightrequestdoesn’tpassaccesscontrolcheck:ItdoesnothaveHTTP

  • Android 三重缓存

    Android 三重缓存文章目录内存缓存Bitmap内存复用在Android应用中不可避免地要显示很多图片,如果不做处理,不管图片是否显示过,每次启动时都需要从网络拉取,这就极大影响了图片加载速度和浪费用户流量,并且整个应用中的图片内存无法控制在一个总的范围内。因此,图片缓存在一个图片加载模块中很重要并且不可缺少。目前比较流行的图片框架,如Glide、Fresco等,都使用了“内存-本地-网络”三级缓存策略。首…

  • sklearn安装教程_sklearn库的使用

    sklearn安装教程_sklearn库的使用Sklearn(全称Scikit-Learn)是基于Python语言的机器学习工具,是机器学习中的常用第三方模块。它建立在NumPy,SciPy和Matplotlib之上。因此,在安装sklearn之前,需要先安装其三个依赖库numpy+scipy+matplotlib,具体安装步骤如下:1.进入官网下载相应的模块安装地址如下https://www.lfd.uci.edu/~gohlke/pythonlibs网站中包含了python中所需的子库。进去之后查找比较麻烦,可以在网址后

    2022年10月18日
  • petalinux笔记[通俗易懂]

    petalinux笔记[通俗易懂]记录一下这两天用正点原子开发板学petalinux的过程,众所周知,ZYNQ可以跑逻辑的FPGA,也可以跑裸机的SDK代码,还能跑个linux系统。在SDK开发中,只是在塔好的FPGA上跑一些简单的c代码,还没有安装上一个系统。1.首先是petalinux2018.3版本的安装建议参考正点原子的安装方法,注意事项就是使用ubuntu16.04版本而不是ubuntu18。要么就用ubuntu16.04配上petalin2018.3版本,要么就是ubuntu18配上pet…

  • subscriptions_promise sb to do

    subscriptions_promise sb to do1.Promise的含义Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了P

  • struts2拦截器详解_拦截和修改tcp数据

    struts2拦截器详解_拦截和修改tcp数据Struts2中的拦截器和servelt中的过滤器是非常的相似的。如果学过过滤器的话,肯定能够感觉的到,尽管有些微的不同。可是struts2的拦截器到底如何使用呢,为什么会有这些配置呢?接下来一一来看。 过滤器和拦截器是非常相似的,过滤器publicinterfaceFilter接口里面有三个方法: init(FilterConfigfilterConfig),des

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号