计算机网络——DNS

一、什么是DNS?

DNS(Domain Name System,域名系统) 是互联网的核心服务,负责将人类可读的域名(如 www.baidu.com)转换为机器可识别的 IP地址(如 14.119.104.254)。它像一本全球分布式“电话簿”,让用户无需记忆复杂数字即可访问网站。

关键特性:

  • 分层设计:域名结构分层次管理(如 .com → baidu → www)。

  • 分布式存储:全球数万台DNS服务器协同工作,无单点故障。

  • 高效缓存:减少重复查询,提升解析速度。


二、为什么要有DNS?

没有DNS的世界会怎样?

  1. 访问网站需输入IP地址
    用户需记忆 14.119.104.254 而非 www.baidu.com

  2. IP变更导致服务中断
    若服务器IP更换,所有用户必须手动更新。

  3. 无法支持复杂服务
    单IP无法托管多个网站(如虚拟主机)。

DNS的四大价值

痛点DNS解决方案
记忆难度高通过域名提供易记的别名
IP动态变化域名与IP动态绑定,自动更新
服务扩展性差支持负载均衡、CDN调度等高级功能
网络流量集中分布式架构缓解单点压力

三、域名的构成

1. 域名结构(从右到左)

以 www.baidu.com 为例:

  • 根域(Root Domain):隐式的 .(通常省略,如 com.)。

  • 顶级域(TLD).com(商业机构)、.org(非盈利组织)、.cn(国家代码)。

  • 二级域(SLD)baidu(注册的网站名称)。

  • 子域(Subdomain)www(常见的子域,表示Web服务)。

2. 域名树状图

根域(.)
└── 顶级域(com)└── 二级域(baidu)├── 子域(www)└── 子域(mail)

四、DNS服务器的分类

类型作用示例
根DNS服务器提供顶级域服务器的IP地址全球13组根服务器(a.root-servers.net)
顶级域DNS服务器管理特定顶级域(如 .com)的权威服务器gtld-servers.net
权威DNS服务器存储具体域名的IP映射记录ns1.baidu.com(百度官方DNS)
递归DNS服务器代表用户完成完整查询过程的缓存服务器8.8.8.8(Google Public DNS)

五、DNS客户端

1. 客户端的作用

  • 发起查询:向递归DNS服务器发送域名解析请求。

  • 缓存管理:临时存储解析结果(通过TTL控制缓存时间)。

2. 客户端配置

Windows
# 查看当前DNS服务器
ipconfig /all
Linux
# 修改DNS配置(/etc/resolv.conf)
nameserver 114.114.114.114

六、DNS中继(Forwarder)

1. 什么是DNS中继?

企业或ISP部署的本地DNS服务器,将外部查询请求转发至上游服务器,实现:

  • 缓存加速:减少外网查询延迟。

  • 内容过滤:屏蔽恶意域名。

  • 流量管控:限制员工访问特定网站。

2. 中继 vs. 递归服务器

对比项DNS中继递归DNS服务器
查询方式转发请求至上游服务器自行完成全链路查询
典型场景企业内网、学校机房公共DNS服务(如Cloudflare)
缓存策略依赖上游响应自主缓存所有层级结果

七、域名解析过程

1. 递归查询(客户端视角)

mermaid

sequenceDiagramparticipant 用户participant 递归DNSparticipant 根DNSparticipant 顶级域DNSparticipant 权威DNS用户->>递归DNS: 查询 www.baidu.com递归DNS->>根DNS: 询问 .com 的顶级域服务器根DNS-->>递归DNS: 返回 .com 服务器IP递归DNS->>顶级域DNS: 询问 baidu.com 的权威服务器顶级域DNS-->>递归DNS: 返回 baidu.com 的权威服务器IP递归DNS->>权威DNS: 查询 www.baidu.com 的IP权威DNS-->>递归DNS: 返回 14.119.104.254递归DNS-->>用户: 返回最终IP

2. 迭代查询(服务器视角)

  1. 本地DNS询问根服务器 → 获取 .com 服务器地址。

  2. 询问 .com 服务器 → 获取 baidu.com 权威服务器地址。

  3. 询问 baidu.com 服务器 → 获取 www 子域的IP。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/897993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQLark 实战 | 如何从Excel、csv、txt等外部文件进行数据导入

数据导入导出是应用开发者在平时开发中最常用的操作之一,SQLark 里提供了方便的图形化界面来完成导入导出。本文先和大家分享如何从 Excel、csv、txt 等外部文件导入数据到数据库表中。 👉 前往 SQLark 官网:www.sqlark.com 下载全功能免费版…

docker无法正常拉取镜像问题的解决

目录 1.前言 2.解决方案 1.前言 安装docker后拉取镜像,遇见了如下问题: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded whil…

k8s系统学习路径

学习 Kubernetes(K8s)需要循序渐进,结合理论知识和实践操作。以下是学习 Kubernetes 的推荐步骤: 1. 先决条件 • 掌握容器基础:先学习 Docker,理解容器化概念(镜像、容器、仓库)、…

@RequestParam、@RequestBody、@PathVariable

