在学习DNS的过程中给我的启发

news2024/12/25 9:19:14

在国内,关于DNS相关的话题一直络绎不绝,比如DNS根服务器为什么中国没有,还有Anycast BGP实现负载,为什么DNS只有13个,还有DNS over HTTPS 和 DNS over TLS的优劣等等问题,接下来我会找出几个一一说一下其中的原理,并谈谈通过研究这些问题后我的收获。

DNS和我们每天的上网动作息息相关,它是互联网的一项基本服务,最重要的任务是域名解析,它是一个把域名和IP地址相互映射的分布式数据库,把我们访问网页时的域名翻译成IP地址,让我们顺利浏览网页。这项技术的起因就是为了解决上述需求。因为网络通信大部分都基于TCP/IP协议,也就是需要基于IP地址,所以计算机在网络中互访只能识别IP地址而不是域名,域名是用来方便我们记忆的,所以需要DNS(域名系统)来在中间做翻译。其发展是个很长的过程,也很有趣,有兴趣的可以查看相关历史。对于每级域名的长度限制最多63个字符,域名总长度限制小于253个字符。其实DNS也是可以自己搭建的,最普遍的方式是在Linux服务器中使用BIND软件来实现。搭建BIND需要一定的Linux基础,它也算是比较复杂的Linux服务了。

首先讲一下关于其负载均衡的问题。一些网站为了实现负载均衡,可能会为其分配多个IP地址来实现负载均衡,是一种初级的负载方法,把网址映射到不同的IP地址上。还有一种从整体上的负载均衡技术,就是Anycast BGP,其原理类似CDN,它实现的功能是在全球不同地方去访问相同IP的DNS服务器的延迟都会很低,其实现的原理通俗来讲就是用同一个IP地址的DNS在物理上分布在全球。如何实现的呢,首先介绍一下其中的一个构成:BGP。目前全球的互联网路由都是以BGP路由协议来传播的。它把不同AS号的局域网连接成了互联网,使之能互相访问,其在全球互联网的选路规则一般是AS号最短的路径优先,但有很多种办法可以灵活控制。Anycast BGP的实现前提之一是发布某一IP的组织是要遍布全球的,它在全球各个节点通过BGP来发布这个IP地址,通过BGP的选路功能,世界各地的主机就可以通过各自运营商访问到离自己最近的这个IP的主机,实现低延迟访问。 并且也由此技术获得了抵抗DDoS攻击的能力。

下一个问题是为什么DNS根服务器只有13个?其实应该是有13组,每组都是用上述Anycast BGP技术部署到全世界。13这个数字其实是由UDP包大小决定的。但有人会问为什么不用TCP来传输呢?最主要的是对开销的计算。UDP包头长为8个字节,但TCP包头最小却是20字节,其间相差很大,还有一个原因是TCP是面向连接的,传输之前会进行三次握手,对传输DNS等信息来讲,这种开销实在太大了。第三点是UDP最大安全数据包大小是508字节,因为最开始建立协议时的安全的MTU设置为576(Internet标准MTU值),在此基础上减去最多60的IP头和UDP头,超过这个数就可能被路由器丢弃,所有根域名服务器都是以同一份根域文件返回给顶级域名服务器,其中只能存放13个根域名,所以这是很多因素共同影响的结果。

对于中国大陆为何没有根服务器这一点,查到的内容比较敏感不便多说。还是讲讲DNS over HTTPS 和 DNS over TLS等技术吧。DNS over HTTPS(DoH)是一个安全化的域名解析方式,它通过加密的HTTPS(HTTP+SSL/TLS)协议进行DNS解析请求,来避免原始DNS请求被恶意监听和修改,以此达到保护用户隐私和安全,其规范文件为RFC8484。如果你打开自己的浏览器设置或者软路由设置可能会看到这一项的设置。 在传统的DNS基于TCP或UDP协定,当时还未有安全性的需要,无法适应现代互联网中常见的污染等攻击。后来添加的电子签名等验证虽然能抵挡污染,但对于中间设备的监听仍没有抵挡能力。此技术的使用场景大致分为三种。第一是在应用程序中使用,如在浏览器中内建DoH,其可绕过操作系统的DNS来实现查询。第二种是在本地网络中的域名服务器中安装DoH代理,此方法中客户端继续使用传统方式查询,此方法对使用者透明。第三种是在本地主机安装DoH代理,此方案更加灵活,但缺点是部署比较麻烦。DNS over TLS(DoT)是通过TLS加密并打包DNS的安全协议,使用端口853,其规范文件为RFC 7858和RFC 8310。其也能防止中间人攻击以保护用户隐私。最后再介绍一个新的安全化域名解析方案,DNS over QUIC(DoQ),它使用QUIC协议进行DNS解析,防止中间人攻击和保证用户隐私。该协议与今年5月发布了RFC9259,但暂时未被广泛使用,Adguard是最先宣布启用DoQ服务器的厂商。其优势是QUIC协议本身能让队头堵塞问题得到解决,在比较差的网络环境中表现更好,而且速度比前两者更快一些。

