《TCP/IP详解 卷一》第11章 DNS

news2025/2/23 11:37:52

目录

11.1 引言

11.2 DNS名称空间

11.2.1 DNS命名语法

11.3 名称服务器和区域

11.4 DNS缓存

11.5 DNS 协议

11.5.1 DNS消息格式

11.5.2 DNS 扩展格式(EDNS0)

11.5.3 UDP 或 TCP

11.5.4 问题(查询)和区域区段格式

11.5.5 回答、授权和额外信息区段格式

11.5.6 资源记录类型

11.5.7 动态更新(DNS UPDATE)

11.5.8 区域传输和DNS通知

11.6 排序列表、循环和分离DNS

11.7 开放DNS服务器和DynDNS

11.8 透明度和扩展性

11.9 从 IPv4 向 IPv6 转换 DNS

11.10 LLMNR 和 mDNS

11.11 LDAP

11.12 与DNS相关的攻击

11.13 总结


11.1 引言

DNS:Domain Name System

host name可作为域名。

DDNS(Dynamic Domain Name System):

        作用:

                即使主机IP改变时,也可用用固定域名来访问。

        实现原理:

                IP改变时,主机DDNS客户端将新IP通知服务器,DDNS服务器就创建新IP-域名映射。

        使用场景:

                远程控制(如远程访问家中智能设备)。

花生壳网站可提供DDNS服务。

11.2 DNS名称空间

名称空间:name space

TLD:Top Level Domain,顶级域名,是域名体系中最高级别的域名,即域名的最右边。

TLD举例:

        国家代码顶级域名(ccTLD)如.cn,.us

        通用顶级域名(gTLD):如.com,.net,.edu

        新通用顶级域名(New gTLDs):如 .app,.blog,.shop

而根DNS服务器存储和管理这全球顶级域名(TLD)的域名服务器信息。

11.2.1 DNS命名语法

完全限定域名(FQDN):

        即完整域名,从顶级域名一直到主机名。

        唯一地标识互联网主机。

非限定域名:

        未指定完整域名结构的域名。结合默认域名后缀可生成完整域名。

        DHCP服务器有两个DHCP option用于下发默认域名后缀:

                默认域名扩展。(一个域名后缀)

                搜索列表。(多个域名后缀,逐一使用,直到DNS解析成功)

举例:

        用户输入vangogh,本地DNS添加后缀后转换为完整域名vangogh.cs.berkeley.edu.,然后进行DNS解析器。

FQDN完整域名:如www.net.in.turn.de.,从右向左解析。

标签不区分大小。

        如"example.com"、"EXAMPLE.COM"被DNS解析为相同IP。

11.3 名称服务器和区域

DNS服务器中管理单位为区域(zone),一个区域是DNS名称空间的一棵子树。

        如一个公司的DNS服务器,管理一颗子树,包括www.example.com、mail.example.com 等。

一个区域至少有两台DNS服务器:

        主服务器:负责处理对该区域中域名修改、更新和查询请求。数据是最新的。

        辅服务器:备份。

                备份方法:DNS区域传输功能。

11.4 DNS缓存

DNS服务器把DNS解析记录连同TTL一起给客户端。

该TTL值是该DNS记录在客户端的存活时间。当解析相同域名,无需再次向DNS服务器请求,降低互联网流量。

TTL过期后,清除该记录缓存。

TTL单位:秒。

Linux中名称服务缓存进程(Name Service Caching Daemon, NSCD)提供客户端缓存功能。

        配置文件为/etc/nscd.conf文件,包括:

                1. 缓存什么解析记录(DNS和其他服务)

                2. TTL等参数。

11.5 DNS 协议

DNS协议包括两个部分:

        DNS解析服务:

        区域传输:DNS服务器同步域名解析信息到其他服务器。

任播地址Anycast:

        发送到任播地址的数据会按照路由协议的距离方法,被路由到最近任播地址接口。

所以一组DNS服务器可使用相同任播地址,客户端就近使用,实现负载均衡和主辅备份。

DNS查询有两种类型:

        递归查询:

                DNS客户端向本地服务器查询。

                本地服务器向根服务器查询。

                根服务器向顶级服务器查询。

                        未完成解析之前客户端一直阻塞等待。

        迭代查询:

                DNS客户端向本地服务器查询。

                        本地服务器返回根服务器IP给客户端。

                DNS客户端向根服务器查询。

                        根服务器返回顶级服务器IP给客户端。

                反复。。。

大部分的DNS服务器是递归查询。

而根服务器和TLD服务器是迭代查询。

        如果使用递归查询时,主机会阻塞,导致互联网性能不佳。

11.5.1 DNS消息格式

RR:资源记录(Resource Record)

        是DNS服务器存储的域名信息。

