DNS查询服务器的基本流程以及https的加密过程

news2024/9/20 9:11:42

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

使用多级查询的优点:

分布式架构提高可靠性和性能
  • 避免单点故障:如果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

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/1963102.html

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

相关文章

找到/打开pupprteer对应chrome版本

前期提要&#xff1a;导出pdf的时候&#xff0c;会用pupprteer启动一个浏览器实例&#xff0c;再打开指定页面进行打印&#xff0c;页面写成什么样&#xff0c;导出的pdf内容就是什么样&#xff0c;听起来很正常。 但是遇到了调试的时候页面显示很正常&#xff0c;而导出的内容…

echarts柱状图——堆叠、多柱堆叠,并在顶部展示总和

实现的效果 要求 1、堆叠数据 2、可以有多个柱子堆叠 3、要展示每个堆叠柱子的总和 options配置 const xData ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]; const morningIncome …

chrome/edge浏览器插件开发入门与加载使用

同学们可以私信我加入学习群&#xff01; 正文开始 前言一、插件与普通前端项目二、开发插件——manifest.json三、插件使用edge浏览器中使用/加载插件chrome浏览器中使用/加载插件 总结 前言 chrome插件的出现&#xff0c;初衷可能是为了方便用户更好地控制浏览器&#xff0c…

数据结构与算法-二分搜索树

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、二分搜…

[ONVIF系列 - 01] 简介 - 设备发现 - 相关工具

1.背景知识 这个事项对我而言是个新知&#xff0c;我从&#xff1a;https://www.cnblogs.com/liwen01/p/17337916.html 跳转到了&#xff1a;ONVIF协议网络摄像机&#xff08;IPC&#xff09;客户端程序开发&#xff08;1&#xff09;&#xff1a;专栏开篇_onvif 许振坪-CSDN…

数字人直播系统搭建能力评测!3招教你快速摸清源码厂商的真实实力?

随着数字人直播的应用场景不断拓展和应用频率的持续升高&#xff0c;其所蕴含着的市场前景和收益潜力逐渐显现&#xff0c;连带着数字人直播系统搭建的热度也迎来了新的高潮。在此背景下&#xff0c;作为非科班和研发资源有限的创业者们主要的入局途径&#xff0c;各大数字人源…

Vatee万腾平台:智能管理领域的稳健前行者

在数字经济飞速发展的今天&#xff0c;企业管理模式正经历着前所未有的变革。智能化管理&#xff0c;作为这场变革的核心驱动力&#xff0c;正逐步渗透到企业的每一个角落。而在这场智能化浪潮中&#xff0c;Vatee万腾平台以其稳健的步伐和前瞻的视野&#xff0c;成为了智能管理…

【LLM大模型】一个小时内快速部署大模型

这个教程有以下几部分构成&#xff1a; 硬件配置概念介绍实操测试结果 1.硬件配置 本文使用的方法配置要求低&#xff0c;没有gpu也可以正常使用(就是有点慢)&#xff0c;不管是windows 还是linux&#xff0c;都可以无障碍使用大模型&#xff0c;有脚就行&#xff0c;废话少…

开放式耳机哪个牌子好?五款热门机型对比pk大揭秘!

作为一名耳机测评师&#xff0c;很多人想要知道如何才能选择一款合适自己的开放式耳机&#xff0c;其实我也非常的犯难&#xff0c;因为问的人实在是太多了&#xff0c;而且每个人的情况都不一样&#xff0c;所以不能说我指定的机型就一定适合你&#xff0c;所以这篇文章就是来…

【python】高数计算题难度大?python带你轻松拿下

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

ansys fluent流道分析得到的质量流率为负数

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

从技术角度看视频美颜SDK:实现美颜功能的关键算法

本篇文章&#xff0c;笔者将从技术角度&#xff0c;深入探讨视频美颜SDK实现美颜功能的关键算法。 1.人脸检测与特征点定位 人脸检测主要采用的是卷积神经网络等深度学习算法&#xff0c;这些算法能够在不同光照、姿态和表情下准确识别出人脸。 常见的算法包括Dlib库中的68点…

开发环境搭建——Redis的安装配置

1、msi安装 双击msi安装程序&#xff0c;打开安装向导&#xff0c;点击next 接收终端用户协议&#xff0c;点击next 选择安装路径&#xff0c;并勾选将安装路径添加到系统的PATH环境变量 设置Redis服务端口&#xff0c;默认6379&#xff0c;点击next 设置最大内存限制&#xf…

Golang基础常识性知识面试中常见的六大陷阱及应对技巧

一、nil slice & empty slice 1、nil切片与空切片底层 nil切片&#xff1a;var nilSlice [] string nil slice的长度len和容量cap都是0 nil slicenil nil slice的pointer是nil 空切片&#xff1a;emptySlice0 : make([]int,0) empty slice的长度是0&#xff0c;容量是由…

算法初学者学二分查找

力扣704&#xff0c;二分查找 题目是这样的 二分查找的思路就是&#xff1a; 先确定左右两个边界&#xff0c;左边界是从左往右&#xff0c;右边界是从右往左&#xff0c;所以&#xff0c;左边界是找的比target大的第一个值&#xff0c;右边界最后停的点是比target小的第一个…

谢希仁计算机网络第八版期末复习简答(1)

绪论 计算机网络的概念以及常见的网络类型? 计算机网络&#xff0c;是指地理位置分散的、具有独立功能的多台计算机及其外部设备&#xff0c;通过各种通信线路互联起来&#xff0c;在网络操作系统、网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息…

2024年的AI人工智能风口是Python?一篇文章告诉你为什么!

Python是一种面向对象的、解释型的、通用的、开源的脚本编程语言&#xff0c;它之所以非常流行&#xff0c;我认为主要有三点原因&#xff1a; 1.Python 简单易用&#xff0c;学习成本低&#xff0c;看起来非常干净&#xff1b; 2.Python 标准库和第三库众多&#xff0c;功能…

短剧系统源码分享,快速搭建部署上线教程

一、短剧系统是什么&#xff1f; 短剧制作平台&#xff0c;作为一站式综合解决方案&#xff0c;集剧本创作、角色设计、场景搭建、视频编辑、便捷发布及深度数据分析能力于一身。该平台精准定位于助力企业利用短剧形式强化品牌传播力并驱动商业价值增长&#xff0c;无论企业是…