DNS小述

小引

当我们在浏览器中输入一个Url,并按下回车时,会经历以下几步: 1、解析出url中的域名 2、通过DNS服务将域名转化为IP地址 3、解析出url中的端口,通过IP地址和端口与对应的计算机建立TCP链接 4、在TCP链接上进行应用通信 5、关闭链接 第二步就是今天的主题

DNS简介

DNS全称是Domain Name System,中文是域名系统。首先它是一个分布式数据库,由分层的DNS服务器组成;其次,它是一个应用层协议,使得主机能够通过这个协议来查询分布式数据库,DNS协议运行在UDP之上,使用53号端口。

四种DNS服务器

  • 根DNS服务器:全球有13个根DNS服务器(每个服务器并不是单机,为了提高安全性可用性,每“个”根DNS服务器其实是一个服务器网络),记录了顶级域DNS服务器的IP地址列表。
  • 顶级域DNS服务器:这些服务器负责顶级域名,如com、org、net、cn等等。记录了对应顶级域名下的域对应的权威DNS服务器的IP地址(或者是可以获取到这个权威DNS服务器IP地址的中间服务器地址)
  • 权威DNS服务器:这个服务器一般在所查询主机拥有者手里或者在服务提供商手里,提供具体域名到IP的映射记录。
  • 本地DNS服务器:每个机构比如大学、小区、公司一般都有自己的一个本地DNS服务器,它一般是这个局域网下计算机默认的首位DNS服务器,主要就是缓存从以上三种服务器中得到的资源记录,减少DNS解析的步骤。

解析步骤

1、首先查询本地hosts文件中是否可以解析,如果不可以则向本地DNS服务器请求解析。 2、本地DNS服务器如果缓存了请求的域名,则直接返回它的IP;如果没有缓存,则向根DNS服务器请求解析,根服务器返回对应的顶级域DNS服务器地址,本地服务器再向顶级域DNS服务器请求解析。(更多的情况是本地DNS服务器已经缓存了顶级域DNS服务器的地址,而跳过了访问根服务器这一步) 3、顶级域DNS服务器再次返回请求解析的域名对应的权威DNS服务器IP(也可能返回一个中间服务器地址,通过这个服务器得到权威DNS服务器IP),然后本地服务器通过这个权威DNS服务器得到最终需要的IP地址。 4、本地DNS服务器将得到的IP和对应的域名缓存起来,并返回给请求解析的主机。

资源记录

这个过程中传输的都是DNS报文,报文中我们最需要关注的就是他的资源记录(RR)。资源记录是一个包含了四个字段的记录(Name,Value,Type,TTL)。最后一个字段代表了这个记录的生存时间,也就是缓存何时失效。而第一个字段Name和第二个字段Value,他俩的含义取决于第三个字段Type。Type有四种取值: ①当Type=A时,Name就是主机名,Value就是主机名对应的IP地址。 ②如果Type=NS,那么Name就是一个域(如baidu.com),Value是可以获得这个域中主机IP地址的权威DNS服务器的主机名。比如(baidu.com,dns.baidu.com,NS,TTL)就是一条类型为NS的记录。 ③如果Type =CNAME,则Name是一个别名,而Value是它的规范主机名。 ④如果Type = MX,Name是一个邮件服务器的别名,Value是它的规范主机名。

通过这个Type我们可以看出DNS至少有两个作用,一是IP映射,二是别名映射。其实除了这两个还有一个作用就是负载均衡。DNS服务器可以让一个主机名映射到一个IP集合,每次解析出IP集合中的一个IP。这样同一个服务的压力分散到了多个物理机上面,实现负载均衡。 (DNS三个作用:①别名映射 ②IP映射 ③负载均衡)

小栗子

最后通过一个例子来结束这篇文章: 1、客户机请求解析 www.baidu.com,host文件中没有对应的记录,于是请求本地DNS服务器。 2、本地DNS服务器也难以完成解析,于是请求本地已经缓存的com顶级域DNS服务器,顶级域服务器返回了两条资源记录,一条是NS型(baidu.com,dns.baidu.com,NS,TTL),另一条是A型(dns.baidu.com,xxx.xxx.xxx.xxx,A,TTL)。 3、本地服务器收到这两条记录,知道了dns.baidu.com是权威DNS服务器,它的IP是xxx.xxx.xxx.xxx。于是访问这个服务器并得到www.baidu.com的IP地址,并通过这个IP地址建立TCP链接,在TCP链接上通过HTTP报文进行通信。

本文分享自微信公众号 - Vegout(t10244201),作者:naget

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 计算机网络世界

    计算机网络世界是人类虚拟出来的一个世界,但建立在物理可见的设备上面。这些设备包括:主机、服务器、移动设备、路由器、链路层交换机、调制解调器、基站、手机和蜂窝电话...

    naget
  • 数据库扫盲

    “上古”时期,计算机还处于幼年,当时对于数据的管理效率很低,也许一个程序会产生一些数据,但计算机所干的事,就是大量的计算工作,计算之后得到一定的结果,人工再把结...

    naget
  • WEB的核心:HTTP协议

    HTTP全称“超文本传输协议”,是一个应用层协议,对Web的请求应答格式进行了规定。HTTP由两个程序实现,一个客户端程序,一个服务端程序。两者通过交换HTTP...

    naget
  • DNS 报文结构和个人 DNS 解析代码实现——解决 getaddrinfo() 阻塞问题

    实际应用中发现一个问题,在某些国家/ 地区的某些 ISP 提供的网络中,程序在请求 DNS 以连接一些服务器的时候,有时候会因为 ISP 的 DNS 递归查询太...

    amc
  • DNS是什么?有什么用?

    DNS是互联网的一项服务,简单的说,就是把域名(简单来说就是网站服务器的名字)转换成IP地址(简单说就是一个电脑的电话号码),好让电脑直接访问到网站的服务器。

    简单并不简单
  • 网络协议 16 - DNS 协议:网络世界的地址簿

        为什么在地址栏输入域名,就能直接访问到对应服务器?全局负载均衡和内部负载均衡又是什么?这些都和 DNS 解析息息相关,让我们一起来解密 DNS 解析。

    北国风光
  • Ubuntu Server 第八章 DNS服务

    这章的内容为DNS服务,远程管理一章中使用PUTTET,利用Hosts文件是域名指向对方IP,其实就已经涉及到了DNS。

    天钧
  • DNS服务器之理论基础

    一、什么是DNS DNS全称为Domain Name System,即域名系统,其作用就是将我们经常使用的“网址”解析为IP地址。 在互联网上...

    小小科
  • Caused by: java.net.UnknownHostException: openapi.alipay.com

    支付宝下单,openapi.alipay.com就是传说中的支付宝网关名。 所有的所有配置好以后,包括pid、appid以及RSA私钥、公钥和支付宝公钥。 支付...

    小柒2012
  • 谁劫持了我的DNS:全球域名解析路径劫持测量与分析

    或许你已知道网络中几乎所有的DNS请求都是通过明文进行传输的,但是你是否相信,这一协议设计的缺陷,已经开始被用于域名解析路径劫持了?

    周俊辉

扫码关注云+社区

领取腾讯云代金券