1.DNS
DNS 是计算机域名系统(Domain Name System 或Domain Name Service) 的缩写,它是由解析器以及域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。DNS使用TCP与UDP端口号都是53,主要使用UDP,服务器之间备份使用TCP。
- 域名解析过程:
-
- 当某个应用进程需要将主机名解析为IP地址时,该应用进程就调用解析程序,并成为DNS的一个客户,将待解析的域名放在DNS请求报文中,以UDP数据报方式发给本地域名服务器。本地域名服务器在查找域名后,将对应的IP地址放在回答的报文中返回。应用进程获得目的主机的IP地址后即可进行通信。
- 域名结构:
-
- 域名:任何一个链接在因特网上的主机或路由器,都拥有一个唯一的层次结构名字,该名字为域名。
- 域:名字空间中的一个可被管理的划分,可以继续划分为子域。
- 设计原则:域名的结构由若干个分量组成,各分量之间用点隔开,如:….三级域名.二级域名.顶级域名
-
- 每一级域名都由英文字母和数字组成(不超过63个字符,不区分大小写字母),除连字符外不能使用其他标点符号。
- 类别最低的域名写在最左边,级别最高的顶级域名写在最右边
- 完成的域名不超过255个字符。
- 域名的层次结构如图所示

2.DNS的报文格式
DNS定义了一个用于查询和响应的报文格式。这个报文由12字节长的首部和4个长度可变的字段组成

- 标识字段:由客户程序设置并由服务器返回结果。客户程序通过他来确定响应与查询是否匹配。
- 标志字段:16bit的标志字段被划分为若干子段,如图所示
-
- QR:0表示查询报文,1表示响应报文
- opcode:0标准查询,1反向查询,2服务器状态请求。
- AA:表示“授权回答”,该名字服务器是授权于该域的。
- TC:表示“可截断的”,使用UDP时,它表示当应答的总长度超过512字节时, 只返回前512个字节。
- RD:表示“期望递归”。这个表示告诉名字服务器必须处理这个查询,也称为一个递归查询。
- RA:表示“可用递归”。如果名字服务器支持递归查询,则在相应中将该比特设置为1。
- zero:3bit为0
- rcode:返回码字段。0为没有差错,3名字差错。
- 问题部分
-
- 问题部分中每个问题的格式如图所示,通常只有一个问题:
- 查询名是要查找的名字,它是一个或多个标识符的序列。
- 每个问题有一个查询类型,而每个相应也有一个类型。大约有20个不同的类型只,其中有一部分已经过时,最常用的查询类型是A类型,表示期望获得查询名的IP地址。
- DNS报文最后三个字段:回答字段、授权字段和附加信息字段,均采用一种称为资源记录RR的相同格式。如图所示:
-
- 域名是记录中资源数据对应的名字
- 类型说明RR的类型码
- 生存时间是客户程序保留该资源记录的秒数
为了减少Internet上的DNS的通信量,所有的名字服务器均使用高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2012-08-01 基于jQuery和Wijmo的新一代Web控件
2012-08-01 HTML5应用框架 SproutCore
2012-08-01 以简求快 Java快速开发框架LML配置及实例源码
2012-08-01 MongoDB学习笔记(索引) Posted on 2012-08-01 11:
2012-08-01 SQL Server 2012 安装杂谈
2012-08-01 ASP.NET开发工具整理第一季
2012-08-01 什么使我们的网站变慢?