如果想提高自己的Linux水平,可以看一看《Linux就该这么学》这本书,其中也有DNS相关章节,在线阅读网址:www.linuxprobe.com.

通过对这些问题的研究,让我对DNS有了更多更深刻的理解。网络安全绝不是简简单单就能做到的,其中涉及技术和社会环境等各种因素,特别是国内的特殊环境,谁也预料不到2014年的事故是否会再发生。但对于新技术的追求是每个人都能把握的,在此过程中也要注意不要掉入求新不求好的陷阱,适合自己的才是最好的。

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

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

相关文章

【Linux】- 一文秒懂shell编程

shell编程 1.1 Shell 是什么1.2 Shell 脚本的执行方式1.3 编写第一个 Shell 脚本2.1 Shell 的变量2.2 shell 变量的定义2.3 设置环境变量3.1 位置参数变量3.2 预定义变量4.1 运算符4.2 条件判断5.1 流程控制5.2 case 语句5.3 for 循环5.4 while 循环5.5 read基本语法6.1函数6.2…

API接口已经成为企业应用程序开发和管理的重要组成部分

API接口的价值 随着数字化时代的到来,API接口已经成为企业应用程序开发和管理的重要组成部分。API不仅是一种连接不同系统、提高数据流动性和促进协作的工具,而且还是一种重要的商业战略,可以为组织带来许多实际的价值。本文将探讨API接口的…

Android的本地数据

何为本地,即写完之后除非手动修改,否像嘎了一样在那固定死了 在实际安卓开发中,这种写死的概念必不可少,如控件的id,某一常量,Kotlin中的Val 当然,有些需求可能也会要求我们去写死数据&#x…

一文搞懂XaaS

云服务是指通过互联网按需提供给企业和客户的各种服务,大致可以分为IaaS、PaaS、SaaS三类,每一类又衍生出不同细分的云服务模式。本文介绍了当前已经提出的19种云服务模式,原文: The Comprehensive Concept of IaaS, PaaS, SaaS, AaaS, BaaS,…

基于STM32,TB6612,TCRT5000的简易红外循迹小车

提醒:本文章只叙述此小车相关大概内容(如模块的设置,C语言基础实现等),单片机详细教学不涉及。 摘要 循迹小车是学习单片机的“地基”,它能够让初学者认识单片机内部硬件结构及其功能,熟悉单片机…

安装RabbitMQ的各种问题(包括已注册成windows服务后,再次重新安装,删除服务重新注册遇到的问题)

一、安装Erlang(傻瓜式安装) 安装完成之后,配置环境变量: 1.新建系统变量名为:ERLANG_HOME 变量值为erlang安装地址 2. 双击系统变量path,点击“新建”,将%ERLANG_HOME%\bin加入到path中。 …

学习笔记——Java入门第一季

1.1 Java的介绍与前景 Java语言最早期的制作者:James Gosling(詹姆斯高斯林) 1995年5月23日,Sun Microsystems公司宣布Java语言诞生。 1.2 Java的特性与版本 跨平台 开源(开放源代码) Java代码&#xff…

酷开系统游戏空间,开启大屏娱乐新玩法

在这个充满科技感和无限创意的时代,游戏已经成为我们生活的一部分。而随时着科技的不断发展,以及游戏爱好者的游戏需求在不断提高,促使游戏体验也向更加丰富多彩的方向发展。显然,酷开科技早已经认识到游戏发展的新蓝图&#xff0…

金鸣识别名片识别模块 ,名片扫描仪的神仙“伴侣”

