【计算机网络(二)】DNS协议

news2024/9/23 1:31:56

什么是DNS

DNS(DOMAIN NAME SYSTEM)是一个域名系统,是万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串

DNS 工作流程

在这里插入图片描述

  1. 客户端发送域名解析请求到本地域名服务器
    • 发起域名解析请求使用 UDP 协议:因为 UDP 协议速度快,只需要一个请求一个应答
    • 这一步使用递归查询,希望直接返回获得 ip 地址或者报错
  2. 本地服务器查询hosts文件和本地缓存
  3. 有则返回,若无 =>(发送请求到根域名服务器 <=> 返回顶级域名服务器地址)
    • 后续步骤采用迭代查询,希望返回 ip 地址或者下一步查询的 dns 服务器地址
  4. 请求顶级域名服务器 <=> 返回权威域名服务器地址
  5. 请求权威域名服务器 => 返回ip地址(这一步可以做负载均衡,根据不同策略返回不同IP)
  6. 本地域名服务器缓存结果
  7. 返回ip地址给客户端

DNS请求方式

1. 递归请求(客户端 => 本地 DNS 服务器)

如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。

因此,递归查询返回的查询结果或者是所要查询的IP地址或者是报错,表示无法查询到所需的IP地址

2. 迭代请求(本地 DNS 服务器 => 外网)

  1. 当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。
  2. 然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。
  3. 顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。
    最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机

DNS服务器的记录类型

A记录(address)

又称IP指向,用户可以在此设置子域名并指向到自己的目标主机地址上

NS记录(name server)

解析服务器记录。用来表明由哪台服务器对该域名进行解析
NS记录只对子域名生效

MX记录(mail)

邮件交换记录。用于将以该域名为结尾的电子邮件指向对应的邮件服务器以进行处理
如:用户所用的邮件是以域名mydomain.com为结尾的,则需要在管理界面中添加该域名的MX记录来处理所有以@mydomain.com结尾的邮件

CNAME

通常称别名指向。您可以为一个主机设置别名。比如设置test.mydomain.com,用来指向一个主机www.rddns.com那么以后就可以用test.mydomain.com来代替访问www.rddns.com了(A 记录优先级高于 CNAME,若一个主机地址同时有 A 记录和 CNAME,则 CNAME 不生效)

DNS 服务器高可用

  1. DNS的规范规定了2种类型的DNS服务器,一个叫主DNS服务器,一个叫辅助DNS服务器
  2. 在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息
  3. 当一个辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息,这就叫做区传送(zone transfer)
  4. 这种情况下,使用TCP协议(复制内容,可靠性高)

DNS 的不足

运营商问题

  1. 缓存失效问题
    • 本地 DNS 服务器域名解析更新不及时,有可能用户地域或网络发生变化后依然提供原来的ip 地址,导致绕远路,请求响应时间较长
    • 同时导致容灾问题,当某个 ip 的服务器挂了后,本地 DNS 服务器缓存没有更新,导致老用户持续请求到挂掉的服务器
    • 运营商缓存服务器故障导致用户无法访问
  2. 运营商偷懒转发dns
    运营商把请求转发给其他运营商,比如移动压力大偷懒不解析转发给联通,联通服务器以为你是联通用户,返回一个联通的 ip 地址给你,导致运营商跨域降低接口响应速度
  3. DNS劫持
    • 运营商 DNS 服务器将域名故意解析为其他 ip(选择可靠的 DNS 服务器或投诉到工信部)

协议自身问题

  1. DNS 污染
    DNS 解析请求使用 UDP 协议明文传输,可能导致被截取篡改
  2. LocalDns递归出口NAT
    LocalDNS递归出口NAT指的是运营商的LocalDNS按照标准的DNS协议进行递归,但是因为在网络上存在多出口且配置了目标路由NAT,结果导致LocalDNS最终进行递归解析的时候的出口IP就有概率不为本网的IP地址(例如电信变联通),此时域名权威DNS就认为用户是联通的,返回联通的ip导致跨网请求速度变慢
  3. HTTP 劫持
  • 运营商路由器发现是 HTTP 请求,在响应结果中插入 JS 代码弹出一些广告之类的

