第1章大型互联网公司的基础架构——1.2 客户端连接机房的技术1:DNS

客户端启动时要做的第一件事情就是通过互联网与机房建立连接,然后用户才可以在客户端与后台服务器进行网络通信。目前在计算机网络中应用较为广泛的网络通信协议是TCP/IP,它的通信基础是IP地址,因为IP地址有如下两个主要功能。

  1. 标识设备:接入网络的设备必须有一个独一无二的IP地址,这样才能唯一标识一个网络目标。
  2. 网络寻址:将数据包从一个网络设备发送到另一个网络设备,需要携带目标网络设备的IP地址,通过TCP/IP中的IP路由寻址功能,数据包最终可以到达目标网络设备。

客户端要与机房建立连接,就需要知道机房公网IP地址(暴露在互联网中可访问的IP地址),但是IP地址通常由一串冰冷的数字组成,没有可读性,不方便记忆,于是人们又制定出另一套字符型的地址方案:域名地址。“域名”是大家都很熟悉的名词,在浏览器中输入简单易记的域名(如www.baidu.com),就可以访问到对应的网站,它的底层其实是由DNS来实现的。

1.2.1 DNS的意义

DNS( Domain Name System,域名系统)是互联网中的核心服务,它维护域名与对应 IP地址的映射关系,并提供将域名翻译为IP地址的域名解析功能。DNS在互联网中有非常广泛的应用,它为用户和互联网公司带来了很多便利。例如:

  1. 互联网公司可以创建简单、便于用户记忆的域名并注册到DNS服务器,用户仅需输入域名就能访问到对应的网站。
  2. 通过维护域名与多个IP地址的映射关系,DNS可以将针对同一个域名的不同用户请求解析到不同的IP地址,从而缓解单一后台服务器的资源压力。
  3. 互联网公司因架构升级、网络改造等需要变更机房公网IP地址时,仅需在DNS服务器中重新配置最新的IP地址,而不会对用户造成任何干扰。
  4. 基于DNS可以实现灵活的负载均衡策略,比如DNS服务器可以对IP地址进行监测——如果发现机房某公网IP地址对应的服务器宕机,那么DNS服务器可以将这个IP地址及时摘除,防止用户无法访问后台。

接下来详细介绍DNS的技术原理。

1.2.2 域名结构

如图1-2所示,域名采用了层次化的树形结构来命名。树的顶端节点为根,根的下一层称为顶级域名,指的是域名的后缀部分,如最常见的.com.net等通用域或者.cn.us等国家域;顶级域名的下一层是二级域名,指的是域名的倒数第二部分,一般表示域名注册人或主体所使用的网络名称,如google.comapple.com;二级域名的下一层是三级域名, 指的是域名的倒数第三部分,表示二级域名的子域名。实际上,域名可能还包括四级域名、五级域名等,它们的含义根据上文类推,每一级域名都控制下一级域名的分配。

image-20250216110358579

对于域名mail.google.com来说,顶级域名是.com,二级域名是google.com,三级域名 是mail.google.com

1.2.3 域名服务器

按照域名的层级结构,可以把域名服务器分为4种不同的类型。

(1)根域名服务器(根DNS服务器)

根域名服务器是全球互联网的中枢神经,它负责互联网顶级域名的解析,即它掌握着全部顶级域名的名称与IP地址的映射关系。目前全球仅有13台IPv4根域名服务器,其中主根域名服务器部署在美国,其余12台辅根域名服务器有9台部署在美国、2台部署在欧洲、1台部署在日本。根域名服务器由美国政府授权的互联网名称与数字地址分配机构(ICANN)统一管理。

(2)顶级域名服务器(顶级DNS服务器)

顾名思义,顶级域名服务器负责管理在每个顶级域名下注册的二级域名解析工作,即它可以根据二级域名寻找到二级域名服务器的IP地址。顶级域名服务器就相当于一个朝代的封疆大吏。

(3)权威域名服务器(权威DNS服务器)

权威域名服务器负责对特定的域名进行解析,它管理顶级域名下的二级域名、三级域名、四级域名等的服务器。从名字中的“权威”可以看出,权威域名服务器最终决定了一个域名到底应该被解析成哪个IP地址,它是DNS中最核心的部分。

每个域名对应的权威域名服务器都可能不同,每个权威域名服务器仅可解析它负责的域名,比如负责google.com域名的权威域名服务器无法解析域名apple.com。大型互联网公司一般会自建权威域名服务器,而中小型企业一般会将域名托管给知名的权威域名服务商。

(4)本地域名服务器(本地DNS服务器)

本地域名服务器不属于域名层次结构中的任何一层,但是它对DNS非常重要,相当于域名解析的缓存。任何一台主机在进行网络地址配置时,都会配置一台域名服务器作为本地域名服务器,它是主机在进行域名查询时首先要查询的域名服务器。本地域名服务器一般由网络运营商提供,它作为主机访问网络时域名解析的总代理,会将域名解析结果缓存到本地,以便加速主机后面的域名解析过程。

