计算机网络:应用层 —— 域名系统 DNS

devtools/2025/2/22 19:05:16/

文章目录

    • 什么是域名系统 DNS?
    • 域名系统DNS的作用
    • 域名结构
      • 顶级域名
      • 二级域名
      • 因特网的域名空间
    • 域名服务器
    • 域名解析的过程
      • 递归查询
      • 迭代查询
    • DNS本地高速缓存
    • 总结

什么是域名系统 DNS?

域名系统(DNS,Domain Name System)是互联网的核心基础设施之一,也是互联网的一项核心服务,负责将人类可读的域名(如 www.example.com转换为计算机可识别的 IP 地址(如 192.0.2.1)。DNS 的存在使得用户可以通过易于记忆的域名访问网络资源,而无需记住复杂的IP地址。

域名系统DNS的作用

![[<a class=域名系统DNS的作用.png]]" />

因特网不可以只使用一台 DNS 服务器,因特网的规模很大,这样的域名服务器肯定会因为超负荷而无法正常工作,而且一旦域名服务器出现故障,整个因特网就会瘫痪。早在 1983 年,因特网就开始采用层次结构的命名树作为主机的名字(即域名)并使用分布式的域名系统 DNS

DNS使大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。由于DNS是分布式系统,即使单个计算机出了故障,也不会妨碍整个系统的正常运行。

域名结构

因特网采用层次树状结构的域名结构

![[层次树状结构的域名结构.png]]

顶级域名

顶级域名TLD(Top Level Domain)分为以下三类:

  • 国家顶级域名nTLD:采用ISO 3166的规定,如** cn 表示中国**, us 表示美国,uk 表示英国、等等。

  • 通用顶级域名gTLD:最常见的通用顶级域名有七个,即:

    • com(公司企业)
    • net网络服务机构)
    • org(非营利性组织)
    • int(国际组织)
    • edu(美国教育结构)
    • gov(美国政府部门)
    • mil(美国军事部门)
  • 反向域arpa:用于反向域名解析,即IP地址反向解析为域名。

二级域名

在国家顶级域名下注册的二级域名均由该国家自行确定。例如,顶级域名为 jp 的日本,将其教育和企业机构的二级域名定为 acco,而不用 educom

我国则将二级域名划分为以下两类:

  • 类别域名,共七个:

    • ac(科研机构)
    • com(工、商、金融等企业)
    • edu(教育机构)
    • gov(政府部门)
    • net(提供网络服务的机构)
    • mil(军事机构)
    • org(非营利性组织)
  • 行政区域名,共34个,适用于我国的各省、自治区、直辖市。例如:bi 为北京市、sh 为上海市、js 为江苏省,等等。

需要注意,名称相同的域名其等级未必相同

因特网的域名空间

![[因特网的域名空间.png]]

这种按等级管理的命名方法便于维护名字的唯一性,并且也容易设计出一种高效的域名查询机制。域名只是个逻辑概念,并不代表计算机所在的物理地点

域名服务器

域名和 IP 地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然不能将所有信息都储存在一台域名服务器中。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换

域名服务器可以划分为以下四种不同的类型:

  • 根域名服务器

    • 根域名服务器是最高层次的域名服务器。每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址。因特网上共有13个不同IP地址的根域名服务器

    • 尽管我们将这 13 个根域名服务器中的每一个都视为单个的服务器,但“每台服务器”实际上是由许多分布在世界各地的计算机构成的服务器群集

    • 当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个 DNS 客户最近的一个根域名服务器,这就加快了 DNS 的查询过程,同时也更合理地利用了因特网的资源。

    • 根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器或顶级域名服务器的IP地址

  • 顶级域名服务器:负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的IP地址)。

  • 权限域名服务器:负责管理某个区的域名。每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与IP地址的映射关系。另外,权限域名服务器还知道其下级域名服务器的地址。

  • 本地域名服务器:本地域名服务器不属于上述的域名服务器的等级结构。

    • 当一个主机发出 DNS 请求报文时,这个报文就首先被送往该主机的本地域名服务器。本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。

    • 每一个因特网服务提供者 ISP,一个大学,甚至一个大学里的学院,都可以拥有一个本地域名服务器,它有时也称为默认域名服务器

    • 本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中,本地域名服务器的IP他址需要直接配置在需要域名解析的主机中