最常用两种记录:

        A 记录(Address Record):域名到IPv4地址的映射。

        AAAA 记录(IPv6 Address Record):域名到IPv6地址的映射。

区域传输:从服务器从主DNS服务器处获取最新的域名区域数据,确各个服务器数据同步。

DNS报文类型有:

        DNS查询/响应:

        区域传输请求/响应:

        通知报文:主服务器向从服务器发送通知报文,告知从服务器更新域名信息。

        更新报文:允许客户端动态向DNS服务器添加、修改或删除记录。

授权服务器:

        如果DNS服务器不具备请求域名的解析信息,它会向授权服务器发送查询请求。

DNS报文格式:

事务ID:客户端设置,服务器返回时复制。用来匹配响应和查询。

标志字段:

        QR:消息类型,0(査询),1(响应)。

        Opcode:查询类型,0 (标准查询),4(通知),5(更新)

        AA:响应是否来自授权服务器。

        TC:响应是否被截断。

        RD:客户端期望递归查询。

        RA:DNS服务器是否支持递归查询。

        Z:保留位

        AD:信息已授权

        CD:禁用安全检查

        RCODE:表示响应状态,值0(响应正确),3 (响应出错,如名称差错或不存在域名)

每个域名由一系列标签组成。标签类型有两种:

        数据标签(data label):

                举例www.pearson.com的编码如下:

        压缩标签(compression label) :

                当多个标签中有相同字符时,可用来减少报文大小。

11.5.2 DNS 扩展格式(EDNS0)

DNS扩展机制:

        EDNS0:Extension Mechanisms for DNS version 0

        作用:

                支持更大DNS消息。

                传输额外选项信,如DNS(SEDNS安全)。

11.5.3 UDP 或 TCP

对于TCP和UDP来说,DNS端口号都是53。

DNS通常使用UDP封装。

一个DNS消息最多512字节。

预期响应长度超过512字节,但服务器只返回前512字节,此时会在响应中设置TC(被截断)标志。

该解析器可用TCP再次发出查询,此时就返回超过512字节消息,因为TCP可以MSS分段。

TCP MSS选项的作用:

        避免IP分段,降低开销,提高性能。

使用UDP封装DNS时,应用层应处理超时和重传。

11.5.4 问题(查询)和区域区段格式

问题区段:

        也就是查询区段。用于DNS查询报文。

        其中包含信息:

                需要查询的名称。

                查询类型:A是查询IPv4地址,AAAA是查询IPv6。

                查询类:值是1(互联网类),254(没有类),255(所有类)

11.5.5 回答、授权和额外信息区段格式

RR:资源记录,即DNS映射记录。

这三个区段就是RR的集合。用于DNS响应报文。

授权区段:

        当DNS服务器无法直接回答查询请求时,可指示客户端向授权区段中的服务器发送进一步的查询请求。

11.5.6 资源记录类型

即请求一个名称对应的什么资源:

RR类型                 解析对象

A                           IPv4地址

NS                        名称服务器

AAAA                    IPv6地址

IXFR                     增量区域传输

AXFR                    完全区域传输,TCP

11.5.7 动态更新(DNS UPDATE)

客户端通过UPDATE 报文地向DNS服务器添加、修改或删除资源记录。

11.5.8 区域传输和DNS通知

区域传输:从主服务器复制区域的一组RR到从服务器。保持多服务器区域内容同步

区域传输触发时机:

        定时器

        DNS NOTIFY消息

DNS NOTIFY消息作用:

        主DNS对某区域修改后,向辅DNS发送DNS NOTIFY 消息。

        辅DNS就会向主DNS发出Zone Transfer 请求。

区域传输两种方式:

        完整传输:内容大,使用TCP分段。

        增量传输:只传输更新条目,可能先用UDP,若响应消息太大,则切换到TCP。

11.6 排序列表、循环和分离DNS

若请求名称对应的主机有多个IP(内网IP,外网IP),服务器返回IP时如何排序?

        普遍情况: 基于请求报文中源IP或目的IP地址排序。

DNS循环:

        当多台服务器对应同一域名服务,可将DNS服务器配置为DNS循环,实现负载均衡。

        具体做法:每个DNS客户端请求域名时,DNS服务器交替返回这些 IP 地址。使得客户端每次请求都得到不同服务器IP地址,实现负载均衡。

        缺点:当记录被缓存时,该负载均衡效果不好。

分离DNS (split DNS):

        一种网络配置方案。

        允许企业用户访问内部资源时使用内部DNS服务器进行域名解析,而在访问外部资源时使用公共DNS 服务器。

        原理:通过查询报文的源/目的IP,返回特定资源记录集合。

        作用:

                内外网隔离:不允许用户通过公共DNS访问内部指定资源。减少内部资源受到外部攻击风险。

                提高DNS解析效率,优化网络性能。

                可在内网DNS上配置,限制对特定域名访问。提高网路安全。