名片扫描仪是现代办公中常见的设备,其作用是将纸质名片转换为电子格式并进行识别。在实现这一功能方面,使用自带OCR功能和金鸣识别两种方式均具有各自的优势。 一方面,自带OCR功能的名片扫描仪具有便捷性和即时性的优势。通过设备内置的OCR技…

国产信创服务器如何进行安全可靠的文件传输?

信创,即信息技术应用创新,2018年以来,受“华为、中兴事件”影响,国家将信创产业纳入国家战略,并提出了“28n”发展体系。从产业链角度,信创产业生态体系较为庞大,主要包括基础硬件、基础软件、应…

SpringMVC综合案例

目录 一、SpringMVC常用注解 二、传递参数 2.1 基础类型String 2.2 复杂类型 2.3 RequestParam 2.4 PathVariable 2.5 RequestBody 2.6 RequestHeader 2.7 请求方法 三、返回值 3.1 void 3.2 String 3.3 StringModel 3.4 ModelAndView 四、页面跳转 4.1 转发 4…

iPhone用户的价值是安卓用户的4倍?难以置信,研究发现竟是7.4倍

据Asymco机构分析师Horace Dediu发布的最新报告,苹果用户在应用上的平均支出是安卓用户的7.4倍,远高于此前提出的4倍观点。这意味着,尽管安卓用户数量是iPhone用户的两倍,但iPhone应用商店开发者的收入是谷歌PlayStore的两倍。 在…

淘宝销量展示方式变更背后的逻辑

淘宝销量展示方式发生了调整,平台于8月16日将商品详情销量展示表达由【月销**件】全部换成展示【已售**件】,将30天销量改成了近365天销量。 【已售**件】统计口径:统计近365天支付的商品件数,数据更新请关注24-48小时。其中涉及销…

数据库模式迁移工具的演进:CLI,GUI,集成式协作数据库平台

数据库模式迁移可能是应用程序开发中最具风险的领域,它困难、有风险且令人痛苦。数据库模式迁移工具的存在就是为了减轻这些痛苦,并且已经取得了长足的进步:从基本的CLI工具到GUI工具,从简单的SQL GUI客户端到集成式协作数据库平台…

PROSOFT PTQ-PDPMV1网络接口模块

通信接口:PROSOFT PTQ-PDPMV1 网络接口模块通常配备了多种通信接口,以便与不同类型的设备和网络进行通信。常见的接口包括以太网、串行端口(如RS-232和RS-485)、Profibus、DeviceNet 等。 协议支持:该模块通常支持多种…

《向量数据库指南》——AI原生向量数据库Milvus Cloud 2.3 新功能ScaNN 索引和Iterator

ScaNN 索引 Milvus 目前支持了 Faiss 中的 FastScan 算法,在各项 benchmark 中有着不俗的表现,对比 HNSW 有 20% 左右提升,约为 IVFFlat 的 7 倍,同时构建索引速度更快。ScaNN 在算法上跟 IVFPQ 比较类似,聚类分桶,然后桶里的向量使用 PQ 做量化,区别是 ScaNN 对于量化比…

ATC模型转换动态shape问题案例

ATC(Ascend Tensor Compiler)是异构计算架构CANN体系下的模型转换工具:它可以将开源框架的网络模型(如TensorFlow等)以及Ascend IR定义的单算子描述文件转换为昇腾AI处理器支持的离线模型;模型转换过程中&a…

【C++】动态内存管理

【C】动态内存管理 new和delete用法内置类型自定义类型抛异常定位new 刨析new和delete的执行与实现逻辑功能执行顺序newdelete 功能实现operator new与operator delete malloc free与new delete的总结 在我们学习C之前 在C语言中常用的动态内存管理的函数为: mallo…

与数据库性能作斗争:间歇性超时问题

今年早些时候,当我们与数据库互动时,我们的应用程序在两周的时间里出现了间歇性的超时问题。 尽管我们尽了最大的努力,但我们不能立即确定一个明确的原因;我们并没有进行任何明显改变数据库使用方式的代码更改,也没有…

SSL证书只有收费的吗?有没有免费使用的?

首先明白SSL证书是什么SSL英文全称:英文全称: Secure Socket Layer Certificate,中文全称:安全套接字层证书。 SSL是一种由数字证书颁发机构(CA) 签发的数字证书。它用于建立安全的加密连接,确保通过网络传输的数据在客户端和服务器之间的安全性和完整性…