DNS 劫持

  1. 个别运营商 DNS 服务器为了利益故意返回错误的 ip 地址
  2. 攻击者伪造权威 DNS 服务器返回结果给本地 DNS 服务器,欺骗本地 DNS 服务器接收返回记录并覆盖缓存

解决方案

  1. HttpDNS
  2. DNSSEC
  3. 实时监控+商务推动

HTTP 劫持

  1. 运营商路由器发现是 HTTP 请求,直接重定向到指定地址
  2. 运营商路由器发现是 HTTP 请求,在响应结果中插入 JS 代码弹出一些广告之类的

解决方案

  1. 投诉运营商客服
  2. 投诉工信部
  3. HTTPS 加密请求,避免篡改
  4. 如果暂时无法使用 HTTPS,则事后屏蔽,遍历 DOM 对象,屏蔽无关广告

HTTP 劫持监测网站

http://wzjk.iis7.net/

  • 一个 TCP 连接可以对应几个 HTTP 请求?(提示,这在问你HTTP1.0和1.1的区别)
  • 一个tcp连接对应一个http1.0请求(未启用keepalive),对应多个http1.0请求(启用keepalive)和多个http1.1及2.0请求
    2、一个 TCP 连接中 HTTP 请求发送可以一起发送么(比如一起发三个请求,再三个响应一起接收)?(提示,这就是在问你HTTP2.0和HTTP1.1协议的区别)

3、浏览器对同一Host建立TCP连接到数量有没有限制?(拜托,一个网站那么多图片,开一个TCP连接,按顺序下载?那不是等到死?)

HTTPDNS

原理

HttpDNS的原理非常简单,主要有两步:
客户端直接访问HttpDNS接口,获取业务在域名配置管理系统上配置的访问延迟最优的IP。(基于容灾考虑,还是保留次选使用运营商LocalDNS解析域名的方式)
客户端向获取到的IP后就向直接往此IP发送业务协议请求。以Http请求为例,通过在header中指定host字段,向HttpDNS返回的IP发送标准的Http请求即可。

优势

从原理上来讲,HttpDNS只是将域名解析的协议由DNS协议换成了Http协议,并不复杂。但是这一微小的转换,却带来了无数的收益:
A、根治域名解析异常:由于绕过了运营商的LocalDNS,用户解析域名的请求通过Http协议直接透传到了腾讯的HttpDNS服务器IP上,用户在客户端的域名解析请求将不会遭受到域名解析异常的困扰。
B、调度精准:HttpDNS能直接获取到用户IP,通过结合腾讯自有专利技术生成的IP地址库以及测速系统,可以保证将用户引导的访问最快的IDC节点上。
C、实现成本低廉:接入HttpDNS的业务仅需要对客户端接入层做少量改造,无需用户手机进行root或越狱;而且由于Http协议请求构造非常简单,兼容各版本的移动操作系统更不成问题;另外HttpDNS的后端配置完全复用现有权威DNS配置,管理成本也非常低。总而言之,就是以最小的改造成本,解决了业务遭受域名解析异常的问题,并满足业务精确流量调度的需求。
D、扩展性强:HttpDNS提供可靠的域名解析服务,业务可将自有调度逻辑与HttpDNS返回结果结合,实现更精细化的流量调度。比如指定版本的客户端连接请求的IP地址,指定网络类型的用户连接指定的IP地址等。

HTTPS效率和高可用

通过BGP网络保证不同运营商的用户可以快速访问网络
通过在多个数据中心部署服务互备实现高可用

附录

根DNS服务器名字与地址

https://www.internic.net/domain/named.root

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

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

相关文章

ESP32(二):GPIO

