DNS查询服务器的全流程解析

### DNS查询服务器的基本流程,能画出图更好,并说明为什么DNS查询为什么不直接从单一服务器查询ip,而是要经过多次查询,多次查询不会增加开销么(即DNS多级查询的优点)?

 

 

 

- **用户发起请求**:

- 用户在浏览器中输入一个域名(如 `www.example.com`)。

- 浏览器将该请求发送到本地DNS解析器(通常位于用户的操作系统中)。

- **本地DNS解析器查询本地缓存**:

- 本地DNS解析器首先检查其缓存中是否已有该域名的IP地址。

- 如果缓存中有有效的记录,则直接返回IP地址,流程结束。

- **查询递归DNS服务器**:

- 如果本地缓存中没有记录,本地DNS解析器将请求转发给递归DNS服务器(通常由用户的ISP提供)。

- 递归DNS服务器也会检查其缓存,并在缓存未命中时进行递归查询。

- **递归DNS服务器查询根DNS服务器**:

- 递归DNS服务器向根DNS服务器发送查询请求。

- 根DNS服务器不会直接返回IP地址,而是返回顶级域(如 `.com`)的权威DNS服务器的地址。

- **查询顶级域名(TLD)DNS服务器**:

- 递归DNS服务器根据根DNS服务器的回应,向TLD DNS服务器(如 `.com` 的权威DNS服务器)发送查询请求。

- TLD DNS服务器返回该域名的权威DNS服务器的地址。

- **查询权威DNS服务器**:

- 递归DNS服务器向权威DNS服务器发送查询请求。

- 权威DNS服务器返回该域名的最终IP地址。

- **返回IP地址给用户**:

- 递归DNS服务器将获得的IP地址缓存,并返回给本地DNS解析器。

- 本地DNS解析器再将IP地址返回给用户的浏览器。

- **浏览器向IP地址发送请求**:

- 浏览器使用获得的IP地址与目标服务器建立连接,并请求网页内容。

 