11.7 开放DNS服务器和DynDNS

DDNS:即动态DNS,即使IP地址变动时,也可使用固定域名来访问。

原理:

        当IP地址变化时,DDNS客户端发送新IP地址给DDNS服务器。

        DDNS服务器再将新IP和域名更新带ISP DNS服务器中。

11.8 透明度和扩展性

扩展:实现新的RR类型。

11.9 从 IPv4 向 IPv6 转换 DNS

DNS64可将A记录转换为AAAA记录。并和IPv4/IPv6 NAT转换器一起工作,以允许只有IPv6的客户端访问IPv4网络的服务。

11.10 LLMNR 和 mDNS

这是两种局域网DNS协议。

LLMNR:

        即本地链路组播名称解析(Link-Local Multicast Name Resolution)

        非标协议,微软开发,Windows系统常用。

        使用组播通信,服务器使用UDP端口5355。

mDNS:

        组播DNS,multicast DNS

        标准协议, macOS 和 Linux系统常用。

        使用组播通信,使用UDP端口5353

        作用:

                是用于局域网内部DNS。

两者功能相同,如:

        局域网设备互相发现。

        局域网内部主机名解析。

区别:

        LLMNR用于IPv4,不支持IPv6。

        mDNS主要用于IPv6 网络中,同时支持IPv4和IPv6网络。

11.11 LDAP

LDAP:Lightweight Directory Access Protocol,轻量级目录访问协议

目前使用LDAPv3

LDAP服务器常用于在企业内部。

        用于保留目录信息,如位置、电话号码和组织单位,管理用户账户、服务。

11.12 与DNS相关的攻击

DNSSEC:DNS安全

DNS攻击:

        1. DoS攻击,使DNS服务器过载。

        2. 改变资源记录内容。

        3. 伪装成官方DNS服务器,回复假的资源记录,导致主机连接至错误IP地址(例如,银行的Web站点)

2001年DNS的重大DoS攻击:

        伪造大量各种源IP地址,请求AOL. COM的MX记录。导致响应流量定向到任何伪源IP处。

        而DNS请求是较小报文,然而响应较大(约20倍),这称为放大攻击。

MX记录:Mail Exchange记录,即请求邮件服务器域名对应IP。

DNS数据内容攻击:DNS服务器缓存内容被错误数据替代,导致客户端定向到伪服务器。

DNS Flood攻击解决方法:

        防火墙收到DNS请求,会代替DNS服务器响应DNS请求,并将TC标志(截断)位置1,要求DNS客户端以TCP方式发送DNS请求。

        如果客户端是真实源,会继续以TCP方式发送DNS请求。

        如果客户端是虚假源,则不会再以TCP方式发送DNS请求。

11.13 总结

下图是无DNS缓存时,DNS查询步骤:

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

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

相关文章

VR元宇宙的概念|VR体验店加盟|虚拟现实设备销售

VR元宇宙是一个结合了虚拟现实(Virtual Reality)和增强现实(Augmented Reality)等技术的概念,代表着一个虚拟的多维度世界。它是一个由数字化的空间构成的虚拟环境,可以通过虚拟现实设备进行交互和探索。 元…

常用网络协议的学习

TCP/IP TCP/IP的定义 TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)是互联网的基本协议,也是国际互联网络的基础。 TCP/IP 不是指一个协议,也不是 TCP 和 IP 这两个协议的合称…

逻辑电路集成块手册

还在查找74XX集成块的数据手册吗,还在找逻辑门电路的手册吗 不用找了,直接打开此电子书,查找就可以了,内部框图,真值表引脚序号都有DOWNLOAD:https://www.ti.com/lit/pdf/scyd013?keyMatchLOGIC%20POCKET%20DATA%20BOOK 失效直接上TI官方网站搜索logic pocket data book即可搜…

统计业务流量的毫秒级峰值 - 华为机试真题题解

考试平台: 时习知 分值: 200分(第二题) 考试时间: 两小时(共3题) 题目描述 业务模块往外发送报文时,有时会出现网卡队列满而丢包问题,但从常规的秒级流量统计结果看&…

基础内容哦!!!吴恩达deeplearning.ai:利用计算图求导(反向传播)

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏 文章目录 一个小型神经网络的例子利用计算图逐步计算价值函数J利用计算图求出价值函数的导数 计算图是深度学习中的一个关键概念,它也是Tensorflow等编程框架自动计算神经网络导…

小而巧的数字压缩算法:zigzag

