1.什么是DNS
这个首先我们要知道我们访问一个网站主要还是通过他的IP地址加上端口号进行访问,但是我们会发现有些比较大型的网站是没有直接使用IP地址加上端口号进行访问的,比如www.baidu.com,我们可以直接通过这个域名就访问到百度的网址,这是什么原因呢?这就是因为我们在访问这个字符串时,浏览器发现这个字符串就是一个域名,于是就是将字符串转换成了对应的IP地址加上端口号,就完成了访问,而将字符串转换成IP地址的规则就是DNS域名解析协议。
2.域名的分类
-
商业网站:
www.google.com
:Google公司的主网站,提供搜索引擎服务。
-
组织网站:
www.who.int
:世界卫生组织(World Health Organization)的官方网站。
-
教育网站:
www.mit.edu
:麻省理工学院(Massachusetts Institute of Technology)的官方网站。
-
国家代码顶级域:
www.unicef.org
:联合国教科文组织(United Nations Educational, Scientific and Cultural Organization)的官方网站。
-
新顶级域:
www.blog.example
:一个假设的博客网站,使用新的顶级域.blog
。
-
本地测试域名:
localhost
:通常用于本地开发和测试,不在全球互联网上解析。
-
国际化域名:
www.中国.com.cn
:一个使用中文字符的中国网站。
-
反向域名:
1.0.0.0.1.in-addr.arpa
:这是一个反向域名,用于将IPv4地址1.0.0.0.1
映射回域名。
3.DNS的具体解析过程
首先浏览器先获取域名,然后去查询本地缓存是否存在域名解析对应的IP地址,如果没有则向DNS服务器发送解析请求,将解析结果返回到本地之后进行缓存访问
-
用户请求:
- 用户在浏览器或其他应用程序中输入一个网址(如
www.example.com
)。
- 用户在浏览器或其他应用程序中输入一个网址(如
-
操作系统DNS缓存检查:
- 操作系统会首先检查本地DNS缓存中是否有该域名对应的IP地址。如果有,解析过程结束,直接使用缓存的IP地址。
-
路由器或ISP DNS缓存检查:
- 如果操作系统缓存中没有找到,请求会发送到路由器或互联网服务提供商(ISP)的DNS缓存。
-
递归(Recursive)查询:
- 如果路由器或ISP缓存中也没有找到,路由器会向配置的DNS服务器发送递归查询请求。
-
DNS服务器查询:
- DNS服务器是专门用于处理域名解析的服务器。它们存储了域名到IP地址的映射,或者知道如何找到这些信息。
-
根DNS服务器:
- 如果本地DNS服务器没有缓存该域名的记录,它会首先查询根DNS服务器。根服务器不存储具体的域名信息,但知道顶级域(如
.com
、.org
)的权威DNS服务器的位置。
- 如果本地DNS服务器没有缓存该域名的记录,它会首先查询根DNS服务器。根服务器不存储具体的域名信息,但知道顶级域(如
-
顶级域(TLD)DNS服务器:
- 根服务器会指引本地DNS服务器查询相应的顶级域DNS服务器。
-
权威DNS服务器:
- 顶级域DNS服务器会告诉本地DNS服务器,哪个权威DNS服务器负责管理特定的二级域(如
example.com
)。
- 顶级域DNS服务器会告诉本地DNS服务器,哪个权威DNS服务器负责管理特定的二级域(如
-
获取IP地址:
- 本地DNS服务器接着查询权威DNS服务器,获取域名对应的IP地址。
-
返回结果:
- 本地DNS服务器将获取到的IP地址返回给用户的设备,并将这个映射存储在本地缓存中,以便快速响应未来的查询。
-
缓存:
- DNS查询结果通常会被缓存在本地系统、路由器或ISP的DNS服务器上,以减少重复查询和提高响应速度。