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

2023-10-30

前言

DNS是计算机网络中应用层的一个协议,可能很多同学碰到过DNS被劫持的情况,我们现在来学习一下DNS协议,来了解为什么DNS被劫持之后,我们便不能访问互联网的原因。

DNS协议概述

我们在网络上看到的url格式可能是这样的:

www.google.com

google十分适合我们人类记忆,因为其是一个简单易记的单词形式。
因特网上的主机可以用多种方式进行标识,常见的有两种:

  1. 利用主机名进行标识,例如www.google.com
  2. 利用IP地址进行标识,例如www.36.158.123.192.com

我们可以很自然的发现,人类相较于用IP地址进行标识,更喜欢用便于记忆的主机名进行标识;但是路由器喜欢定长的、有层次结构的IP地址。为了折中这两种方式,就需要一种协议完成这两种不同的标识之间的转换,即主机名到IP地址转换的目录系统,这就是域名系统(DNS)的主要功能。

DNS:

  1. 一个由分层的DNS服务器实现的分布式数据库。
  2. 一个使得主机能够查询分布式数据库的应用层协议。

DNS的域名解析过程(以www.google.com示例):

  1. 同一台用户主机上运行着DNS应用的客户端。
  2. 从URL中抽出主机名www.google.com,并传给DNS应用的客户端。
  3. DNS客户向DNS服务器发送一个包含主机名的请求。
  4. DNS客户端收到DNS服务器解析的IP地址。
  5. 向该IP地址的80端口的HTTP服务器发起一个TCP进程。

DNS工作原理

DNS是一个分布式、层次数据库,DNS使用了大量的DNS服务器,以层次方式组织。没有一台DNS服务器拥有因特网上所有主机的映射。DNS服务器大致可以分为以下三种:

  1. 根DNS服务器(全世界只有13个)
  2. 顶级域(TLD)DNS服务器(com,cn等)
  3. 权威DNS服务器

例如解析一个为www.google.com的url的域名,遵循以下步骤:

  1. 客户与根服务器联系,解析.,返回顶级域名com的TLD服务器的IP地址
  2. 客户与该TLD服务器联系,其返回google.com权威服务器的IP地址
  3. 客户与该权威服务器联系,返回www.google.com主机名的IP地址

其中还有一种重要的DNS服务器,称为本地DNS服务器,起着代理的作用,相当于管理一篇区域内的主机。

DNS缓存

众所周知,一般对于速率较低的操作,我们通常可以进行缓存技术的应用,DNS协议中也应用了该项技术,这就是DNS缓存。

DNS记录和报文

资源记录

所有DNS服务器存储了资源记录(RR),其提供主机名到IP地址的映射,每个DNS回答报文包含一条或者多条资源记录。
资源记录的存储格式如下

(Name,Value,Type,TTL)

TTL指的是该条资源记录的生存时间,之后的例子是忽略TTL,Name和Value的值取决于Type。

常见的Type的种类有以下几种:

  • Type=A;Name为主机名,Value为该主机名对应的IP地址,所以类型为A的资源记录提供了标准的主机名到IP地址的映射
  • Type=NS;Name为一个域,Value为一个知道如何获得该域中主机IP地址的权威DNS服务器的主机名。
  • Type=CNAME;Value是别名为Name的主机对应的规范主机名,提供一个主机名对应的规范主机名。
  • Type=MX;Value是一个别名为Name的邮件服务器的规范主机名。

DNS报文

DNS只有两种报文:DNS查询回答报文。并且两种报文有着相同的格式。
DNS报文
上图的详细解释如下:

  • 首部区域中。标识符为16比特的数,用以标识该查询,匹配发送的请求和接收到的回答。标志字符中有1比特的查询回答标志位。当某DNS服务器是所请求名字的权威DNS服务器时,1比特的“权威的标志位”放置在回答报文中。还有“希望递归”比特位与“递归可用”比特位。最后还有4个有关数量的字段,标识后续的字段出现次数。
  • 问题区域包含正在查询的信息。包括:(1)名字字段,正在被查询的主机名;(2)类型字段,标识正在被询问的问题类型。
  • 在来自DNS服务器的回答中,包含对最初请求名字的资源记录,回答报文可以包含多条RR,因此一个主机名可以有多个IP地址。
  • 权威区域包含其他权威服务器的记录。
  • 附加区域包含其他有帮助的记录。

总结

DNS是应用层中常见的协议之一,其主要是起到了解析域名的作用,本质是一个分布式数据库,类似于树存储节点,解析域名。我们在平时日常生活中,经常会碰到DNS被劫持的情况,此时就是因为网络无法解析域名,但是QQ可以进行正常使用的原因是因为QQ是直接通过IP连接的软件,所以并不会受到影响,后续将会写一篇新的博客,专门解析大厂面试中的有关DNS的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机网络应用层(二):DNS协议详解 的相关文章

  • 什么是DHCP?有什么优缺点

    DHCP 代表动态主机配置协议 它是存在于应用层的网络管理协议 在它的帮助下 可以将 Internet 协议 IP 地址动态分配给网络上的任何设备或节点 以便它们可以使用该 IP 进行通信 网络管理员的任务是为网络中的所有设备手动分配大量

