目录
TCP/IP使用的是IP地址和端口号来确定网络上某一台主机的某一个程序。
为什么不用域名来直接进行通信?
因为IP地址是固定长度的,域名是变长的,不便于计算机处理。IP地址对于用户来说不便于记忆,但域名便于用户使用。(IP是面向主机的,而域名是面向用户的)
域名到IP地址的解析是由分布在因特网上的许多域名服务器程序共同完成的。
顶级域名解析过程:
1. 用户发起请求
- 用户在浏览器输入域名(如
example.com
)并按下回车。 - 操作系统首先检查本地缓存(如浏览器缓存、系统DNS缓存)是否有该域名的解析记录。若存在且未过期,则直接返回IP地址,跳过后续步骤。
2. 查询本地DNS解析器(递归解析器)
- 若本地缓存无记录,系统将请求发送到配置的递归DNS服务器(通常由ISP或公共DNS服务如
8.8.8.8
、1.1.1.1
提供)。 - 递归解析器的职责是代替用户完成所有查询步骤,并将最终结果返回给用户。
3. 查询根域名服务器(Root DNS Server)
- 递归解析器首先查询根域名服务器(全球共13组,由ICANN管理)。
- 根服务器不直接返回IP,但会根据域名的TLD(如
.com
、.org
)返回负责该TLD的顶级域名服务器(TLD Server)的地址。 - 例如,查询
example.com
时,根服务器会返回.com
的TLD服务器地址。
- 根服务器不直接返回IP,但会根据域名的TLD(如
4. 查询顶级域名服务器(TLD Server)
- 递归解析器向TLD服务器(如
.com
的服务器)发起查询。- TLD服务器管理其下所有二级域名(如
example.com
)的权威DNS服务器信息。 - TLD服务器返回
example.com
的权威DNS服务器(Authoritative DNS Server)的地址。
- TLD服务器管理其下所有二级域名(如
二级域名解析器:
二级域名(如 sub.example.com
)的解析过程与顶级域名解析类似,但需要进一步查询二级域名对应的权威DNS服务器。以下是详细的解析步骤:
1. 用户发起请求
- 用户在浏览器输入二级域名(如
sub.example.com
)并访问。 - 操作系统先检查本地缓存(浏览器、系统DNS缓存)是否有该域名的解析记录。若存在且未过期,则直接返回IP地址。
2. 查询本地DNS解析器(递归解析器)
- 若本地无缓存,请求发送到递归DNS服务器(如ISP提供的DNS或公共DNS
8.8.8.8
)。 - 递归解析器负责代替用户完成所有查询。
3. 查询根域名服务器(Root DNS Server)
- 递归解析器首先查询根域名服务器(全球13组)。
- 根服务器不直接返回IP,而是返回
.com
(或其他TLD)的顶级域名服务器(TLD Server)地址。
- 根服务器不直接返回IP,而是返回
4. 查询顶级域名服务器(TLD Server)
- 递归解析器向
.com
TLD服务器查询example.com
的权威DNS服务器地址。- TLD服务器返回
example.com
的权威DNS服务器(如ns1.example.com
)。
- TLD服务器返回
5. 查询主域名的权威DNS服务器
- 递归解析器向
example.com
的权威DNS服务器查询sub.example.com
的解析记录。- 可能返回:
- A记录(直接IP地址,如
192.0.2.1
)。 - CNAME记录(别名,如
sub.example.com
→anotherdomain.com
,需进一步解析)。 - NS记录(如果
sub.example.com
由另一组DNS服务器管理)。
- A记录(直接IP地址,如
- 可能返回:
6. 处理特殊记录(如CNAME或NS记录)
情况1:返回A记录
- 权威DNS直接返回
sub.example.com
的IP(如192.0.2.1
),递归解析器缓存并返回给用户。
情况2:返回CNAME记录
- 如果
sub.example.com
是别名(如指向cdn.example.net
),递归解析器需重新查询cdn.example.net
的IP(重复上述过程)。
情况3:返回NS记录(子域委派)
- 如果
sub.example.com
由另一组DNS服务器管理(如ns1.sub.example.com
),递归解析器需:- 查询
ns1.sub.example.com
的IP(可能需额外A记录查询)。 - 向
ns1.sub.example.com
查询sub.example.com
的IP。
- 查询
7. 返回结果并缓存
- 递归解析器最终获得
sub.example.com
的IP后:- 缓存该记录(根据TTL值)。
- 返回IP给用户设备,完成解析。