一.创建例程 打开命令面板&#xff1a;ctrlshiftp&#xff0c;输入&#xff1a;esp-idf:example&#xff1b;选择hello_world工程&#xff0c;点击 Create project using example hello_world&#xff0c;选择保存工程&#xff1b;工具使用代码&#xff1a; #include <stdi…

关于软件卸载

卸载软件 想必大家以前都这样删过软件的吧&#xff1a;把桌面上的图标直接拉进垃圾站 然而想卸载也必然也是因为空间占满了吧 所以今天决定介绍几个卸载的方法和工具。 我也是第一次尝试&#xff0c;毕竟我要毕业了&#xff0c;某些软件我忍他们很久了 浅浅地尝试几个 &am…

压测工具Jmeter

腾讯下载地址&#xff1a;https://mirrors.cloud.tencent.com/apache/jmeter/ index of /apache/jmeter/binaries/xxx.zip 这是windows系统使用 index of /apache/jmeter/binaries/xxx.tgz 这是linux系统使用 安装需要java环境 进到解压文件的bin目录下&#xff0c;双击 jmeter…

【Zynq7010 ebaz4205矿渣变废为宝(此教程包含如何更改PL侧的电路,使得能够正常使用PL侧的资源)】

一、时钟 时钟部分的电路图如下图所示&#xff0c;如果想用PL侧的晶振的话&#xff0c;需要手动焊接一个50MHZ的晶振&#xff0c;并将R1372和L29用0欧姆电阻连通。也可以加上一坨锡连通。我使用的是订书器钉。将订书器钉截取一部分&#xff0c;可以很好的替代0欧姆电阻。 ​ 50…

CTFshow misc PNG隐写入门赛

目录 One PieNG 1 One PieNG 2 One PieNG 3 One PieNG 4 One PieNG 5 One PieNG 6 One PieNG 7 One PieNG 8 One PieNG 9 One PieNG 10 One PieNG 11 One PieNG 12 One PieNG 13 One PieNG 14 One PieNG 15 One PieNG 16 One PieNG 17 One PieNG 18 One Pie…

