递归查询举例:
客户端想要解析 www.example.com
的IP地址,发送请求到本地DNS解析器:
本地解析器查询根DNS服务器。
根DNS服务器返回 .com TLD服务器地址。
本地解析器查询 .com TLD服务器。
.com TLD服务器返回 example.com
的权威DNS服务器地址。
本地解析器查询 example.com
的权威DNS服务器。
权威DNS服务器返回 www.example.com
的IP地址。
本地解析器将IP地址返回给客户端。
迭代查询举例:
客户端想要解析 www.example.com
的IP地址,依次查询各个DNS服务器:
客户端查询本地DNS解析器。
本地解析器查询根DNS服务器。
根DNS服务器返回 .com TLD服务器地址。
本地解析器将 .com TLD服务器地址返回给客户端。
客户端查询 .com TLD服务器。
.com TLD服务器返回 example.com
的权威DNS服务器地址。
客户端查询 example.com
的权威DNS服务器。
权威DNS服务器返回 www.example.com
的IP地址。
客户端获取到IP地址。
结论
递归查询和迭代查询是DNS查询的两种方式,各有优缺点。递归查询对客户端友好,但增加了DNS解析器的负担;迭代查询对解析器负担小,但增加了客户端的复杂性。实际应用中,客户端通常会使用递归查询,通过本地DNS解析器处理大部分的查询过程。
404:表示客户端(如浏览器)请求的资源在服务器上不存在
501:状态码501表示服务器不支持请求的方法,或者服务器无法完成请求。具体来说,501状态码表示服务器没有能力处理请求所需的功能。这通常意味着服务器不支持当前请求的HTTP方法(如GET、POST、PUT、DELETE等)。
502:状态码502表示作为网关或代理的服务器从上游服务器收到无效响应。
GET /index.html HTTP/1.1 Host: www.javabetter.cn Accept: text/html User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
HTTP/1.0 200 OK Content-Type: text/plain Content-Length: 137582 Expires: Thu, 05 Dec 1997 16:00:00 GMT Last-Modified: Wed, 5 August 1996 15:55:28 GMT Server: Apache 0.84 沉默王二很天真
当用户键入一个URL时
在上图,发送⽅发出了 1,2,3,4,5 份数据:
Ping 的过程主要基于 ICMP(Internet Control Message Protocol,互联网控制消息协议)实现,其基本过程包括:
①、当执行 Ping 命令,如ping javabetter.cn
,Ping 首先解析域名获取 IP 地址,然后向目标 IP 发送一个 ICMP Echo Request 消息。
②、当目标 IP 收到 ICMP Echo Request 消息后,它会生成一个 ICMP Echo Reply 消息并返回,即 Ping 响应消息。
③、发起 Ping 命令的设备接收到 ICMP Echo Reply 消息后,计算并显示从发送 Echo Request 到接收到 Echo Reply 的时间(通常称为往返时间 RTT,Round-Trip Time),以及可能的丢包情况。