计算机网络学习07(DNS域名系统详解)
DNS
(Domain Name System)域名管理系统,是当用户使用浏览器访问网址之后,使用的第一个重要协议。DNS 要解决的是域名和 IP 地址的映射问题。
在实际使用中,有一种情况下,浏览器是可以不必动用 DNS 就可以获知域名和 IP 地址的映射的。浏览器在本地会维护一个hosts
列表,一般来说浏览器要先查看要访问的域名是否在hosts
列表中,如果有的话,直接提取对应的 IP 地址记录,就好了。如果本地hosts列表内没有域名-IP 对应记录的话,那么 DNS 就闪亮登场了。
目前 DNS
的设计采用的是分布式、层次数据库结构
,DNS 是应用层协议,基于 UDP
协议之上,端口为 53
。
DNS 服务器自底向上可以依次分为以下几个层级(所有 DNS 服务器都属于以下四个类别之一):
- 根 DNS 服务器。根 DNS 服务器提供 TLD 服务器的 IP 地址。目前世界上只有 13 组根服务器,我国境内目前仍没有根服务器。
- 顶级域 DNS 服务器(TLD 服务器)。顶级域是指域名的后缀,如com、org、net和edu等。国家也有自己的顶级域,如uk、fr和ca。TLD 服务器提供了权威 DNS 服务器的 IP 地址。
- 权威 DNS 服务器。在因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的 DNS 记录,这些记录将这些主机的名字映射为 IP 地址。
- 本地 DNS 服务器。每个 ISP(互联网服务提供商)都有一个自己的本地 DNS 服务器。当主机发出 DNS 请求时,该请求被发往本地 DNS 服务器,它起着代理的作用,并将该请求转发到 DNS 层次结构中。严格说来,不属于 DNS 层级结构。
1、DNS 工作流程
以下图为例,介绍 DNS 的查询解析过程。DNS 的查询解析过程分为两种模式:
- 迭代
- 递归
下图是实践中常采用的方式,从请求主机到本地 DNS 服务器的查询是递归的,其余的查询时迭代的。
现在,主机cis.poly.edu想知道gaia.cs.umass.edu的 IP 地址。假设主机cis.poly.edu的本地 DNS 服务器为dns.poly.edu,并且gaia.cs.umass.edu的权威 DNS 服务器为dns.cs.umass.edu。
- 首先,主机cis.poly.edu向本地 DNS 服务器dns.poly.edu发送一个 DNS 请求,该查询报文包含被转换的域名gaia.cs.umass.edu。
- 本地 DNS 服务器dns.poly.edu检查本机缓存,发现并无记录,也不知道gaia.cs.umass.edu的 IP 地址该在何处,不得不向根服务器发送请求。
- 服务器注意到请求报文中含有edu顶级域,因此告诉本地 DNS,你可以向edu的 TLD DNS 发送请求,因为目标域名的 IP 地址很可能在那里。
- 本地 DNS 获取到了edu的 TLD DNS 服务器地址,向其发送请求,询问gaia.cs.umass.edu的 IP 地址。
- edu的 TLD DNS 服务器仍不清楚请求域名的 IP 地址,但是它注意到该域名有umass.edu前缀,因此返回告知本地 DNS,umass.edu的权威服务器可能记录了目标域名的 IP 地址。
- 这一次,本地 DNS 将请求发送给权威 DNS 服务器dns.cs.umass.edu。
- 终于,由于gaia.cs.umass.edu向权威 DNS 服务器备案过,在这里有它的 IP 地址记录,权威 DNS 成功地将 IP 地址返回给本地 DNS。
- 最后,本地 DNS 获取到了目标域名的 IP 地址,将其返回给请求主机。
除了迭代式查询,还有一种递归式查询如下图,具体过程和上述类似,只是顺序有所不同。
另外,DNS 的缓存位于本地 DNS 服务器。由于全世界的根服务器甚少,只有 400 多台,分为 13 组,且顶级域的数量也在一个可数的范围内,因此本地 DNS 通常已经缓存了很多 TLD DNS 服务器,所以在实际查找过程中,无需访问根服务器。根服务器通常是被跳过的,不请求的。
2、DNS 报文格式
DNS 的报文格式如下图所示:
DNS 报文分为查询和回答报文,两种形式的报文结构相同。
- 标识符。16 比特,用于标识该查询。这个标识符会被复制到对查询的回答报文中,以便让客户用它来匹配发送的请求和接收到的回答。
- 标志。1 比特的”查询/回答“标识位,0表示查询报文,1表示回答报文;1 比特的”权威的“标志位(当某 DNS 服务器是所请求名字的权威 DNS 服务器时,且是回答报文,使用”权威的“标志);1 比特的”希望递归“标志位,显式地要求执行递归查询;1 比特的”递归可用“标志位,用于回答报文中,表示 DNS 服务器支持递归查询。
- 问题数、回答 RR 数、权威 RR 数、附加 RR 数。分别指示了后面 4 类数据区域出现的数量。
- 问题区域。包含正在被查询的主机名字,以及正被询问的问题类型。
- 回答区域。包含了对最初请求的名字的资源记录。在回答报文的回答区域中可以包含多条 RR,因此一个主机名能够有多个 IP 地址。
- 权威区域。包含了其他权威服务器的记录。
- 附加区域。包含了其他有帮助的记录。
3、DNS 记录
DNS 服务器在响应查询时,需要查询自己的数据库,数据库中的条目被称为资源记录(Resource Record,RR)。RR 提供了主机名到 IP 地址的映射。RR 是一个包含了Name, Value, Type, TTL四个字段的四元组。
TTL是该记录的生存时间,它决定了资源记录应当从缓存中删除的时间。
Name和Value字段的取值取决于Type:
- 如果Type=A,则Name是主机名信息,Value 是该主机名对应的 IP 地址。这样的 RR 记录了一条主机名到 IP 地址的映射。
- 如果 Type=AAAA (与 A 记录非常相似),唯一的区别是 A 记录使用的是 IPv4,而 AAAA 记录使用的是 IPv6。
- 如果Type=CNAME (Canonical Name Record,真实名称记录) ,则Value是别名为Name的主机对应的规范主机名。Value值才是规范主机名。CNAME 记录将一个主机名映射到另一个主机名。CNAME 记录用于为现有的 A 记录创建别名。下文有示例。
- 如果Type=NS,则Name是个域,而Value是个知道如何获得该域中主机 IP 地址的权威 DNS 服务器的主机名。通常这样的 RR 是由 TLD 服务器发布的。
- 如果Type=MX ,则Value是个别名为Name的邮件服务器的规范主机名。既然有了 MX 记录,那么邮件服务器可以和其他服务器使用相同的别名。为了获得邮件服务器的规范主机名,需要请求 MX 记录;为了获得其他服务器的规范主机名,需要请求 CNAME 记录。
计算机网络学习07(DNS域名系统详解)相关推荐
- DNS(域名系统)详解
目录 1.引言 2.DNS是什么 3.DNS提供的服务 4.其他应用层协议使用DNS的过程: 5.集中式DNS服务的缺点: 6.分布式层次式数据库 7.DNS查询方式 8.DNS缓存 9.DNS记录和 ...
- 计算机网络应用层(二):DNS协议详解
DNS协议详解 前言 DNS协议概述 DNS工作原理 DNS缓存 DNS记录和报文 资源记录 DNS报文 总结 前言 DNS是计算机网络中应用层的一个协议,可能很多同学碰到过DNS被劫持的情况,我们现 ...
- 计算机网络: IP地址,子网掩码,默认网关,DNS服务器详解
楔子: 以Windows系统中IP地址设置界面为参考(如图1), IP地址, 子网掩码, 默认网关 和 DNS服务器, 这些都是什么意思呢? 学习IP地址的相关知识时还会遇到网络地址,广播地址,子网等 ...
- IP地址,子网掩码,默认网关,DNS服务器详解
IP地址,子网掩码,默认网关,DNS服务器详解 为了更深入的学习TCP/IP协议,最近看了不少有关资料,收集整理记录如下,以备后面的使用和方便各位学习: IP地址,子网掩码,默认网关,DNS服务器是什 ...
- ELK学习笔记之Logstash详解
0x00 Logstash概述 官方介绍:Logstash is an open source data collection engine with real-time pipelining cap ...
- linux下DNS配置详解
linux下DNS配置详解 DNS 是域名系统 (Domain Name Server) 的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务.在Internet上域名与IP地址之间是一一对应的 ...
- Python基础学习之 os 模块详解
Python基础学习之 os 模块详解 文章目录 Python基础学习之 os 模块详解 1. 路径操作 1.1 os.chdir(),切换当前工作目录: 1.2 os.getcwd(),返回工作目录 ...
- 局域网网站服务器dns设置,内网安装配置DNS服务器详解_实现局域网用域名访问...
内网架设DNS服务器详解 适用环境: 局域网内用IIS建了一个网站,通过ip访问太麻烦,想在内部实现用域名访问 . http://192.168.1.107 是我建在内网的一个站 我们要实现的就是在 ...
- 实现一个域名对应多个IP地址和DNS优缺点详解!
实现一个域名对应多个IP地址和DNS优缺点详解! 1.DNS定义: DNS(Domain Name System)是因特网的一项服务,它作为域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访 ...
最新文章
- java qq登陆api_java方式接入QQ登录
- StringBuffer、StringBuilder区别以及Synchronized原理
- STL中各容器和适配器类的定义
- 11、doCreateBean中的initializeBean
- HBuilderX是什么
- js 判断字符是否以汉字开头
- Named Return Value Optimization (具名返回值优化)
- 高通骁龙430系列-MSM8937 ( Cortex-A53架构)
- 指纹匹配算法matlab,指纹识别算法matlab程序
- 开源电子书项目FBReader初探(六)
- 物联网技能竞赛DAY1
- 部件mscomctl_mscomctl.ocx下载_mscomctl.ocx官方下载【32位64位】-太平洋下载中心
- APP后台服务器阿里云Win系统服务器搭建的方法
- 华为浏览器html页样式没了,华为TE40web页面无发登录如何解决?
- 研究区域内测高卫星数据选取(pass)--以T/P-Jason1/2/3为例
- 引文信件和地址的写法!
- 百天记忆-数字编码记忆
- MySQL创建数据库并指定编码格式和校验集
- oracle数据库的基本教程 pdf,Oracle数据库技术基础教程 PDF 下载
- python TCP套接字服务器v1.1-新增服务端命令功能及修改bug(socket+PyQt5)