即时通讯开发之详解TCP/IP中的DNS 域名系统

news2024/12/22 19:35:36

前面已经提到了访问一台机器要靠 IP 地址和 MAC 地址,其中,MAC 地址可以通过 ARP 协议得到,所以这对用户是透明的,但是 IP 地址就不行,无论如何用户都需要用一个指定的 IP 来访问一台计算机,而 IP 地址又非常不好记,于是就出现了 DNS 系统。

DNS 系统介绍

DNS 的全称是 Domain Name System。它负责把 FQDN(就是以"."分隔结尾的名字)翻译成一个 IP。最初的 DNS 系统使用的是一个 巨大的 hosts.txt 文件(很吃惊,用 这个就好使了?),可是一段时间以后,开发这就不得不用数据库来代替 hosts.txt 文件,最终发展到 了现在的分布式数据库。

从书中的143页可以看到,DNS 系统是一个巨大的树,最上方有一个无名树根,下一层是 arpa,com,edu,gov,int,mil,us, cn。等等, 其中 arpa,是域名反解析树的顶端;而 com,edu,等域名本来只用在美国(这就是技术特权啊),但是现在几乎全世界通用;而 us, cn, 等叫做国家域。这个树里面的域名并不是统一管理的,网络信息中心(NIS)负责分配顶级域合委派其他制定地区域的授权机构。

一个独立管理的 DNS 子树叫做 zone,最常见的区域就是二级域名,比如说.com.cn。我们还可以把这个二级域名给划分成更小的 区域。

DNS 系统是一个分布式的数据库,当一个数据库发现自己并没有某查询所需要的数据的时候,它将把查询转发出去,而转发的目 的地通常是根服务器,根服 务器从上至下层层转发查询,直到找到目标为止。DNS 还有一个特点就是使用高速缓存,DNS 把查询过 的数据缓存在某处,以便于下次查询时使用。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询

DNS 协议

DNS 报文定义了一个既可以查询也可以响应的报文格式。对各个字段简单解释如下:

最前面的16个 bit 唯一的标示了问题号码,用于查询端区别自己的查询。

紧接着的16个 bit 又可以做进一步的细分,标示了报文的性质和一些细节,比如说是查询报文还是响应报文,需要递归 查询与否(一般服务器都支持递归查询,而且不需要任何设置,BIND 就是这样)

查询问题后面有查询类型,包括 A,NS,CNAME,PTR,HINFO,MX,如果熟悉 BIND 的话,就知道在 zong 的配置 文件里面,每一条记录都记载了各自的类型,比如 A 就是 IP 地址,NS 就是名字服务器。

响应报文可以回复多个 IP,也就是说,域名可以和多个 IP 地址对应,并且有很多 CNAME。

反向查询

正向查询指的是通过域名得到 IP 的查询,而反向查询就是通过 IP 得到域名。例如用 host 命令,host ip 就可以得到服务器的域名, host domainName 就得到 IP。

稍微知道一点数据结构的人都能意识到,在正向查询的域里面做反向查询,其做法只有遍历整个数据集合----对于 DNS 来说,那 就是遍历整个数据库, 这将带来巨大的负担,所以 DNS 采取了另一种方法,使用另一棵子树来维护 IP-〉域名的对应表。这个子树的根节点是 in-addr.arpa,而一个 IP 例如192.168.11.2)所具有的 DNS 地址就是 2.11.168.192.in-addr.arpa(ip 倒置)。在 DNS 系统里面,一个 反向地址对应一个 PTR 纪录(对应 A 纪录),所以反向查询又叫 做指针(PTR)查询。

其他问题的讨论

1DNS 服务器高速缓存

BIND9默认是作为一个高速缓存服务器,其将所有的查询都转交到根服务器去,然后得到结果并放在本地的缓冲区,以加快查询

速度。如果有兴趣可以安装一个 BIND9来尝试一下。而自己定义的 zone 则可以规定其在缓存中的时间,一般是1天(就是配置文件中 的1D)。

2用 UDP 还是 TCP

DNS 服务器支持 TCP 和 UDP 两种协议的查询方式,而且端口都是53。而大多数的查询都是 UDP 查询的,一般需要 TCP 查询的 有两种情况:

当查询数据多大以至于产生了数据截断(TC标志为1),这时,需要利用TCP的分片能力来进行数据传输(看TCP的相关章节)。

当主(master)服务器和辅(slave)服务器之间通信,辅服务器要拿到主服务器的 zone 信息的时候。

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

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

相关文章

MYSQL作业

MySQL 作业一、填空题 1、交叉连接查询返回的结果是被连接的两张数据表中所有数据行的_笛卡尔积___ 。2、左连接查询的结果包括 LEFT JOIN 子句中左表的_所有记录___,以及右表中满足连接条件的记录。3、内连接查询的语法中,ON 用于指定查询的__匹配条件_…

从0开始学python -16

Python3 列表-1 序列是 Python 中最基本的数据结构。 序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。 Python 有 6 个序列的内置类型,但最常见的是列表和元组。 列表都可以…

六西格玛,为质量人的职业发展保驾护航

常常会有做质量的人来问优思学院:在质量界混,应学什么好? 大部分时候,我都会提议他們:有空就要学六西格玛吧! 他会回应:六西格玛感觉太难懂了,学了也没什么用啊,哪有那…

tensorflow框架之会话、张量、变量OP

2.3 会话、张量、变量OP 学习目标 目标 应用sess.run或者eval运行图程序并获取张量值应用feed_dict机制实现运行时填充数据应用placeholder实现创建占位符知道常见的TensorFlow创建张量知道常见的张量数学运算操作说明numpy的数组和张量相同性说明张量的两种形状改变特点应用…

前言技术之OAuth2.0