Python实现哈里斯鹰优化算法(HHO)优化LightGBM分类模型(LGBMClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 2019年Heidari等人提出哈里斯鹰优化算法(Harris Hawk Optimization, HHO)&#xff0c;该算法有较强的全…

Chapter4:频率响应法(中)

第四章:频率响应法 Exercise4.13 已知控制系统的开环对数幅频渐近特性如下,确定各最小相位系统的开环传递函数。 解: 【图 ( a ) ({\rm a}) (a)】 确定系统积分环节或微分环节个数。 因为对数幅频渐近特性曲线的低频渐近线的斜率为

行为型模式-责任链模式

责任链模式 概述 在现实生活中&#xff0c;常常会出现这样的事例&#xff1a;一个请求有多个对象可以处理&#xff0c;但每个对象的处理条件或权限不同。例如&#xff0c;公司员工请假&#xff0c;可批假的领导有部门负责人、副总经理、总经理等&#xff0c;但每个领导能批准…

【SpringMVC】| 使用SpringMVC实现文件上传 | 下载功能

MVC目录 一. &#x1f981; 前言二. &#x1f981; 文件上传 & 下载1. 文件上传Ⅰ. 上传单个文件Ⅱ. 上传多个文件Ⅲ. 异步上传Ⅳ. 跨服务器上传1. 添加跨服上传依赖2. 创建控制器方法 2. 文件下载 三. &#x1f981; 总结 一. &#x1f981; 前言 SpringMVC是一个Web框架…

Qt的UI入门

二、UI入门 1. QWidget类 QWidget类是Qt中所有组件和窗口的基类&#xff0c;其内部规定了组件和窗口的基本规则和功能。 Qt中每个属性的文档中都有Access functions部分&#xff0c;表示其支持的读写&#xff08;getter和setter&#xff09;函数&#xff0c;Qt中的getter和sett…

Redis实现延迟队列方法介绍

延迟队列&#xff0c;顾名思义它是一种带有延迟功能的消息队列。那么&#xff0c;是在什么场景下我才需要这样的队列呢&#xff1f; 1. 背景 我们先看看以下业务场景&#xff1a; 当订单一直处于未支付状态时&#xff0c;如何及时的关闭订单如何定期检查处于退款状态的订单是…

神秘的IP地址8.8.8.8地址到底是什么?为什么会被用作DNS服务器地址呢?

当我们在配置网络连接或者路由器时&#xff0c;经常会遇到需要填写DNS服务器地址的情况。而在这些情况下&#xff0c;很多人都会听到一个神秘的数字地址&#xff1a;8.8.8.8。那么&#xff0c;这个地址到底是什么&#xff0c;为什么会被用作DNS服务器地址呢&#xff1f;本文将详…

分流稳压器TL431/TLV431

分流稳压器&#xff08;Shunt Regulator&#xff09;指的是依靠调节Ik电流来稳定输出电压&#xff0c;分流指的就是Ik来分流。 分流稳压器&#xff0c;也叫做并联电压稳压器&#xff0c;相对地&#xff0c;还有串联电压稳压器。 1、常见型号 TL431TLV431Vref2.5V1.24VVoutVref…

作为一个java工程师,你还记得java的基本数据类型有那些吗?他们的取值范围是多少?

Java是一种强类型编程语言&#xff0c;因此所有的变量都必须先声明后使用。Java基本数据类型指的是Java语言中最基本的数据类型&#xff0c;包括整型、浮点型、字符型、布尔型等。 Java基本数据类型一共有8种&#xff0c;它们分别是&#xff1a; byte&#xff08;字节型&#…

SpringCloud高频面试题--附答案

今天给大家分享SpringCloud高频面试题。下面是一张Spring Cloud核心组件关系图&#xff1a; 从这张图中&#xff0c;其实我们是可以获取很多信息的&#xff0c;希望大家细细品尝。 话不多说&#xff0c;直接开始面试&#xff0c;你准备好了吗&#xff1f; 1、什么是Spring Cl…

汽车电路图、原理框图、线束图、元器件布置图的识读技巧与要点

摘要&#xff1a; 想要读懂汽车电路图就必须把电的通路理清楚&#xff0c;即某条线是什么信号&#xff0c;该信号是输入信号、输出信号还是控制信号以及信号起什么作用&#xff0c;在什么条件下有信号&#xff0c;从哪里来&#xff0c;到哪里去。 一、汽车电路图的识读技巧 1.…

【Python习题集3】常用数据结构习题

数据结构 一、实验内容二、实验总结 一、实验内容 1.从键盘输入一个正整数列表&#xff0c;以-1结束&#xff0c;分别计算列表中奇数和偶数的和。 &#xff08;1&#xff09;源代码 n int(input("请输入一个正整数&#xff1a;")) list3 [] while n ! -1:list3.a…

【云原生|Kubernetes】02-Kubeadm安装部署Kubernetes集群

【云原生|Kubernetes】02-Kubeadm安装部署Kubernetes集群 文章目录 【云原生|Kubernetes】02-Kubeadm安装部署Kubernetes集群前言环境介绍安装kubernetes集群基础环境设置安装Kubernetes集群安装kubeadm&#xff0c;kubectl&#xff0c;kubeletkubeadm初始化集群(master节点操作…

C语言-学习之路-05

C语言-学习之路-05 函数函数分类函数的作用 函数的定义函数定义格式 函数名字、形参、函数体、返回值函数调用无参函数调用有参函数调用 函数的声明多文件&#xff08;分文件&#xff09;编程分文件编程 函数 函数分类 C语言程序都是从主函数main()开始执行的。从函数的定义角…

259页11万字智慧水利建设项目解决方案

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除。 1.1.1 项目建设任务 依托省政务云平台&#xff1b;建立水利专业数据的汇集、共享、交换和水利数据库、数据仓库、数据资源目录与大数据服务等&#xff1b;建立水利大数据分…