DNS笔记
为什么需要DNS
用户在上网时,只有一个网站的域名。但是计算机在通信时,需要IP地址才能识别(大多数的网络通讯都是基于TCP/IP的,其又基于IP地址)。DNS可以理解为一位翻译官,将域名翻译成计算机可识别的IP地址。
DNS的作用
给出一个域名,返回该域名可以访问的IP地址。
主机给出域名 -> DNS获得域名 -> 翻译后获得 ip -> 主机获得ip
DNS过程
- 浏览器从接收到的网址中抽取出域名,如
http://www.baidu.com/,将这个发送给DNS应用的客户端(每台PC/手机上运行着DNS客户端 - DNS客户端向DNS服务端发送一份查询报文,包含着域名
- DNS服务端解析域名后,返回给DNS客户端一份报文,包含对应的IP地址
- 浏览器得到DNS客户端给的IP地址,可以发起请求建立连接
DNS域名层级
DNS服务器如何知道每个域名的IP呢?答案是分级查询
域名的层级如下:
主机名.次级域名.顶级域名.根域名
# 即
host.sld.rld.root
对于一个域名www.example.com,其真正的域名是ww.example.com.root。因为根域名.root对于所有域名相同,所以平时是省略的。
DNS分级查询
大致过程:
- 从"根域名服务器"查到"顶级域名服务器"的NS记录和A记录(IP地址)
- 从"顶级域名服务器"查到"次级域名服务器"的NS记录和A记录(IP地址)
- 从"次级域名服务器"查出"主机名"的IP地址
注:
会缓存每次最快响应的结果,缓存时间长短不同。下次查询优先使用缓存。
A:地址记录(Address),返回域名指向的IP地址。
NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。
MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。
CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转,详见下文。
PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名。
根域名服务器的IP地址基本是不变的,全球只有13组,从A.ROOT-SERVERS.NET一直到M.ROOT-SERVERS.NET(原因:https://www.zhihu.com/question/22587247/answer/66417484)。
访问网页

- 输入一个HTTP网址
www.baidu.com
【下单后收货时发现货物有瑕疵,计划换货】 - 通过DNS解析出这个网址的IP
1> 此时操作系统会先检查本地hosts文件是否有这个网址的映射关系,如果有,就先调用这个IP地址映射,完成解析。
2> 若hosts里没有,则查找本地DNS解析器缓存,若有映射,直接返回,完成解析。
3> 若前两者没有,查找TCP/IP参数中设置的首选DNS服务器(此处成为本地DNS服务器)。若查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成解析。(此解析具有权威性)
4> 若要查询的域名,不由本地DNS服务器区域解析,但该服务器缓存了网址的映射关系,则调用这个IP地址映射,完成解析。(此解析不具权威性)
5> 若前三者没有,则根据本地DNS服务器的设置(是否设置转发器)进行查询。最后都由本地DNS服务器返回IP地址给客户机。
5-1>采用未转发模式:本地DNS将请求发至13台根DNS,根DNS收到后会判断这个域名.com是谁来授权管理,返回一个负责该顶级域名的服务器的IP。收到IP信息后,本地DNS联系负责.com的服务器,收到请求后进行解析,找到一个管理baidu.com的DNS服务器的IP,返回给本地DNS服务器。收到IP信息后,重复上述动作,直到找到www.baidu.com的IP地址。
5-2>采用转发模式:本地DNS服务器将请求发送至上一级DNS解析器,由上一级DNS解析器进行解析。上一级若不能解析,或找根DNS或把请求转至上上级,以此循环。
【找出卖家地址】 - 有了IP后,通过IP地址找到对应服务器,请求与对方建立TCP连接
(先通过子网掩码判断下是否是同一个网络的。如果不在同一个网络,需要通过网关转发)
【跟客服扯皮,达成换货共识】 - 建立连接后,客户端向服务器发送HTTP Request(请求)包数据
【寄快递】 - 服务器收到请求后,进行处理,返回HTTP Response(响应)包数据
【卖家收到快递,寄回换的货】 - 客户端收到服务器的响应后,开始渲染这个Response包里的主体(body),收到全部的内容后断开与该服务器之间的TCP连接
【收到货,点击确定收货,完成交易】
参考文献
DNS 原理入门(博客):http://www.ruanyifeng.com/blog/2016/06/dns.html
DNS解析的过程是什么,求详细的(知乎):https://www.zhihu.com/question/23042131
为什么域名根服务器只能有13台呢(知乎):https://www.zhihu.com/question/22587247/answer/66417484
本文介绍了DNS相关知识,包括其存在的必要性、作用、工作过程、域名层级和分级查询方式。还阐述了访问网页时,通过DNS解析网址IP的具体步骤,以及后续基于IP建立TCP连接、发送HTTP请求和响应等过程,帮助理解网络访问原理。
1023

被折叠的 条评论
为什么被折叠?



