零基础学习PHP编程——基本概念详解之域名解析与DNS缓存

基本概念详解之一——域名解析与DNS缓存

注意: 本文主要介绍了域名解析流程即DNS缓存相关知识

[转载请注明]

欢迎交流QQ群: 640765823 

一、 DNS是什么?

DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。

DNS协议是应用层协议,事实上它是为其他应用层协议工作的,包括不限于HTTP和SMTP以及FTP,用于将用户提供的主机名解析为ip地址。

二、 域名是什么?

域名(英语:Domain Name),简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)

例如,www.wikipedia.org是一个域名,和IP地址208.80.152.2相对应。DNS就像是一个自动的电话号码簿,我们可以直接拨打wikipedia的名字来代替电话号码(IP地址)。我们直接调用网站的名字以后,DNS就会将便于人类使用的名字(如www.wikipedia.org)转化成便于机器识别的IP地址(如208.80.152.2)。

域名划分

顶级域名又称为根域名、一级域名、裸域名,一级域名中只含有一个“.”,且“.”左边要有内容字段。最后一个点的右边被称为一级域名,左边被称为二级域名,以此类推二级三级域名

顶级域名后缀列表:

.com:表示商业机构
.top:表示顶级、高端、事业突破
.xyz:表示创意创新、三维空间、无极限
.cx:表示创新、诚信
.red:表示吉祥、热情、勤奋
.net:表示网络服务机构
后缀名
后缀名
.org:表示非营利性组织
.gov:表示政府机构
.edu:表示教育机构
.mil:表示军事机构
.biz:表示商业机构
.name:表示个人网站
.info:表示信息提供
.mobi:专用手机域名
.国家缩写(如.cn):表示国家内部企业或个人

三、 浏览器发送Http请求时的域名解析过程

1、浏览器检查缓存中有没有该域名对应的IP地址,如果缓存中存在解析值,则直接将该IP返回

2、如果浏览器缓存中没有,则去操作系统的DNS缓存服务中查找,再去hosts文件中查找

3、如果操作系统缓存中没有 去local DNS Server(LDNS)本地DNS服务器中去找(比如 学校、小区里的互联网服务提供商电信联通的DNS服务器)

4、若LDNS没有命中,去Root Server DNS服务器 根域名服务器中找

5、返回给LDNS一个所查询域的主域名服务器地址gTLD Server(国际顶级域名服务器)如com、cn、org

6、LDNS向gTLD发送请求

7、gTLD返回给域名对应的Name Server

8、Name Server(就是你注册的域名服务器)查询域名对应的IP 连同TTL值(缓存的时间由TTL值控制)返回给LDNS

9、LNDS缓存域名与对应IP

10、返给用户 根据TTL 缓存在本地系统缓存中

下图为网上的DNS解析流程图,与上面的描述稍微有些区别:

DNS缓存记录会有一个ttl值(time to live),单位是秒,意思是这个记录最大有效期是多少,经过实验,操作系统缓存DNS时会参考ttl值,但是不完全等于ttl值,而浏览器DNS缓存的时间跟ttl值无关,每种浏览器都使用一个固定值。

修改hosts文件原理

在修改hosts文件后,所有操作系统中DNS缓存会被清空,而浏览器缓存则不发生变化。

为什么修改hosts文件之后,有时会立刻生效,有时却一直不生效呢?

其实原因很简单,这是因为浏览器缓存的过期时间,是从某个域名上次查询DNS记录开始计算的。

例如:我在00秒的时候使用chrome访问过www.google.com.hk,此时浏览器DNS缓存产生,然后我修改了hosts文件,将www.google.com.hk指向本地127.0.0.1,然后在05秒的时候尝试再次访问这个地址,因为浏览器DNS缓存未过期,所以hosts修改无法体现出来。

另一种情况下,很久都没有访问www.baidu.com了,然后我修改了hosts文件,将其指向127.0.0.1,这时因为浏览器没有DNS缓存,所以会查询操作系统中的DNS缓存,结果此时hosts文件生效!

修改hosts之后,等2分钟,一般都会生效。

四、DNS两种查询方式

递归查询

主机向本地域名服务器的查询一般都是采用递归查询。

递归查询是一种DNS server的查询模式,在该模式下DNS server接收到客户机请求,必须使用一个准确的查询结果回复客户机。假设DNS server本地没有存储查询DNS 信息,那么该server会询问其它server。并将返回的查询结果提交给客户机。

如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是返回一个失败的响应,表示无法查询到所需的IP地址。

迭代查询

本地域名服务器向根域名服务器的查询通常是采用迭代查询。

DNS server第二种查询方式为迭代查询,DNS server会向客户机提供其它可以解析查询请求的DNS server地址,当客户机发送查询请求时,DNS server并不直接回复查询结果。而是告诉客户机还有一台DNS server地址,客户机再向这台DNS server提交请求,依次循环直到返回查询的结果。

当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么返回给本地域名服务器所要查询的IP地址,要么返回给本地域名服务器下一步应当查询的域名服务器的IP地址。

参考

【原】老生常谈-从输入url到页面展示到底发生了什么

为什么修改hosts不立即生效?–浏览器DNS缓存机制分析

DNS解析的过程是什么,求详细的?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值