随机推荐

  • STM32组合设备实现USB转双串口

    USB转双串口 核心技术就在于组合设备 USB Composite 的实现 组合设备的实现 其核心技术在于描述符的实现 下面我们先给出描述符 设备描述符 C 纯文本查看 复制代码 00001 00002 00003 00004 00005
  • IDEA 获取类的相对路径和绝对路径

    1 相对路径 结果 action HelloAction 2 绝对路径 结果 E javaProject JavaEEProject day08 Struts2 test01 src action HelloAction java 转载于
  • 登录注册与Cookie

    很多时候 我们登录一个网站的第一步是注册用户 然后登录 这个高频次的操作前端与后端是如何交互完成登录成功页面跳转的呢 今天我们来聊一聊登录注册的那些事 登录注册的流程 如上图 第一步 用户在注册页面将自己的账号密码邮箱等等信息传给服务器 第
  • 小熊派STM32-OTA+IOT教程

    近期在准备一个物联网课程 主要是针对STM32OTA升级 这次使用的是小熊派物联网开发板 项目地址 https gitee com wenzhengclub bearpi iot ota 其实这个开发板去年我就拿到手了 只是一直没有机会和时
  • Colaboratory下载Kaggle数据

    快捷链接 Colaboratory网址 Kaggle网址 Kaggle获取不了验证码的可以留言 进入Kaggle的账户 新建一个API Token 就会下载一个kaggle json文件 同时出现下面提示 这个在本地运行的时候 需要将kag
  • SQL: STUFF()和FOR XML PATH的使用

    STUFF param1 startIndex length param2 将param1中自startIndex SQL中都是从1开始 而非0 起 删除length个字符 然后用param2替换删掉的字符 示例 select STUFF
  • Gcov/Lcov生成覆盖率遇到的一系列问题(ubuntu18.04)

    1 lcov安装 sudo apt get install lcov 此时安装的lcov版本号是1 13 2 lcov使用 生成覆盖率关联的库在编译时需要加上以下标志位 set CMAKE CXX FLAGS CMAKE CXX FLAGS
  • Docker 使用及常用命令(一)

    一 Docker 基本概念 Docker 是一个开源的应用容器引擎 依赖于已存在并运行的 Linux 内核环境 它允许开发者将应用及其依赖包打包到一个轻量级 可移植的容器中 发布到任何流行的 Linux 机器上 容器相互之间不存在任何接口
  • 稳压二极管串联电阻计算

    稳压二极管是稳压电路的一种方式 但是提供负载的动力与二极管自身的功率有关 例如ZMM 5V 功率1W 最小的反向稳压管的电流5mA 最大的反向稳压管电流 Izmax P U 1W 5v 200mA 当稳压管流向最大电流200mA 则流过串联
  • 自动驾驶仿真平台Carla从入门到放弃

    一 Carla的基本概念 人工智能 5G和V2X技术的不断发展使得自动驾驶成为可能 近几年 自动驾驶发展迅速 在科技新闻上经常可以看到自动驾驶的身影 而从事自动驾驶相关软 硬件研究的高效研究所和公司也越来越多 既有传统的汽车巨头 也有新兴的
  • Angular4.0_环境搭建

    1 百度Node js下载并安装 2 检查npm版本 npm v 3 安装angular cli sudo npm install g angular cli 4 检查版本 ng v 5 在当前目录下创建angular项目 ng new a
  • 【AIGC】2、Visual ChatGPT

    文章目录 一 背景 二 Visual ChatGPT 2 1 对系统规则的提示管理 2 2 基础模型的提示管理 2 3 用户提问的提示管理 2 4 基础模型输出的提示管理 三 实验 3 1 实验设置 3 2 多轮对话的完整案例 3 3 Ca
  • MDK在链接时提示空间不够(No space in execution regions with .ANY selector... )的解决方案总结

    RealView MDK具有强大的编译 链接功能 嵌入式设备拥有的资源往往有限 如果一个程序编译 链接之后的可执行文件大小略大于存储大小时 则不能生成可执行文件进行调试或固化到Flash中 在这种情况下我们一般不去从硬件上调整存储空间的大小
  • 2021-10-10 at32f403a iap

    1 flash page 和 stm103 一样 2 启动偏移重映射说明 在对STM32F1 F2 F3 F4 F0几个系列的芯片作IAP应用时 F0系列跟其它系列不一样 它没有中断矢量定义寄存器SCB VTOR 所以在相应的用户APP代码
  • Consider injecting the bean as one of its interfaces or forcing the use of CGLib-based proxies by se...

    背景 今天在写一个数据处理程序的时候 我打算优化一下我的程序 本来是直接用Mapper层进行单行记录保存的 也就是调用的Mapper的insert函数 过程 然后我就写了一个Service 但是我没有写接口 是直接写了一个具体的实现类 Se
  • python3(9)---去掉字符串中的英文字符和数字

    方法一 使用punctuation punctuation其中定义的是所以英文的标点符号 add punc相当于是自定义的 如果只要去掉英文 那么if判断的地方 只保留add punc即可 如果英文的标点符号也想去掉 就使用punctuat
  • 数学建模常用算法—灰色关联分析法(GRA)

    解决问题 灰色关联分析的基本思想是根据序列曲线几何形状的相似程度来判断其联系是否紧密 曲线越接近 相应序列之间的关联度就越大 反之就越小 一般的抽象系统 如社会系统 经济系统 农业系统 生态系统 教育系统等都包含有许多种 多种因素共同作用的
  • 理解stm32当中旋转编码器左转或者右转的联系和区别

    在这里判断左转右转的代码为 判断左转时 K2下降沿 如果这个时候K3为0 那么就可以判断是左转 所以代码为 接下来是中断的中断函数 void EXTI0 IRQHandler void 检查一下中断标志位 if EXTI GetITStat
  • plsql字体修改

    在win10操作系统上面 使用plsql9 编辑器中和查询结果的字体过小 导致看的不清楚 一开始以为是操作系统分辨率的原因 修改了不起作用 如图 解决办法如下 工具 首选项 字体 表格 选择 修改查询结果表格的字体大小 编辑器 选择 修改编
  • 计算机网络应用层(二):DNS协议详解

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