1.2.4 域名解析过程

域名解析一般采用递归查询方式执行,一个完整的域名解析过程如图1-3所示。

  1. 当客户端访问某个域名时,会先在设备的本地缓存中查找是否有此域名对应的IP地址。本地缓存包括浏览器缓存计算机系统Hosts文件DNS缓存
  2. 如果本地缓存中没有对应的IP地址,则客户端向本地域名服务器发起域名解析请求。如果本地域名服务器保存了域名对应的IP地址,则可以直接返回;否则,本地域名服务器作为客户端的全权代理,递归地完成域名解析。
  3. 本地域名服务器先向根域名服务器发起域名解析请求。根域名服务器收到请求后,会根据所要查询的域名的后缀将所对应的顶级域名服务器(如.com)地址返回给本地域名服务器。
  4. 本地域名服务器根据返回结果向所对应的顶级域名服务器发起查询请求。顶级域名服务器会先查看自己的缓存中是否有此域名的解析记录,如果有,则将IP地址解析结果返回给本地域名服务器,本地域名服务器再将其返回给客户端,域名解析完成。而如果顶级域名服务器的缓存中没有解析记录,则将域名对应的权威域名服务器地址返回给本地域名服务器。
  5. 本地域名服务器继续向权威域名服务器发起域名解析请求。权威域名服务器最终将与域名关联的IP地址返回给本地域名服务器,本地域名服务器再将其返回给客户端,域名解析完成。

image-20250216111311130

可以看到,除客户端查询本地缓存和本地域名服务器发起请求之外,域名解析的其余各环节均以本地域名服务器为中心进行递归查询,本地域名服务器在域名解析的整个环节中承担了代理的角色。

需要额外说明的是,一旦本地域名服务器获得域名解析记录,它就会在本地进行记录缓存,以便下次客户端再向它查询同一个域名时可以直接获得结果,而不用再进行递归查询了。被缓存的域名解析记录格式大致如图1-4所示。

image-20250216111433001

当查询域名(如www.baidu.com)时,域名解析记录会包含如下数据。

  • 生存周期(TTL):表示这条记录在本地域名服务器中被缓存的时长。
  • 协议类型(Class): 一般标识为IN,表示因特网。
  • 记录类型(Type ): A表示IPv4地址,AAAA表示IPv6地址。
  • 记录数据(Rdata ):与域名关联的地址信息。

总结

什么是DNS?

  • DNS( Domain Name System,域名系统)是互联网中的核心服务,它维护域名与对应 IP地址的映射关系,并提供将域名翻译为IP地址的域名解析功能。

域名服务器的类型?

  1. 根域名服务器
  2. 顶级域名服务器
  3. 权威域名服务器
  4. 本地域名服务器

DNS解析流程?

  1. 当客户端访问某个域名时,会先在设备的本地缓存中查找是否有此域名对应的IP地址。本地缓存包括浏览器缓存计算机系统Hosts文件DNS缓存
  2. 如果本地缓存中没有对应的IP地址,则客户端向本地域名服务器发起域名解析请求。如果本地域名服务器保存了域名对应的IP地址,则可以直接返回;否则,本地域名服务器作为客户端的全权代理,递归地完成域名解析。
  3. 本地域名服务器先向根域名服务器发起域名解析请求。根域名服务器收到请求后,会根据所要查询的域名的后缀将所对应的顶级域名服务器(如.com)地址返回给本地域名服务器。
  4. 本地域名服务器根据返回结果向所对应的顶级域名服务器发起查询请求。顶级域名服务器会先查看自己的缓存中是否有此域名的解析记录,如果有,则将IP地址解析结果返回给本地域名服务器,本地域名服务器再将其返回给客户端,域名解析完成。而如果顶级域名服务器的缓存中没有解析记录,则将域名对应的权威域名服务器地址返回给本地域名服务器。
  5. 本地域名服务器继续向权威域名服务器发起域名解析请求。权威域名服务器最终将与域名关联的IP地址返回给本地域名服务器,本地域名服务器再将其返回给客户端,域名解析完成。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【旋转框目标检测】基于YOLO11/v8深度学习的遥感视角船只智能检测系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

Python|Windows 安装 DeepSpeed 安装方法及报错 Unable to pre-compile async_io 处理

前置文档:Python|Windows 安装 DeepSpeed 报错 Unable to pre-compile async_io 处理 直接 pip 安装 deepspeed 的报错信息 如果直接使用 pip install DeepSpeed 安装,会触发如下报错信息。出现后,需使用如下方法完成安装。 Co…

PHP支付宝--转账到支付宝账户

官方参考文档: ​https://opendocs.alipay.com/open/62987723_alipay.fund.trans.uni.transfer?sceneca56bca529e64125a2786703c6192d41&pathHash66064890​ 可以使用默认应用,也可以自建新应用,此处以默认应用来讲解【默认应用默认支持…

百度搜索融合 DeepSeek 满血版,开启智能搜索新篇