阅读facebook开源的 RPC(Remote Procedure Call) 框架thrift源代码的时候,本来是在阅读框架,却不小心被 zigzag 这个钻石般闪耀的代码吸引。后来去百度搜索zigzag,却得到满屏图像相关的一个算法(看来起名字…

李沐动手学习深度学习——3.1练习

字写的有点丑不要介意 由于公式推导烦的要死,所以手写形式,欢迎进行讨论,因为我也不知道对错

HarmonyOS—端云一体化组件

概述 DevEco Studio还为您提供多种端云一体化组件。集成端云一体化组件后,您只需进行简单配置即可向应用用户提供登录、支付等众多功能。 登录组件 您可使用端云一体化登录组件向应用用户提供登录和登出功能,目前支持帐号密码登录、手机验证码登录、以…

在VMware中安装CentOS 7并配置Docker

VMware安装CentOS 7 一、介绍 该文章介绍如何使用启动U盘在虚拟机里面安装系统,虚拟机版本为VMware Workstation 16 pro,Linux版本为CentOS Linux release 7.9.2009 (Core)。 二、安装 1、创建虚拟机 点击创建新的虚拟机 选择典型就可以了&#xf…

【C#】忽略大小的替换字符串

结果 代码 string a"aAAAAAAaBBaaCC"; string b Strings.Replace(a, "a", "D", 1, -1, CompareMethod.Text);

【Python】Code2flow学习笔记

1 Code2flow介绍 Code2flow是一个代码可视化工具库,旨在帮助开发人员更好地理解和分析代码: 可以将Python代码转换为流程图,以直观的方式展示代码的执行流程和逻辑结构。具有简单易用、高度可定制化和美观的特点,适用于各种代码…

浅析扩散模型与图像生成【应用篇】(四)——Palette

4. Palette: Image-to-Image Diffusion Models 该文提出一种基于扩散模型的通用图像转换(Image-to-Image Translation)模型——Palette,可用于图像着色,图像修复,图像补全和JPEG图像恢复等多种转换任务。Palette是一种…

曲线的凹凸性与拐点【高数笔记】

1.什么是曲线的凹凸性 2.什么是曲线的拐点 3.拐点的特征 4.拐点与驻点有什么不同 5.拐点的表示方法与驻点有什么不一样 6.拐点与凹凸区间怎么求

Servlet 新手村引入-编写一个简单的servlet项目

Servlet 新手村引入-编写一个简单的servlet项目 文章目录 Servlet 新手村引入-编写一个简单的servlet项目一、编写一个 Hello world 项目1.创建项目2.引入依赖3.手动创建一些必要的目录/文件4.编写代码5.打包程序6.部署7.验证程序 二、更方便的处理方案(插件引入&am…

c++阶梯之内存管理

目录 1.c/c内存分布 2. C语言中的动态内存管理方式:malloc/calloc/realloc/free 3.c的内存管理方式 3.1 new/delete操作内置类型 3.2 new/delete操作自定义类型 3.3 实践中总结new与malloc的区别 1. new的用法比malloc更加的简单 2. new可以控制初始化&am…

C# OpenVINO Nail Seg 指甲分割 指甲检测

目录 效果 模型信息 项目 代码 数据集 下载 C# OpenVINO Nail Seg 指甲分割 指甲检测 效果 模型信息 Model Properties ------------------------- date:2024-02-29T16:41:28.273760 author:Ultralytics task:segment version&#…

遥感、航拍、影像等用于深度学习的数据集集合

遥感图像的纹理特征异常繁杂,地貌类型多变,人工提取往往存在特征提取困难和特征提取不准确的问题,同时,在这个过程中还会耗费海量的人力物力。随着计算力的突破、数据洪流的暴发和算法的不断创新,在具有鲜明“大数据”…

Python爬虫——Urllib库-上

这几天都在为了蓝桥杯做准备,一直在刷算法题,确实刷算法题的过程是及其的枯燥且枯燥的。于是我还是决定给自己找点成就感出来,那么Python的爬虫就这样开始学习了。 注:文章源于观看尚硅谷爬虫视频后笔记 目录 Urllib库 基本使…

Html零基础入门教程(非常详细)

文章目录 1.认识HTML2.html 框架3.HTML常见标签4.HTML语法特征5.列表 1.认识HTML html是超文本标记语言: 目前最新版本是html5,由w3c(万维网联盟)完成标准制定。 声明文档的类型是html5 超文本标记语言。 HTML ,全称“Hyper Text Markup Language(超文…

微信小程序图片展示淡入淡出纯WXSS实现,无需使用消耗性能的动画引擎

进入下面小程序可以体验效果: 以下代码的淡入淡出是切换图片的时候动画效果显示的。需要用其他方式,可以基于这个wxss修改即可 原理就是,图片默认样式的opacity 是 0,通过变量改变样式的opacity即可,然后需要有transi…