深入DNS
什么是DNS?
我说前面说过http如何发送请求。这里的第一步就是将域名变为ip地址
如何将域名变为ip地址我们就得用到域名解析(DNS)。
如何进行域名解析的?
第一步:在浏览器的url里输入域名,然后浏览器会去自身缓存中检查有有没有这个域名对应的ip地址。如果有就获得了Ip地址。还有域名和ip都是可以变化的,所以缓存中的这个存放的时间无需太长和太短。
第二步:如果用户的浏览器缓存中没有,浏览器会找操作系统是否有对应的ip。
第三步:如果还有没找到,就会真正的请求域名服务器来解析域名
第四步:先去找本地的域名解析服务器(LDNS)
第五步:如果本地没有就去root DNS server(根域名服务器)
第六步:根域名服务器返回LDNS一个查询域的主域名服务器(gTLD server)地址、这个gTLD是国际顶级域名服务器。(gTLD)在全球只有13个左右。
第七步:这样LDNS就可以向gTLD服务器发请求。
第八步:gTLD服务器会解析这域名得到Ip地址和一个TTL值。
第九步:然后把这一结果一次保存在他们下级的服务器中。
第十步:解析的结果反给用户,本地还保留。
所以通过上面的过程我们应该明白一点。这是一个逐级提交请求的过程。而且只要第一次解析成功了,以后就不用这么麻烦了。可以直接从本地获取解析的Ip。当然要保证ip地址和缓存中没有过期。而且为了防止ip地址改变,所以我们定期会对缓存进行清理。
这就是我理解的DNS。
深入DNS的更多相关文章
- 6.DNS公司PC访问外网的设置 + 主DNS服务器和辅助DNS服务器的配置
网站部署之~Windows Server | 本地部署 http://www.cnblogs.com/dunitian/p/4822808.html#iis DNS服务器部署不清楚的可以看上一篇:ht ...
- Liunx下配置DNS服务
当Ping 主机名时可以映射出该主机的IP地址,反之亦然.配置并指定DNS服务器可以快速部署集群,不需要每台主机都去修改HOSTS文件即可实现IP与主机名的相互解析.而在Linux下的DNS是用bin ...
- ★Kali信息收集~4.DNS系列
★.1host:DNS信息 参数: 一般情况下,host查找的是A,AAAA,和MX的记录 案例: DNS服务器查询 host -t ns 域名 A记录和MX记录查询 host 域名(host - ...
- Node.js:DNS模块的使用
Nodejs的DNS模块包涵有关DNS查询和操作的方法,下面介绍该模块的基本用法以及实现一个DNS查询小工具. 1.获取DNS服务器地址 使用getServers方法,该方法返回一个IP地址组成的数组 ...
- Java DNS查询内部实现
源码分析 在Java中,DNS相关的操作都是通过通过InetAddress提供的API实现的.比如查询域名对应的IP地址: String dottedQuadIpAddress = InetAddre ...
- DNS报文格式(RFC1035)
一.域名和资源记录的定义 1.Name space definitions 2.资源记录定义(RR definitions) 2.1 格式 后面分析报文的时候详细解释. ...
- DNS原理及其解析过程 精彩剖析
本文章转自下面:http://369369.blog.51cto.com/319630/812889 DNS原理及其解析过程 精彩剖析 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址 ...
- CentOS7 查看IP、Gateway、DNS、Hostname
1.查看IP# ip addr 2.查看路由# ip route 3.查看DNS# cat /etc/resolv.conf 4.查看主机名# hostname
- linux查看本机IP、gateway、DNS
IP: ifconfig gateway:[root@localhost ~]# netstat -rnKernel IP routing tableDestination Gatew ...
- Centos6.2设置静态ip和dns
参考了如下文章:https://gist.github.com/fernandoaleman/2172388http://www.lifelinux.com/how-to-configure-stat ...
随机推荐
- sql DROP 和DELETE、TRUNCATE用法
DROP:删除数据库已存在的表DROP TABLE tbname DELETE:删除记录delete from tbname truncate:清空表,重置索引truncate table tbnam ...
- web项目路径问题
路径 相对路径 URL中第一个字符不为“/” request.getRequestDispatcher("b"); 相对于该代码所在 ...
- IOS中用UIFont返回字体的行高、动态改变tableView中Cell的高度
一.动态改变Cell的高度 1.利用tableView代理方法的返回值决定每一行cell的高度 - (CGFloat)tableView:(UITableView *)tableView height ...
- Linux管道的实现机制
7.1.1 Linux管道的实现机制 在Linux中,管道是一种使用非常频繁的通信机制.从本质上说,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题,具体表现为: ...
- laravel5 centos6.4下的配置体验
1. 安装lmnp环境: nginx version: nginx/1.6.0. php 5.5.7 . centos6.42. laravel-v5.1.4 一键安装包,在使用composer 安装 ...
- python练习程序(c100经典例5)
题目: 输入三个整数x,y,z,请把这三个数由小到大输出. def swap(a,b): t=a; a=b; b=t; return (a,b); def foo(x,y,z): if x>y: ...
- HDU 5001 Walk
解题思路:这是一道简单的概率dp,只要处理好相关的细节就可以了. dp[d][i]表示走d步时走到i的改概率,具体参考代码: #include<cstdio> #include<cs ...
- 【英语】Bingo口语笔记(73) - 以tly,tely结尾的误读
- PHP中超全局变量$GLOBALS和global的区别
一.超全局变量$GLOBALS PHP超全局变量有很多,如下的都属于超全局变量(Superglobal): $GLOBALS,$_SERVER,$_GET,$_POST,$_FILES,$_COOKI ...
- bjfu1262 优先队列
比较典型的应用优先队列的题.题目是在一个长为n的数组中,依次问m个数中的最小值.那么把值和下标做成一个结构体,放进优先队列里,每次移动窗口就把该T的T掉,剩下的最小值就是答案,复杂度nlogn,轻松a ...