百度搜索融合 DeepSeek 满血版,开启智能搜索新篇 🚀 🔹 一、百度搜索全量接入 DeepSeek 🔹 百度搜索迎来重要升级,DeepSeek 满血版全面上线!🎉 用户在百度 APP 搜索后,点击「AI」即…

【Prometheus】prometheus结合pushgateway实现脚本运行状态监控

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

【R语言】回归分析与判别分析

一、线性回归分析 1、lm()函数 lm()函数是用于拟合线性模型(Linear Models)的主要函数。线性模型是一种统计方法,用于描述一个或多个自变量(预测变量、解释变量)与因变量(响应变量)之间的关系…

黑马JS教程笔记(JavaScript教程)——JS基础

黑马pink老师-JavaScript基础语法 黑马程序员前端JavaScript入门到精通全套视频教程,javascript核心进阶ES6语法、API、js高级等基础知识和实战教程 文章目录 ~~黑马pink老师-JavaScript基础语法~~001-计算机编程基础002-计算机编程基础编程语言和标记语言区别 00…

CHARMM-GUI EnzyDocker: 一个基于网络的用于酶中多个反应状态的蛋白质 - 配体对接的计算平台

❝ "CHARMM-GUI EnzyDocker for Protein−Ligand Docking of Multiple Reactive States along a Reaction Coordinate in Enzymes"介绍了 CHARMM-GUI EnzyDocker,这是一个基于网络的计算平台,旨在简化和加速 EnzyDock 对接模拟的设置过程&…

《RCooper: 一个真实世界的大规模道路边协同感知数据集》学习笔记

paper:2403.10145 GitHub:AIR-THU/DAIR-RCooper: [CVPR2024] Official implementation of "RCooper: A Real-world Large-scale Dataset for Roadside Cooperative Perception" 目录 摘要 1、介绍 2、相关工作 2.1 道路边感知 2.2 协同…

【STM32】DRV8833驱动电机

1.电机如何转动 只需要给电机两个端子加一正一负的极性就会转起来了,但是要注意的是不要将电机两端直接接在5v和gnd之间,这种电机一般要提供几百毫安的电流,而GPIO口只能提供几毫安,所以我们使用一个DRV8833来驱动 DRV8833输入口…

id生成系统和mp条件简化

目录 场景引入: 有哪些生成id的方式? 1.UUID 2.雪花算法方案 3.数据库生成 4.美团Leaf方案 Leaf-segment数据库方案 使用场景: 美团leaf的docker镜像安装 在leaf.properties中配置数据库的信息 创建sl_leaf数据库脚本: 测试&#x…

网络安全推荐的视频教程 网络安全系列

第一章 网络安全概述 1.2.1 网络安全概念P4 网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。 1.2.3 网络安全的种类P5 (1…

内网下,Ubuntu (24.10) 离线安装docker最新版教程

一般在数据比较敏感的情况下,是无法使用网络的,而对于Ubuntu系统来说,怎么离线安装docker呢? 下面我给大家来讲一下: 采用二进制安装: 1.下载docker离线包 官网下载: Index of linux/static…

基于SpringBoot+Vue的老年人体检管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

AI工具篇:利用DeepSeek+Kimi 辅助生成综述汇报PPT

随着科研和学术报告需求的增加,如何高效地准备一份结构清晰、内容充实的PPT已成为许多研究者的挑战。 传统的PPT制作过程繁琐,需要大量文献收集、数据分析和设计工作,而AI工具能够帮助提升效率,减少重复劳动。 本文将介绍如何使用…

【Spring详解一】Spring整体架构和环境搭建

一、Spring整体架构和环境搭建 1.1 Spring的整体架构 Spring框架是一个分层架构,包含一系列功能要素,被分为大约20个模块 Spring核心容器:包含Core、Bean、Context、Expression Language模块 Core :其他组件的基本核心&#xff…

为什么WP建站更适合于谷歌SEO优化?

在当今数字时代,建立一个网站似乎变得容易,但要构建一个真正能够带来流量和订单的网站却并非易事。特别是在谷歌SEO优化方面,不同的建站程序在SEO支持方面的效果差异显著。对于希望提升搜索引擎表现的用户来说,WordPress无疑是最佳…

Vue 项目中逐步引入 TypeScript 的类型检查

在现有的 Vue 项目中逐步引入 TypeScript 的类型检查 本文源于一道面试题:注:两种问法一个意思哈!! 问题一:“ 老项目Js写的,如何轻量方式享受 ts 类型?” 问题二:“如何 在现有的 …

win10系统上的虚拟机安装麒麟V10系统提示找不到操作系统

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 win10系统上的虚拟机安装麒麟V10系统提示找不到操作系统,报错:Operating System not found 二、原因分析 国产系统,需要注意的点: 需要看你的系统类…

Spring中Bean的四种实例化方法

Bean的四种实例化方法 Bean是Spring核心的概念,另外一个核心的概念是AOP。官网上,Bean的解释是: In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans…