应用层协议 -- DNS 协议

目录

初识DNS协议

什么是DNS协议?

域名和IP地址的关系?

详解DNS查询

DNS如何获得域名对应的IP地址?

DNS的缓存机制

DNS完整查询过程

从浏览器键入URL,到网页显示的过程

为什么选择基于UDP协议发起DNS查询,而不是TCP?


初识DNS协议

                                                  

什么是DNS协议?

  • DNS(Domain Name System)域名系统:DNS 协议是应用层的协议,用于将用户提供的主机名(域名)解析为 IP 地址


域名和IP地址的关系?

  • 类似电话簿中的姓名和电话号码,通过姓名可以拨打的电话,通过域名也可以访问IP地址。

  • 多个域名可以指向同一个IP地址。


详解DNS查询

                                                  

DNS如何获得域名对应的IP地址?

                                                  

DNS 的核心系统是一个三层的树状、分布式服务,基本对应域名的结构


三层服务器分别是:

  • 根域名服务器(Root DNS Server)管理顶级域名服务器,如“com”“net”“cn”等顶级域名服务器的 IP 地址。

  • 顶级域名服务器(Top-level DNS Server):管理各自域名下的权威域名服务器。

  • 权威域名服务器(Authoritative DNS Server):管理各自域名下主机的 IP 地址。


域名查询工作会根据这三类服务器依次查询,查询方式为迭代查询,减少根服务器负担


DNS的缓存机制

                                                  

因为查询IP的系统是树形结构,如果同一时间访问量过大,会导致根服务器负载过大,影响交互速度,甚至服务器崩溃。DNS使用优秀的缓存机制来解决这个问题。


DNS有三层缓存机制,分别是:

  • 浏览器缓存:浏览器在获取某一网站域名的实际 IP 地址后,进行缓存,之后遇到同一域名,则查询之前的缓存结果即可,有效减少网络请求的损耗

  • 操作系统缓存:操作系统中有一个特殊的“主机映射”文件,通常是一个可编辑的文本,文件名为“hosts”。该文件是DNS的发展中的重要里程碑。如果操作系统未在缓存中找到域名对应的IP地址,则会查找该文件中的地址映射。

  • 本地域名服务器缓存:通常由运行商或大公司运行,代替一定范围内的用户访问核心 DNS 系统,并记录地址映射关系如果用户访问的域名在记录中已经存在,则返回记录的地址即可


域名查询工作依次通过这三层缓存进行查询,查询方式为递归查询


DNS完整查询过程

                                                  

首先通过三层缓存查找

  1. 搜索浏览器的DNS缓存,缓存中维护一张域名与IP地址的对应表。

  2. 如果没有命中,则继续搜索操作系统的DNS缓存。

  3. 如果依然没有命中,则操作系统将域名发送至 本地域名服务器,本地域名服务器查询自己的DNS缓存,查找成功则返回结果。


然后通过三层服务器查找

  1. 若本地域名服务器的DNS缓存没有命中,则本地域名服务器向根域名服务器发起请求。

  2. 根域名服务器返回顶级域名服务器的地址。

  3. 本地域名服务器接收顶级域名服务器地址后,向顶级域名服务器发起请求。

  4. 顶级域名服务器返回权限域名服务器的地址。

  5. 本地域名服务器接收权限域名服务器地址后,向权限域名服务器发起请求。

  6. 权限域名服务器返回最终IP地址。


最终得到该域名对应的IP地址


从浏览器键入URL,到网页显示的过程

                                                  

  1. DNS查询 => 服务器返回最终的IP地址。

  2. 浏览器向IP地址发送请求 => 服务器处理请求,并返回HTML页面。

  3. 浏览器开始渲染HTML,并发送异步请求,如AJAX => 服务器处理请求并返回相应数据。

  4. 浏览器接受数据并渲染具体页面。


为什么选择基于UDP协议发起DNS查询,而不是TCP?

                                                  

  • DNS查询发出的请求是基于UDP协议的,通常使用 53 号端口。

  • TCP是可靠传输协议,TCP建立连接和传输数据会带来额外开销,如数据的传输量(带宽)、建立连接的时间等

  • 由于存在不同层级的协议的MTU限制,数据在传输的过程中可能被截断。而使用UDP属于不可靠传输,当UDP被截断时,传输失败的概率也会大大上升。因此当DNS使用UDP访问失败时,也会尝试使用TCP进行访问


  • 33
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值