![img](https://i-blog.csdnimg.cn/blog_migrate/094448eca8e438fd922e047e525e8615.png)

 

 

 

使用多级查询的优点:

 

#### **分布式架构提高可靠性和性能**:

 

- **避免单点故障**:如果DNS仅依赖单一服务器,当该服务器故障时,所有域名解析请求将无法完成。通过分布式架构,可以避免这种情况,提高系统的可靠性。

- **负载均衡**:将查询请求分布到多个服务器上,可以有效分散负载,避免单个服务器过载,从而提高整体性能。

 

#### 2. **缓存提高效率**:

 

- **递归查询中的缓存**:递归DNS服务器会缓存查询结果,这意味着后续相同的查询请求可以直接从缓存中获取,无需再次进行全程查询,显著减少查询时间和负载。

- **浏览器和操作系统缓存**:本地缓存也能减少网络请求次数,加快域名解析速度。

 

#### 3. **逐级查询优化管理**:

 

- **分层结构便于管理**:DNS采用层级结构(根、TLD、权威服务器),便于管理和更新。例如,根服务器只需知道TLD服务器的地址,而TLD服务器只需知道其下域名的权威服务器地址。

- **安全性**:分层查询可以提高系统的安全性和抗攻击能力。攻击者难以同时攻击所有层级的服务器,从而提高系统的安全性。

 

#### 4. **全球范围内的可扩展性**:

 

- **地域分布**:DNS服务器分布在全球各地,能够更快响应用户的查询请求。根服务器和TLD服务器的地理分布使得查询请求可以在用户所在区域得到快速处理,减少网络延迟。

 

### https的加密与认证过程

 

1. **客户端发起连接请求**:

 

- - 客户端向服务器发送连接请求,请求建立安全连接。这个请求是明文的 HTTP 请求,但是以 `https://` 开头的 URL。

 

1. **服务器发送数字证书**:

 

- - 服务器收到客户端的连接请求后,会将自己的数字证书发送给客户端。数字证书中包含了服务器的公钥以及相关的信息。

 

1. **客户端验证证书**:

 

- - 客户端收到服务器的证书后,会验证证书的有效性。这包括验证证书是否由可信任的证书颁发机构(CA)签发,证书是否在有效期内,以及服务器的域名是否与证书中的域名匹配等。

 

1. **客户端生成对称密钥**:

 

- - 如果服务器的证书验证通过,客户端会生成一个对称密钥(称为会话密钥),用于后续的数据加密和解密过程。

 

1. **客户端使用服务器公钥加密对称密钥**:

 

- - 客户端使用服务器的公钥加密生成的对称密钥,并将其发送给服务器。这个过程是使用非对称加密算法,确保只有服务器持有的私钥可以解密这个对称密钥。

 

1. **服务器解密对称密钥**:

 

- - 服务器收到客户端发送的加密密钥后,使用自己的私钥对其进行解密,得到对称密钥。

 

1. **建立安全连接**:

 

- - 客户端和服务器都拥有了相同的对称密钥,它们可以使用对称密钥进行加密和解密。

  - 之后的通信过程中,客户端和服务器使用对称密钥进行数据加密和解密,保障通信的安全性。

 

1. **客户端发送加密请求**:

 

- - 客户端发送加密请求,包括需要访问的资源等信息。这些请求数据在传输过程中会使用对称密钥进行加密。

 

1. **服务器处理请求并返回加密响应**:

 

- - 服务器接收到客户端的请求后,进行相应的处理,并将响应数据使用对称密钥进行加密后返回给客户端。

 

1. **客户端解密响应**:

 

- - 客户端接收到服务器的加密响应后,使用对称密钥进行解密,得到原始的响应数据。

 

![img](https://i-blog.csdnimg.cn/blog_migrate/e49d2568fd96fd7146ba110ba6bbb2ba.png)

 

### TCP和UDP的主要区别是什么

 

需要从不同的角度来回答

 

参考:

 

1. **连接**

 

- - **TCP**: 面向连接的传输层协议,传输数据前需建立连接。

  - **UDP**: 无需连接,即时传输数据。

 

1. **服务对象**

 

- - **TCP**: 一对一的服务,一条连接只有两个端点。

  - **UDP**: 支持一对一、一对多、多对多的交互通信。

 

1. **可靠性**

 

- - **TCP**: 可靠交付数据,无差错、不丢失、不重复、按序到达。

  - **UDP**: 尽最大努力交付,不保证可靠交付数据,但可基于UDP实现可靠传输协议(如QUIC)。

 

1. **拥塞控制、流量控制**

 

- - **TCP**: 有拥塞控制和流量控制机制,保证传输安全性。

  - **UDP**: 没有拥塞控制,即使网络拥堵也不会调整发送速率。

 

1. **首部开销**

 

- - **TCP**: 首部长度较长,可变(最少20字节,选项字段增加)。

  - **UDP**: 固定8字节,开销较小。

 

1. **传输方式**

 

- - **TCP**: 流式传输,无边界,保证顺序和可靠性。

  - **UDP**: 每个包独立发送,有边界,可能丢包和乱序。

 

1. **分片处理**

 

- - **TCP**: 大数据分片在传输层,丢失时只需传输丢失的分片。

  - **UDP**: 大数据分片在IP层,接收后在IP层组装,再传输给传输层。

 

**TCP 和 UDP 应用场景**:

 

- **TCP**: FTP文件传输,HTTP/HTTPS等需要可靠数据传输的场景。

- **UDP**: DNS、SNMP等少量数据通信,视频、音频流传输,广播通信等。

 

(这些点都可以展开来说)

 

 

 

### GET和POST请求的区别

 

**语义**

 

- **GET**: 请求指定的资源,请求参数以查询字符串形式附加在URL后面,长度限制较为严格。

- **POST**: 向指定资源提交数据,数据包含在请求体中,可以传输大量数据,且格式不限于ASCII字符。

 

**安全性**

 

- **GET**: 请求参数暴露在URL中,可能被浏览器缓存、历史记录等记录和存储,不适合传输敏感信息。

- **POST**: 请求参数在请求体中,不会被浏览器缓存或保存,更适合传输敏感信息。

 

**数据类型**

 

- **GET**: 参数仅支持ASCII字符,长度限制(通常在几千字节以内),不适合传输大数据。

- **POST**: 无数据类型限制,适合传输大数据和复杂数据类型(如文件上传)。

 

**幂等性( 幂等性指的是同一请求的重复执行不会产生不同的结果)**

 

- **GET**: 幂等,多次请求同一URL返回相同结果。

- **POST**: 非幂等,多次请求可能产生不同的结果(如提交订单)。

 

**缓存处理**

 

- **GET**: 可以被缓存,浏览器可以直接使用缓存数据。

- **POST**: 默认不会被缓存,需要服务器指定缓存策略。

 

**使用场景**

 

- **GET**: 用于请求数据、查询操作,对请求结果的幂等性要求较高的场景。

- **POST**: 用于提交表单、上传文件、进行状态变更等需要发送数据的场景。

 

### 什么是跨域,什么情况下会发生跨域,有什么解决办法

 

跨域指的是在浏览器中运行的脚本试图访问不同源(即不同的域、协议或端口)的资源时所遇到的安全限制问题。具体来说,浏览器出于安全考虑,限制了来自不同源的页面间的互操作性,防止恶意网站利用用户登录状态等进行跨站攻击。

 

跨域问题通常在以下情况下会出现:

 

1. **不同的协议**:比如从 `http://example.com` 发送请求到 `https://api.example.com`。

2. **不同的域名**:比如从 `http://example.com` 发送请求到 `http://api.anotherdomain.com`。

3. **不同的端口**:比如从 `http://example.com:3000` 发送请求到 `http://example.com:4000`。

 

解决方案:

 

**CORS(跨域资源共享)**:

 

- **服务器端设置响应头**:在服务端的响应中添加 `Access-Control-Allow-Origin` 头部,指定允许访问的源。例如:`Access-Control-Allow-Origin: *` 表示允许所有源访问。

 

**JSONP(JSON with Padding)**:

 

- JSONP 是一种通过动态创建 `<script>` 标签来加载包含 JSON 数据的响应的方法。由于 `<script>` 标签**不受同源策略限制**,可以用来绕过跨域问题。不过使用 JSONP 需要注意安全性问题和仅适用于 GET 请求的限制。

 

**Nginx代理**:

 

- 使用Nginx作为代理服务器和用户交互,用户就只需要在80端口上进行交互就可以了,这样就避免了跨域问题。

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

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

相关文章

(C++回溯算法)微信小程序“开局托儿所”游戏

问题描述 给定一个矩阵 A ( a i j ) m n \bm A(a_{ij})_{m\times n} A(aij​)mn​&#xff0c;其中 a i j ∈ { 1 , 2 , ⋯ , 9 } a_{ij}\in\{1,2,\cdots,9\} aij​∈{1,2,⋯,9}&#xff0c;且满足 ∑ i 1 m ∑ j 1 n a i j \sum\limits_{i1}^m\sum\limits_{j1}^na_{ij} i…

Go:接口和反射

接口 定义 在传统的面向对象的语言中&#xff0c;是会存在类和继承的概念的&#xff0c;但是Go并没有 那Go如何实现类似的方法呢&#xff1f;它提供了接口的概念&#xff0c;可以实现很多面向对象的特性 接口定义会实现一组方法集&#xff0c;但是这些方法不包含实现的代码…

QCustomPlot添加自定义的图例,实现隐藏、删除功能(一)

文章目录 实现步骤:实现代码:代码讲解:功能说明:优化建议:其他参考:要实现一个支持勾选并可以控制曲线显示和隐藏的自定义 QCPLegend 类,可以通过继承 QCPLegend 并重写其相关方法来实现。我们需要添加一个自定义的复选框元素,并捕捉用户交互来实现曲线的隐藏和显示。…

数字IC后端实现之Innovus Place跑完density爆涨案例分析

下图所示为咱们社区a7core后端训练营学员的floorplan。 数字IC后端实现 | Innovus各个阶段常用命令汇总 该学员跑placement前density是59.467%&#xff0c;但跑完place后density飙升到87.68%。 仔细查看place过程中的log就可以发现Density一路飙升&#xff01; 数字IC后端物…

聊一聊Elasticsearch的索引的分片分配机制

1、什么是分片分配 分片分配是由ES主节点将索引分片移动到ES集群中各个节点上的过程。 该过程尽量保证&#xff0c;同一个索引的分片尽量分配到更多的节点上&#xff0c;以此来达到读写索引的时候可以利用更多硬件资源的效果。 在分配过程当中&#xff0c;也不能将某个主分片…

最详细【Elasticsearch】Elasticsearch Java API + Spring Boot集成 实战入门(基础篇)

Elasticsearch Java API Spring Boot集成 实战入门&#xff08;基础篇&#xff09; 一、初始Elasticseach1、什么是Elasticseach2、Elasticsearch生态2、Elasticsearch结构3、Elasticsearch核心概念4、Elasticsearch 实现全文检索的原理 二、Elasticsearch入门1、入门-环境安装…

如何在 Spring Boot 中实现多数据源的事务管理?

在 Spring Boot 中实现多数据源的事务管理可以通过以下几种方式&#xff1a; 一、使用编程式事务管理 配置多个数据源 如同前面提到的&#xff0c;在 application.properties 或 application.yml 文件中配置多个数据源的连接信息&#xff0c;并创建对应的数据源 bean。 手动开启…

文件操作:Xml转Excel

1 添加依赖 Spire.Xls.jar <dependency><groupId>e-iceblue</groupId><artifactId>spire.xls</artifactId><version>5.3.3</version></dependency>2 代码使用 package cctd.controller;import com.spire.xls.FileFormat; im…

物理验证Calibre LVS Debug案例之通过deleteEmptyModule解决LVS问题

上周帮助T12nm A55训练营学员debug一个Calibre LVS问题&#xff0c;小编觉得挺好的一个问题。这个问题之前没有遇到过&#xff0c;今天分享给大家。 数字IC后端先进工艺设计实现之TSMC 12nm 6Track工艺数字IC后端实现重点难点盘点 下图所示为Calibre LVS的报告。从报告中看到…

深度解析阿里的Sentinel

1、前言 这是《Spring Cloud 进阶》专栏的第五篇文章&#xff0c;这篇文章介绍一下阿里开源的流量防卫兵Sentinel&#xff0c;一款非常优秀的开源项目&#xff0c;经过近10年的双十一的考验&#xff0c;非常成熟的一款产品。 文章目录如下&#xff1a; 2、什么是sentinel&…

ReactPress系列—Next.js 的动态路由使用介绍

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎提出宝贵的建议&#xff0c;感谢Star。 Next.js 的动态路由使用介绍 Next.js 是一个流行的 React 框架&#xff0c;支持服务端渲染、静态站点生成和动态路由等功能&#xff0c;极大地简化…

arm架构部署nexus配置sslcontainerd

背景 合作伙伴私有云的机器架构是arm的&#xff0c;使用registry做为镜像仓库&#xff0c;可以满足基础功能&#xff0c;权限管理等功能无法实现。借鉴现有的架构部署nexus来满足权限管理等需求 思路 翻看dockerhub上没看到有编译好的arm架构的nexus&#xff0c;从github找到…

软件压力测试有多重要?北京软件测试公司有哪些?

软件压力测试是一种基本的质量保证行为&#xff0c;它是每个重要软件测试工作的一部分。压力测试是给软件不断加压&#xff0c;强制其在极限的情况下运行&#xff0c;观察它可以运行到何种程度&#xff0c;从而发现性能缺陷。 在数字化时代&#xff0c;用户对软件性能的要求越…

git 多账号配置

windows下git多账号配置详解_git配置多个用户名和密码-CSDN博客 windows下git多账号配置详解_git配置多个用户名和密码-CSDN博客 windows下git多账号配置详解_git配置多个用户名和密码-CSDN博客

学习方法该升级了,‌AI时代的弯道超车:【心流学习法】行动与意识合一的巅峰进化

你是否曾感到内心如荒漠般干涸&#xff0c;面对浩瀚的知识海洋&#xff0c;热情逐渐消磨殆尽&#xff1f; 你是否渴望忘却时间的流逝&#xff0c;心无旁骛&#xff0c;与知识展开一场纯粹而深邃的对话&#xff1f; ​在AI时代&#xff0c;智能体处理数据、知识迭代的速率让人…

手边酒店多商户版V2源码独立部署_博纳软云

新版采用laraveluniapp开发&#xff0c;为更多平台小程序开发提供坚实可靠的底层架构基础。后台UI全部重写&#xff0c;兼容手机端管理。 全新架构、会员卡、钟点房、商城、点餐、商户独立管理

Vue 3 生命周期钩子详解(setup语法糖示例)

Vue 3 生命周期钩子详解&#xff08;setup语法糖示例&#xff09; 在Vue 3的框架下&#xff0c;生命周期钩子函数得到了全面的革新&#xff0c;并被巧妙地融入了setup函数中。这些钩子函数在组件实例的生命周期的不同阶段发挥着至关重要的作用。接下来&#xff0c;我们将探讨V…

neo4j浅析

一、py2neo 1.基本范式&#xff08;连接数据库&#xff09; from py2neo import Graph """ host:服务器ip地址&#xff0c;默认为localhost http_port:http协议——服务器监听端口&#xff0c;默认7474 https_port:https协议——服务器监听端口&#xff0c;默…

verilog-HDL

目录 用户自定义元件 层次化设计方法 模块例化方法 生成语句 用户自定义元件 Verilog HDL定义的基元都具有固定的功能。为了应用方便&#xff0c;Verilog还支持用户自定义原语&#xff08;User-Defined Primitive&#xff0c;简称UDP&#xff09;&#xff0c;即允许设计者根据…

机器学习(二)——线性回归模型、多分类学习(附核心思想和Python实现源码)

目录 关于1. 基本形式2. 线性回归2.1 单变量线性回归2.2 多元线性回归2.2 对数线性回归 3. 对数几率回归4. 线性判别分析5. 多分类学习5.1 拆分策略 6. 类别不平衡问题X 案例代码X.1 源码X.2 数据集&#xff08;糖尿病数据集&#xff09;X.3 模型效果 关于 本文是基于西瓜书&a…