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

news2024/12/24 11:34:03

### 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.coloradmin.cn/o/2234691.html

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

相关文章

SRS:构建实时免费视频服务器的全方位指南

SRS&#xff08;Simple Realtime Server&#xff09;是一个开源的、基于MIT协议的实时视频服务器&#xff0c;以其简单、高效而著称。它支持多种流媒体协议&#xff0c;包括RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH和GB28181等&#xff0c;使其成为直播和WebRTC领域的理想…

copilot教我学408---OS之文件管理

四、文件管理 (一)文件 1.文件的基本概念 2.文件元数据和索引节点(inode) 3.文件的操作 建立,删除,打开,关闭,读,写 4.文件的保护 5.文件的逻辑结构 6.文件的物理结构 (二)目录 1.目录的基本概念 2.树形目录 3.目录的操作 4.硬链接和软链接 (三)文件系统 1.文件系统的全局结构(…

论文阅读笔记:Activating More Pixels in Image Super-Resolution Transformer

论文阅读笔记&#xff1a;Activating More Pixels in Image Super-Resolution Transformer 1 背景1.1 问题1.2 提出的方法 2 创新点3 方法4 模块4.1 混合注意力模块&#xff08;HAB&#xff09;4.2 重叠交叉注意力模块&#xff08;OCAB&#xff09;4.3 同任务预训练 5 效果5.1 …

导师双选系统开发:Spring Boot技术详解

第一章 绪论 1.1 选题背景 如今的信息时代&#xff0c;对信息的共享性&#xff0c;信息的流通性有着较高要求&#xff0c;尽管身边每时每刻都在产生大量信息&#xff0c;这些信息也都会在短时间内得到处理&#xff0c;并迅速传播。因为很多时候&#xff0c;管理层决策需要大量信…

关于wordpress instagram feed 插件 (现更名为Smash Balloon Social Photo Feed)

插件地址&#xff1a; Smash Balloon Social Photo Feed – Easy Social Feeds Plugin – WordPress 插件 | WordPress.org China 简体中文 安装后&#xff0c;配置教程&#xff1a; Setting up the Instagram Feed Pro WordPress Plugin - Smash Balloon 从这里面开始看就…

Redis学习:BitMap/HyperLogLog/GEO案例 、布隆过滤器BloomFilter、缓存预热+缓存雪崩+缓存击穿+缓存穿透

Redis学习 文章目录 Redis学习1、BitMap/HyperLogLog/GEO案例2. 布隆过滤器BloomFilter3. 缓存预热缓存雪崩缓存击穿缓存穿透 1、BitMap/HyperLogLog/GEO案例 真实需求面试题 亿级数据的收集清洗统计展现对集合中数据进行统计&#xff0c;基数统计&#xff0c;二值统计&#xf…

基于Python的智能旅游推荐系统设计与实现

一、摘要 本毕业设计的内容是设计并且实现一个基于Python技术的智能旅游推荐系统。它是在Windows下&#xff0c;以MYSQL为数据库开发平台&#xff0c;使用Python技术进行设计。智能旅游推荐系统的功能已基本实现&#xff0c;主要实现首页&#xff0c;个人中心&#xff0c;用户…

从零开始的c++之旅——多态

1. 多态的概念 通俗来说就是多种形态。 多态分为编译时多态&#xff08;静态多态&#xff09;和运行时多态&#xff08;动态多态&#xff09;。 编译时多态主要就是我们之前提过的函数重载和函数模板&#xff0c;同名提高传不同的参数就可以调 用不同的函数&#xff0c…

第二十六章 Vue之在当前组件范围内获取dom元素和组件实例

目录 一、概述 二、获取dom 2.1. 具体步骤 2.2. 完整代码 2.2.1. main.js 2.2.2. App.vue 2.3. BaseChart.vue 三、获取组件实例 3.1. 具体步骤 3.2. 完整代码 3.2.1. main.js 3.2.2. App.vue 3.2.3. BaseForm.vue 3.3. 运行效果 一、概述 我们过去在想要获取一…

plt中subplot综合实战

目录 背景介绍实战 背景介绍 下面是一份贸易数据&#xff08;Prod_Trade.xlsx&#xff09;&#xff0c;需要多角度针对2012年数据进行报表分析&#xff0c;需使用subplot分格展示。Prod_Trade的数据结构包括 Date,Order_Class,Sales Transport,Trans_Cost, Region ,Category, …

DevOps开发运维简述

DevOps平台是一套集成的解决方案&#xff0c;旨在协调软件开发&#xff08;Development&#xff09;和信息技术运维&#xff08;Operations&#xff09;。它促进跨功能团队合作&#xff0c;实现自动化流程&#xff0c;确保持续集成与持续交付&#xff08;CI/CD&#xff09;。 一…

基于java+SpringBoot+Vue的微服务在线教育系统设计与实现

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven mysql5.7或8.0等等组成&#x…

粒子群优化双向深度学习!PSO-BiTCN-BiGRU-Attention多输入单输出回归预测

粒子群优化双向深度学习&#xff01;PSO-BiTCN-BiGRU-Attention多输入单输出回归预测 目录 粒子群优化双向深度学习&#xff01;PSO-BiTCN-BiGRU-Attention多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现PSO-BiTCN-BiGRU-Attention粒子…

终端文件管理神器 !!!

项目简介 nnn是一款专为命令行爱好者打造的高效终端文件管理器。它以其超小的体积、几乎零配置的要求以及卓越的速度表现而著称。nnn不仅适用于Linux、macOS、BSD等操作系统&#xff0c;还能够在诸如树莓派、Android上的Termux、WSL、Cygwin等多个平台运行。它遵循POSIX标准&am…

Uniapp 实现app自动检测更新/自动更新功能

实现步骤 配置 manifest.json 在 manifest.json 中设置应用的基本信息&#xff0c;包括 versionName 和 versionCode。 一般默认0.0.1&#xff0c;1. 服务器端接口开发 提供一个 API 接口&#xff0c;返回应用的最新版本信息&#xff0c;版本号、下载链接。客户端检测更新 使…

基础算法——排序算法(冒泡排序,选择排序,堆排序,插入排序,希尔排序,归并排序,快速排序,计数排序,桶排序,基数排序,Java排序)

1.概述 比较排序算法 算法最好最坏平均空间稳定思想注意事项冒泡O(n)O( n 2 n^2 n2)O( n 2 n^2 n2)O(1)Y比较最好情况需要额外判断选择O( n 2 n^2 n2)O( n 2 n^2 n2)O( n 2 n^2 n2)O(1)N比较交换次数一般少于冒泡堆O( n l o g n nlogn nlogn)O( n l o g n nlogn nlogn)O( n l…

多元数据库时代,云和恩墨携手鲲鹏引领数据库一体机新变革

近年来&#xff0c;随着企业数据存储结构日益多元化&#xff0c;传统架构数据库面临发展瓶颈&#xff0c;越来越多企业倾向于采用不同类型的数据库满足多样化的数据需求。这一趋势下&#xff0c;国内数据库市场呈现百花齐放的态势&#xff0c;产业加速迈入多元数据库时代。 作为…

[SWPUCTF 2022 新生赛]Cycle Again -拒绝脚本小子,成为工具糕手

1.题目 打开&#xff0c;一张图片&#xff0c;一个压缩包 2.分析 图片丢进随波逐流中 发现第一部分的flag NSSCTF{41d769db- 丢进b神的工具中 爆出第二段flag 9f5d-455e-a458-8012ba3660f3} 两段进行拼接 NSSCTF{41d769db-9f5d-455e-a458-8012ba3660f3} 直接拿下 遥遥领…

机场电子采购信息系统

摘 要 互联网的发展&#xff0c;改变了人类原来繁琐的生活和消费习惯&#xff0c;人们的时间观念也在不断加强&#xff0c;所以各种信息系统的数量越来越多&#xff0c;方便了用户&#xff0c;用户习惯也发生了改变。对于传统的企业采购模式来说由于费用高、速度慢、不透明化…

RabbitMQ设置消息过期时间

RabbitMQ设置消息过期时间 1、过期消息&#xff08;死信&#xff09;2、设置消息过期的两种方式2.1、设置单条消息的过期时间2.1.1、配置文件application.yml2.1.2、配置类RabbitConfig2.1.3、发送消息业务类service&#xff08;核心代码&#xff09;2.1.4、启动类2.1.5、依赖文…