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

在国内,关于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.hqwc.cn/news/101668.html

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

相关文章

stable diffusion实践操作-常见lora模型介绍

系列文章目录 本文专门开一节写Lora相关的内容,在看之前,可以同步关注: stable diffusion实践操作 文章目录 系列文章目录前言一、什么是lora?1.1 lora 定义1.2 lora的基本原理1.2 通过分层控制lora 二、作用:2.1 复刻人物特征2…

教育培训小程序的设计与功能解析

随着互联网的发展,线上教育逐渐成为一种趋势,越来越多的人开始选择在线学习。而搭建一个适合自己的线上教育小程序,可以为教育机构或个人提供更好的教学和学习体验。在本文中,我们将介绍如何通过一个第三方制作平台来搭建在线教育…

【FPGA零基础学习之旅#12】三线制数码管驱动(74HC595)串行移位寄存器驱动

🎉欢迎来到FPGA专栏~三线制数码管驱动 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大家能指…

IBM Spectrum LSF Explorer 为要求苛刻的分布式和任务关键型高性能技术计算环境提供强大的工作负载管理

IBM Spectrum LSF Explorer 适用于 IBM Spectrum LSF 集群的强大、轻量级报告解决方案 亮点 ● 允许不同的业务和技术用户使用单一解决方案快速创建和查看报表和仪表板 ● 利用可扩展的库提供预构建的报告 ● 自定义并生成性能、工作负载和资源使用情况的报…

springboot初试elasticsearch

引入依赖 elasticsearch的依赖版本与你elasticsearch要一致 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency> 索引库的操作 创建索引库 impo…

跳槽面试:如何转换工作场所而不失去优势

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

c++ noexcept

引入noexcept原因&#xff1a; 异常规范的检查是在运行期而不是编译期&#xff0c;因此程序员不能保证所有异常都得到了 catch 处理。由于第一点的存在&#xff0c;编译器需要生成额外的代码&#xff0c;在一定程度上妨碍了优化。模板函数中无法使用。赋值函数、拷贝构造函数和…

小红书笔记爬虫

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

【网络安全带你练爬虫-100练】第20练:数据处理-并写入到指定文档位置

目录 一、目标1&#xff1a;解码去标签 二、目标2&#xff1a;提取标签内内容 三、目标3&#xff1a;处理后的数据插入原位置 四、目标4&#xff1a;将指定的内容插入指定的位置 五、目标5&#xff1a;设置上下文字体格式 六、目标6&#xff1a;向多个不同位置插入不同的…

ClickHouse 存算分离改造:小红书自研云原生数据仓库实践

ClickHouse 作为业界性能最强大的 OLAP 系统&#xff0c;在小红书内部被广泛应用于广告、社区、直播和电商等多个业务领域。然而&#xff0c;原生 ClickHouse 的 MPP 架构在运维成本、弹性扩展和故障恢复方面存在较大局限性。为应对挑战&#xff0c;小红书数据流团队基于开源 C…

嵌入式开发-11 Linux下GDB调试工具

目录 1 GDB简介 2 GDB基本命令 3 GDB调试程序 1 GDB简介 GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具。 一般来说&#xff0c;GDB主要帮助你完成下面四个方面的功能&#xff1a; 1、启动你的程序&#xff0c;可以按照你的自定义的要求随心所欲的运行程序&#…

C语言之初阶总结篇

目录 NO.1 NO.2 NO.3 NO.4 NO.5 NO.6 NO.7 NO.8 NO.9 NO.10 NO.11 NO.12.概念tips NO.13.求最小公倍数 NO.14.最大公因数 NO.15.输入读取字符串 NO.16.倒置字符串 今天是一些C语言题目&#xff0c;最近天气炎热&#xff0c;多喝水。 NO.1 下面程序执行后&am…