域名解析的过程

DNS 的解析过程可以分为以下几个步骤:

  1. 本地缓存查询:当用户在浏览器中输入一个域名时,系统首先会查询本地的 DNS 缓存。如果缓存中有该域名对应的IP地址,则直接返回结果,无需进一步查询。

  2. 递归查询或迭代查询
    如果本地缓存中没有记录,客户端会向配置的 DNS 服务器(通常是 ISP 提供的 DNS 服务器或公共 DNS 服务器)发送查询请求。查询方式有两种:

    • 递归查询:DNS 服务器会负责获取完整的解析结果并返回给客户端。

    • 迭代查询:DNS 服务器仅返回其已知的下一个查询目标,客户端需自行继续查询。

  3. DNS 层次结构解析
    DNS 采用层次化的服务器架构,包括根 DNS 服务器顶级域(TLD)DNS服务器权威 DNS 服务器。解析过程如下:

    • 首先查询根 DNS 服务器,获取目标域名的顶级域(如 .com)的DNS服务器地址。

    • 然后查询顶级域 DNS 服务器,获取二级域名(如 example.com)的权威 DNS 服务器地址。

    • 最后查询权威 DNS 服务器,获取目标域名的IP地址。

  4. 缓存与响应:一旦获取到目标IP地址,DNS 服务器会将结果返回给客户端,并将解析记录缓存一段时间,以便后续快速响应相同的查询。

DNS 报文使用运输层的UDP协议进行封装运输层端口号为53

递归查询

在这里插入图片描述

  1. 客户端发起请求:客户端(如m.xyz.com)向本地域名服务器(dns.xyz.com)发送一个递归查询请求,询问y.abc.com的IP地址。

  2. 本地域名服务器查询根域名服务器:本地域名服务器收到请求后,如果本地缓存中没有该域名的记录,它会向根域名服务器发起递归查询。

  3. 根域名服务器返回顶级域名服务器信息:根域名服务器收到查询后,不会直接返回IP地址,而是返回一个或多个顶级域名服务器的地址,这些服务器负责管理顶级域名(如.com、.org等)。

  4. 本地域名服务器查询顶级域名服务器:本地域名服务器根据根域名服务器提供的信息,向顶级域名服务器(dns.com)发起递归查询。

  5. 顶级域名服务器返回权限域名服务器信息:顶级域名服务器收到查询后,不会直接返回IP地址,而是返回一个或多个权限域名服务器的地址,这些服务器负责管理具体的二级域名(如abc.com)。

  6. 本地域名服务器查询权限域名服务器:本地域名服务器根据顶级域名服务器提供的信息,向权限域名服务器(dns.abc.com)发起递归查询。

  7. 权限域名服务器返回IP地址:权限域名服务器收到查询后,返回y.abc.com的具体IP地址。

  8. 本地域名服务器返回结果给客户端:本地域名服务器将从权限域名服务器获取的IP地址返回给客户端(m.xyz.com),完成整个域名解析过程。

迭代查询

由于递归查询对于被查询的域名服务器负担太大,通常采用以下模式:从请求主机到本地域名服务器的查询是递归查询,而其余的查询是迭代查询

![[迭代查询.png]]

DNS本地高速缓存

为了提高 DNS 的查询效率,并减轻根域名服务器的负荷和减少因特网上的 DNS 查询报文数量,在域名服务器中广泛地使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录

![[DNS本地高速缓存.png]]

由于域名到 IP 地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项(例如,每个项目只存放两天)。

不但在本地域名服务器中需要高速缓存,在用户主机中也很需要。许多用户主机在启动时从本地域名服务器下载域名和 IP 地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到域名时才向域名服务器查询。同理,主机也需要保持高速缓存中内容的正确性。