1、什么是OAuth2.0 OAuth2.0是目前使用非常广泛的授权机制,用于授权第三方应用获取用户的数据。 举例说明: 用户可以通过选择其他登录方式来使用gitee,这里就使用到了第三方认证。 OAuth 引入了一个授权层,用来分离两种不同的角…

记录--手把手教学,实现一个优雅的图片预览

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在我们开发项目中,经常会遇到预览图片的需求。也就是点击图片,会全屏显示该图片。需求很简单,但是如何让实现更优雅就需要花点心思了。 最终效果图 基础版本 实现方…

从 Issue 看 El-Table 源码,给 Element+ 提 Pr 的背后竟如此坎坷

Element Plus大家应该都不陌生,用过 el-table 的伙伴更是多数,毕竟搞ToB业务 table 必不可少,但是真正翻看过源码的应该还是少数,有没有对其内部实现怀揣着一点点好奇呢?笔者就是因为怀揣着好奇,所以才走上…

什么是Intel Elkhart Lake?专用于物联网的处理器系列

随着世界向工业4.0过渡,边缘计算应用程序对实时推理、连接和数据遥测的更高性能和更低功耗处理的需求激增,并加强了加固。物联网和边缘计算的爆炸性增长造成了上一代处理器无法维持的性能瓶颈和限制。英特尔最新推出的Atom x6000 E系列、奔腾和赛扬N&…

IDEA无法使用Git Pull的问题

一、问题描述 我们开发项目时,经常会和第三方接口打交道,有些第三方项目为了安全起见,会把项目部署在"内网"环境,不对外暴露,通常会提供VPN代理才能访问到资源。 而在项目中我就因为这个而遇到了一个问题&am…

RK3568平台开发系列讲解(Linux系统篇)什么是Linux文件

🚀返回专栏总目录 文章目录 一、文件描述符二、常用文件 I/O 操作和函数2.1、open2.2、close2.3、read2.4、write沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 Linux 把大部分系统资源当作文件呈现给用户,用户只需按照文件 I/O 的方式,就能完成数据的输入输出。…

Diffusion 扩散模型(DDPM)详解及torch复现

文章目录torch复现第1步:正向过程噪声调度器Step 2: 反向传播 U-NetStep 3: 损失函数采样Training我公众号文章目录综述:https://wangguisen.blog.csdn.net/article/details/127065903 保姆级讲解 Diffusion 扩散模型(DDPM) ht…

python面向对象:入门

python面向对象:入门 文章目录python面向对象:入门一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.创建类和对象2.构造方法3.类中的实例方法一、实验目的 掌握类的基本使用 二、实验原理 面向过程:根据业务逻辑从上到下写…

Win10 BCD文件损坏怎么修复?

在Windows 10操作系统中,BCD代表引导配置数据(Boot Configuration Data),Windows运行时BCD将告诉Windows引导加载程序在哪里查找引导信息, 因此,它对成功地加载和运行操作系统是非常重要的。哪些情况下会导…

二叉树的前序遍历

题目144. 二叉树的前序遍历 - 力扣(LeetCode)本章我们来探讨运用二叉树中所学的知识解决本题。对二叉树仍有疑问的小伙伴可以点击下方链接哦。参考文献:(1条消息) 二叉树(三)_染柒_GRQ的博客-CSDN博客原理首先我们来回…

CyberBattleSim-(内网自动化渗透)研究分析

**01 **背景知识介绍 CyberBattleSim介绍 CyberBattleSim是一款微软365 Defender团队开源的人工智能攻防对抗模拟工具,来源于微软的一个实验性研究项目。该项目专注于对网络攻击入侵后横向移动阶段进行威胁建模,用于研究在模拟抽象企业网络环境中运行的…

基于蜣螂算法优化的核极限学习机(KELM)分类算法-附代码

基于蜣螂算法优化的核极限学习机(KELM)分类算法 文章目录基于蜣螂算法优化的核极限学习机(KELM)分类算法1.KELM理论基础2.分类问题3.基于蜣螂算法优化的KELM4.测试结果5.Matlab代码摘要:本文利用蜣螂算法对核极限学习机(KELM)进行优化,并用于分类1.KELM理…

R语言贝叶斯方法在生态环境领域中的应用

贝叶斯统计已经被广泛应用到物理学、生态学、心理学、计算机、哲学等各个学术领域,其火爆程度已经跨越了学术圈,如促使其自成统计江湖一派的贝叶斯定理在热播美剧《The Big Bang Theory》中都要秀一把。贝叶斯统计学即贝叶斯学派是一门基本思想与传统基于…

STM32CubeMx使用FreeRTOS搭建printf输出串口打印-----基于正点原子开发板阿波罗

文章目录STM32CubeMx使用FreeRTOS搭建printf输出串口打印-----基于正点原子开发板阿波罗1.输入目标芯片2.选择RCC时钟3.配置调试模式4.USART的配置5.配置中断6.printf的重定向功能7.代码添加8.修改中断函数9.添加全局变量10.增加FreeRTOS支持11.在FreeRTOS中添加源码STM32CubeM…

【数学建模】数学建模中的常用工具推荐

前言 整理了几款我在建模比赛中需要准备的小工具,后续会随时不定期更新,以及完善内容,需要的小伙伴建议收藏一波~ [1] 公式编译器 Axmath(建议购买正版)mathtypeWord内置的公式编辑器 Axmath是国产的软件&#xff0…

pytorch安装(模式识别与图像处理课程实验)

pytorch安装(模式识别与图像处理课程实验)1、 打开cmd,创建torch虚拟环境。2、 激活创建的torch虚拟环境2.1、 进入pytorch官网,复制如下的命令,进行pytorch的安装2.2、测试安装是否成功3、 通过pip命令安装pytorch&am…