深入理解 DNS
深入理解 DNS
简介
DNS(Domain Name System)域名系统,它是一个将域名和 IP 地址相互映射的一个分布式数据库,把容易记忆的主机名转换成主机 IP 地址。
DNS使用 TCP 和 UDP 端口 53。当前,对于每一级域名长度的限制是 63 个字符,域名总长度则不能超过 253 个字符。
DNS备份
为防止服务中断和网络攻击,全球共有13台根DNS服务器,严格意义上来说不是13台,而是13个服务集群,为什么是13?
专有名词
- FQDN:完整合法域名,也就是根域(绝对域名)
- NS:权威域名服务器
- 顶级域:用来指示某个国家 / 地区或组织使用的名称的类型名称,例如 .com
- 二级域:个人或组织在因特网上使用的注册名称,例如 google.com
- 子域:已注册的二级域名派生的域名,一般就是网站名,例如 www.google.com
- 主机名:标识网络上的特定计算机,例如 h1.www.google.com
DNS的基本解析流程
- 以客户端浏览器访问
www.lbinin.com域名为例,首先,它会去检查当前浏览器缓存,如果有,就直接响应,如果没有,就继续往下找 - 接着,操作系统会去检查自己的 host 文件,如果从中没找到对应关系,会再到系统 DNS 缓存中查,如果缓存中有,就直接返回该域名所对应的 IP
- 如果缓存中没有,则会向我们事先设置好的 DNS 服务器 [ 一般有两个, 主 & 备 ] 去请求,即所谓的
递归查询,DNS 服务器首先会到自身解析数据库中去查 - 如果 DNS 服务器在自己的解析库中也没找到,它就会自动帮我们向根发送询问请求
- 此时,根看到要请求的是
com的后缀,就会把com所在的 ns 服务器告诉我们的 DNS - 然后,我们的 DNS 服务器就会去请求
com所在的 ns 服务器(权威域名服务器) - 当请求到达
comns 服务器时,com一看域名是在lbinin这个域下的,就会把lbinin所在的 ns 服务器再告诉我们的 DNS 服务器 - 再然后,我们的 DNS 服务器就会去请求
lbinin这个域的 ns 服务器 lbinin这个域的 ns 服务器一看是要访问www就直接找到了www对应的「A记录」的 IP,并把它丢给我们的 DNS,上面逐个询问的过程,即迭代查询- 最后,我们的 DNS 再把最终解析到的这个 IP 丢给我们的客户端,然后客户端就直接拿着去访问了。
流程总结
浏览器缓存
深入理解 DNS的更多相关文章
- 理解DNS
理解DNS 写在前面: 目前,我们大部分的网络通信都是基于TCP/IP协议的,而TCP/IP又基于IP地址作为唯一标识进行通信,随着需要记忆的IP地址数量的增多,肯定会超出我们的记忆能力范围,但如果使 ...
- 简单理解DNS解析流程(一)
0x0 简单理解dns DNS服务器里存着一张表 表中放着域名和IP地址,域名和IP地址以映射关系保存,即一对一 浏览器访问某个域名,实际上是访问它的ip地址 所以浏览器需要知道域名对应的ip地址 如 ...
- 不为人知的网络编程(九):理论联系实际,全方位深入理解DNS
本文原作者:selfboot,博客地址:selfboot.cn,Github地址:github.com/selfboot,感谢原作者的技术分享. 1.引言 对于 DNS(Domain Name Sys ...
- dig理解DNS的解析过程 - 阿权的书房
关于DNS的常识,可以阅读附录的一些参考资料.本文旨在尝试举例用dig命令理解这个过程,并非权威知识,仅供参考.测试域名为阿权的书房的域名 www.aslibra.com 和 www.163.com. ...
- dig理解dns主备 - 阿权的书房
dns的解析一般都授权两个以上,防止单点故障. 比如阿权的书房的域名 www.aslibra.com,授权两台ns.aslibra.com 和 ns2.aslibra.com,如果单点故障会怎么样呢? ...
- DNS 原理入门
导读 DNS 是互联网核心协议之一.不管是上网浏览,还是编程开发,都需要了解一点它的知识.本文详细介绍DNS的原理,以及如何运用工具软件观察它的运作.我的目标是,读完此文后,你就能完全理解DNS. 一 ...
- 在Debian上用Bind 配置DNS服务器
1 什么是DNS 初学者可能不理解DNS到底是什么,干什么用.我是在1998年大学毕业时才听说这个词的.那时我在聊天室碰到潍坊信息港的一个网管,我恬不知耻地说我也是个网管,他说也维护DNS吗?我说,D ...
- DNS原理
DNS 是互联网核心协议之一.不管是上网浏览,还是编程开发,都需要了解一点它的知识. 本文详细介绍DNS的原理,以及如何运用工具软件观察它的运作.我的目标是,读完此文后,你就能完全理解DNS. 一.D ...
- 浅入DNS
1.DNS是怎么工作的 首先我们可以很简单的理解DNS协议,它就是一个将域名与ip地址进行双向转换的协议,而消息类型只有查询和回应2种类型.那客户端查询域名,是要请求谁呢?答案是域名服务器,现在域名服 ...
随机推荐
- vue-electron 使用sqlite3数据库,执行npm run build 报错 .NET Framework 2.0 SDK,Microsoft Visual Studio 2005[C:\temp\wechat\node_modules\sqlite3\build\binding.sln]
问题描述 vue-electron 使用sqlite3数据库,执行npm run build 报错如下: .NET Framework 2.0 SDK,Microsoft Visual Studio ...
- linux自启动脚本.sh
while [ 1 ]; do PRO_NUM=`ps -ef | grep "cms$" | grep -v "grep" | wc ...
- gulp——用自动化构建工具增强你的工作流程
想要使用gulp,就要了解gulp,就像追自己的爱豆,你要知道爱豆的喜好.兴趣 简单的了解你的新爱豆———安装nodejs -> 全局安装gulp -> 项目安装gulp以及gulp插件 ...
- Windows突破远程连接最大数去掉限制登录
当对方设置最大连接数 超过限制时 可以用这个命令 win+r 输入 mstsc /v:192.168.18.131:3389 /console windows server 2003 sp2 以 ...
- python类中的self
class User: def walk(self): print(self,"正在慢慢走") # User.walk() # 会报错 TypeError: walk() miss ...
- Vue系列---源码构建过程(四)
在了解源码如何构建之前,我们有必要了解下 项目中一个简单的目录结构如下: |---- vue | |---- dist # 打包后的存放文件目录 | |---- scripts # 存放构建相关的代码 ...
- 数据结构(四十六)插入排序(1.直接插入排序(O(n²)) 2.希尔排序(O(n3/2)))
一.插入排序的基本思想 从初始有序的子集合开始,不断地把新的数据元素插入到已排列有序子集合的合适位置上,使子集合中数据元素的个数不断增多,当子集合等于集合时,插入排序算法结束.常用的 插入排序算法有直 ...
- $.ajax.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel= ...
- weex不支持类的动态追加
做一个weex项目时遇到需要根据状态动态改变样式的功能,本来想通过判断属性追加类的方式实现,如下: :class="['long-news',{'bold-txt':noRead}]&quo ...
- TICK技术栈(三)InfluxDB安装及使用
1.什么是InfluxDB? InfluxDB是一个用Go语言开发的时序数据库,用于处理高写入和查询负载,专门为带时间戳的数据编写,对DevOps监控,IoT监控和实时分析等应用场景非常有用.通过自定 ...