1. RequestParam RequestParam:get请求时如果用不到它的3个属性,可以省略;其他请求如果是通过param传送数据,必须使用该注释 要点: 可用于任何类型的请求(get请求数据在请求行中, post请求数据…

麒麟系统利用pycharm生成deb文件

在麒麟系统(Kylin OS)上使用 PyCharm 进行 Python 开发并生成 .deb 可安装软件包,可以按照以下步骤进行操作: 1. 准备工作 安装 PyCharm:确保已经在麒麟系统上安装了 PyCharm,可以使用官方提供的安装包进…

微信小程序接入DeepSeek模型(火山方舟),并在视图中流式输出

引言: DeepSeek,作为一款先进的自然语言处理模型,以其强大的文本理解和生成能力著称。它能够处理复杂的文本信息,进行深度推理,并快速给出准确的回应。DeepSeek模型支持流式处理,这意味着它可以边计算边输…

钉钉(excel)能让表格中不是‘北京’的字符串自动加亮显示(方便查看)以及隔行填充严颜色是斑马色(方便查看)嘛

在钉钉在线表格中,虽然功能相对Excel有所简化,但仍然可以通过条件格式实现对特定内容的高亮显示。以下是具体步骤: 一、在钉钉在线表格中设置条件格式 1. 打开钉钉在线表格 登录钉钉,进入“钉钉在线表格”应用。 打开你需要操作…

Windows根据文件名批量在文件夹里查找文件并复制出来,用WPF实现的详细步骤

项目前言 在日常工作和生活中,我们常常会遇到需要从大量文件中根据文件名批量查找特定文件并复制到指定位置的情况。手动一个个查找和复制文件不仅效率低下,还容易出错。使用 Windows Presentation Foundation (WPF) 可以创建一个用户友好的图形界面应用…

PHP语法基础

PHP语法基础 一,变量 在PHP中,变量是存储数据的容器,其灵活性和动态类型系统是PHP的核心特性之一。以下是PHP变量的详细解析,涵盖声明、作用域、类型转换及最佳实践: 1. 变量基础 声明与命名规则 无需显式声明类型&…

Java 并发编程——BIO NIO AIO 概念

参考 Java 并发编程——BIO NIO AIO 概念 阻塞与非阻塞、同步与异步概念 系统调用、缓存、物理设备阻塞与非阻塞同步与异步 四种主要的 IO 模型 同步阻塞 IO同步非阻塞 IOIO 多路复用异步 IO select,poll,epoll 系统调用命令

探索Maas平台与阿里 QWQ 技术:AI调参的魔法世界

摘要:本文介绍了蓝耘 Maas 平台在人工智能领域的表现及其核心优势,包括强大的模型支持、高效的资源调度和友好的操作界面。文章还探讨了蓝耘 Maas 平台与阿里 QWQ 技术的融合亮点及应用拓展实例,并提供了调参实战指南,最后对蓝耘 …

Python 实现大文件的高并发下载

项目背景 基于一个 scrapy-redis 搭建的分布式系统,所有item都通过重写 pipeline 存储到 redis 的 list 中。这里我通过代码演示如何基于线程池 协程实现对 item 的中文件下载。 Item 结构 目的是为了下载 item 中 attachments 保存的附件内容。 {"crawl_tim…

MySQL与Canal、RabbitMQ集成指南

MySQL 部分 1. 查看是否开启 binlog MySQL 8 默认开启 binlog。可以通过以下命令查看是否开启: SHOW VARIABLES LIKE log_bin;如果返回结果为 ON,则表示 binlog 已开启。 Variable_nameValuelog_binON 2. 若未开启 binlog,则需手动配置 …

X86 RouterOS 7.18 设置笔记十:上海电信IPTV使用msd_lite实现组播转单拨

X86 j4125 4网口小主机折腾笔记五:PVE安装ROS RouterOS X86 RouterOS 7.18 设置笔记一:基础设置 X86 RouterOS 7.18 设置笔记二:网络基础设置(IPV4) X86 RouterOS 7.18 设置笔记三:防火墙设置(IPV4) X86 RouterOS 7.18 设置笔记四…

Select 选择器选项位置偏移的解决方案

Select 选择器选项位置偏移的解决方案 在使用 Select 组件时,可能会遇到下拉选项位置偏移的问题。这通常由 CSS 样式、组件 渲染方式 或 父级元素的影响 造成。以下是详细的排查步骤和解决方案。 一、常见原因 position: relative; 或 overflow: hidden; 影响下拉菜…

LeetCode 解题思路 17(Hot 100)

解题思路: 找到链表中点: 使用快慢指针法,快指针每次移动两步,慢指针每次移动一步。当快指针到达末尾时,慢指针指向中点。递归分割与排序: 将链表从中点处分割为左右两个子链表,分别对这两个子…

数学建模历程之初见

第一次接触数学建模是在上大学前,当时只是听过。起源于我在大学的老乡群里聊天,由于当时年轻有点傻,说的话太多了,什么都问哈哈哈哈哈。 后来有个学长从老乡群里加我,问我怎么话那么多,你们懂当时对我幼小…

Python 科学计算与机器学习入门:NumPy + Scikit-Learn 实战指南

Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

「自动驾驶背后的数学:从传感器数据到控制指令的函数嵌套」—— 揭秘人工智能中的线性函数、ReLU 与复合函数

引言 自动驾驶技术是人工智能领域的一个重要应用,其核心在于如何将传感器数据转化为车辆控制指令。这一过程涉及大量的数学知识,包括线性函数、激活函数(如 ReLU)以及复合函数的嵌套使用。本文将深入探讨自动驾驶中的数学原理&am…

详解SQL数据定义功能

数据定义 1. 数据库模式(Schema)的定义与删除定义模式删除模式 2. 基本表的定义、修改与删除定义表约束1. NOT NULL 约束2. DEFAULT 约束3. UNIQUE 约束4. PRIMARY KEY 约束多列主键示例: 5. FOREIGN KEY 约束6. CHECK 约束7. AUTO_INCREMENT…