DNS笔记

本文介绍了DNS相关知识,包括其存在的必要性、作用、工作过程、域名层级和分级查询方式。还阐述了访问网页时,通过DNS解析网址IP的具体步骤,以及后续基于IP建立TCP连接、发送HTTP请求和响应等过程,帮助理解网络访问原理。

DNS笔记

为什么需要DNS

用户在上网时,只有一个网站的域名。但是计算机在通信时,需要IP地址才能识别(大多数的网络通讯都是基于TCP/IP的,其又基于IP地址)。DNS可以理解为一位翻译官,将域名翻译成计算机可识别的IP地址。

DNS的作用

给出一个域名,返回该域名可以访问的IP地址。
主机给出域名 -> DNS获得域名 -> 翻译后获得 ip -> 主机获得ip

DNS过程
  1. 浏览器从接收到的网址中抽取出域名,如 http://www.baidu.com/,将这个发送给DNS应用的客户端(每台PC/手机上运行着DNS客户端
  2. DNS客户端向DNS服务端发送一份查询报文,包含着域名
  3. DNS服务端解析域名后,返回给DNS客户端一份报文,包含对应的IP地址
  4. 浏览器得到DNS客户端给的IP地址,可以发起请求建立连接
DNS域名层级

DNS服务器如何知道每个域名的IP呢?答案是分级查询

域名的层级如下:

主机名.次级域名.顶级域名.根域名
# 即
host.sld.rld.root

对于一个域名www.example.com,其真正的域名是ww.example.com.root。因为根域名.root对于所有域名相同,所以平时是省略的。

DNS分级查询

大致过程:

  1. 从"根域名服务器"查到"顶级域名服务器"的NS记录和A记录(IP地址)
  2. 从"顶级域名服务器"查到"次级域名服务器"的NS记录和A记录(IP地址)
  3. 从"次级域名服务器"查出"主机名"的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)。

访问网页

  1. 输入一个HTTP网址 www.baidu.com
    【下单后收货时发现货物有瑕疵,计划换货】
  2. 通过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或把请求转至上上级,以此循环。
    【找出卖家地址】
  3. 有了IP后,通过IP地址找到对应服务器,请求与对方建立TCP连接
    (先通过子网掩码判断下是否是同一个网络的。如果不在同一个网络,需要通过网关转发)
    【跟客服扯皮,达成换货共识】
  4. 建立连接后,客户端向服务器发送HTTP Request(请求)包数据
    【寄快递】
  5. 服务器收到请求后,进行处理,返回HTTP Response(响应)包数据
    【卖家收到快递,寄回换的货】
  6. 客户端收到服务器的响应后,开始渲染这个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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值