总结

DNS 是互联网的基础架构之一,它通过将域名解析为IP地址,极大地简化了网络访问过程。但是,DNS 的安全性仍然是一个关键问题。通过采用 DNSSEC、限制查询权限和监控流量等措施,可以有效提升 DNS 的安全性和可靠性。


http://www.ppmy.cn/devtools/161001.html

相关文章

OpenCV(5):图像形态学操作

图像形态学操作是图像处理中的一种重要技术&#xff0c;主要用于处理二值图像&#xff08;即黑白图像&#xff09;。OpenCV 中的图像形态学操作是图像处理中的重要工具&#xff0c;通过腐蚀、膨胀、开运算、闭运算和形态学梯度等操作&#xff0c;可以实现对图像的噪声去除、对象…

x86平台基于Qt+opengl优化ffmpeg软解码1080P视频渲染效率

一般的在arm嵌入式平台&#xff0c;大多数板子都要硬解码硬件渲染的框架&#xff0c;使用即可。 在x86下比较麻烦了。 优化的思路一共有以下几个方面&#xff0c; 1. 软解码变成硬解码 2. 将YUV转QImage的操作转移到GPU 3. QWidget渲染QImage变成opengGL渲染AVFrame 这三点…

影视大数据分析新范式:亮数据动态代理驱动的实时数据采集方案

一、项目背景与挑战 在数据驱动决策的时代&#xff0c;影视数据分析对内容平台至关重要。但豆瓣等平台设有&#xff1a; 高频请求IP封禁机制User-Agent指纹检测请求频率阈值控制验证码验证系统 传统爬虫方案面临&#xff1a; 单一IP存活时间<5分钟采集成功率<30%数据更新…

在UBUNTU下搭建Deepseek

在UBUNTU下搭建Deepseek 一、安装UBUNTU 这个就不多说了&#xff0c;无外乎下载UBUNTU的iso&#xff0c;然后用UltraIso制作U盘&#xff0c;然后重启设置启动盘&#xff0c;安装… 二、安装Ollama curl -sSfL https://ollama.com/install.sh | sh这里可能需要你先安装curl工…

Repeated Sequence

记suma[1]a[2]a[3]...a[n]。 该序列以a[1]&#xff0c;a[2]&#xff0c;a[3]....a[n]为循环节&#xff0c;明显的&#xff0c;问题可转化为:s%sum是否为该序列的某个连续子序列和。 断环为链。将a复制一份。 枚举a[i]为左端点的所有区间的和。再查找s是否存在。二分O&#x…

开题报告——基于Spring Boot的社区居民健康管理平台的设计与实现

关于本科毕业设计(论文)开题报告的规定 为切实做好本科毕业设计(论文)的开题报告工作,保证论文质量,特作如下规定: 一、开题报告是本科毕业设计(论文)的必经过程,所有本科生在写作毕业设计(论文)之前都必须作开题报告。 二、开题报告主要检验学生对专业知识的驾…

使用WebStorm开发Vue3项目

记录一下使用WebStorm开发Vu3项目时的配置 现在WebStorm可以个人免费使用啦&#xff01;?? 基本配置 打包工具&#xff1a;Vite 前端框架&#xff1a;ElementPlus 开发语言&#xff1a;Vue3、TypeScript、Sass 代码检查&#xff1a;ESLint、Prettier IDE&#xff1a;WebSt…

鸿蒙初学者学习手册(HarmonyOSNext_API14)_自定义动画API(@ohos.animator (动画) )

前言 在纯血鸿蒙中最具有用户特色的效果就是自定义的动画效果。在纯血鸿蒙中有多种定义方式&#xff0c;但是今天介绍的是ApI中的自定义动画。 注意: 动画本身具有生命周期&#xff0c;但是不支持在UIAbility的文件使用&#xff0c;简单而言就是不允许在UIAbility生命周期中…