文章目录
- DNS 协议
- ① 前言 - 背景
- ② 域名
- ③ DNS解析过程
- ④ Linux下用dig工具 分析DNS过程
- ⑤ 浏览器中输入URL后,会有哪些过程
DNS 协议
DNS(域名系统,Domain Name System)是互联网的一个核心协议,用于将域名转换为 IP 地址,使得用户可以通过易记的域名访问网站,而不需要记住数字形式的 IP 地址。DNS 协议使得用户在浏览网页、发送电子邮件等网络活动时变得更加便利。
① 前言 - 背景
- 我们知道:
TCP/IP
中使用IP地址和端口号来确定网络上的一台主机的一个程序,但是IP地址不方便记忆。 - 于是人们发明了名为主机名的东西,本身是字符串,使用hosts文件来描述主机名和IP地址的关系。
起初是通过互连网信息中心(SRI-NIC)管理该hosts文件
- 当一个新计算机要接入网络,或某个计算机IP发生变更,都需要到信息中心申请变更hosts文件。
- 其他计算机也需要定期更新新版本的hosts文件才能正确上网。
显然这种方法并不便捷,于是就有了DNS(域名系统,Domain Name System)
- 一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系.
- 如果新计算机接入网络, 将这个信息注册到数据库中;
- 用户输入域名的时候, 会自动查询DNS服务器, 由DNS服务器检索数据库, 得到对应的IP地址.
② 域名
主域名 是用来识别主机名称和主机所属的组织机构的一种分层结构的名称。
域名是互联网上的一种地址命名系统,用于标识和定位网络上的资源,如网站、服务器等。
一个典型的域名由以下几部分组成:
www.example.com
-
顶级域名(Top-Level Domain, TLD):“com”:顶级域名位于最右侧,是域名层级结构的最高级别,用于指示域名的类别或国家/地区代码。
-
二级域名(Second-Level Domain):“example”:二级域名位于顶级域名之前,是主要的域名标识部分,通常用于表示组织、企业、品牌。
-
子域名(Subdomain):“www.”:子域名位于二级域名之前,用于进一步细分域名的层级结构。
③ DNS解析过程
这里简单用文字解释:
- 用户请求:用户在浏览器输入网址,发起 DNS 查询。
- 本地缓存检查:浏览器和操作系统检查本地缓存是否已有对应 IP 地址。
- 递归查询:如果缓存中没有,递归 DNS 服务器开始查询。它首先联系根 DNS 服务器,获取顶级域名服务器的地址。
- TLD 服务器查询:递归 DNS 服务器向顶级域名服务器询问,然后获得权威 DNS 服务器的地址。
- 权威服务器查询:递归 DNS 服务器向权威 DNS 服务器请求,最终获得域名对应的 IP 地址。
- 结果返回:IP 地址被返回给用户的计算机,并缓存以备后续使用。
④ Linux下用dig工具 分析DNS过程
首先通过下面的命令安装dig:
ubuntu:
sudo apt update
sudo apt install dnsutils
centos:
sudo yum install bind-utils
安装完毕就可以通过dig命令进行分析:
root@wqy-virtual-machine:/home# dig csdn.com; <<>> DiG 9.18.28-0ubuntu0.22.04.1-Ubuntu <<>> csdn.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37240
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;csdn.com. IN A;; ANSWER SECTION:
csdn.com. 5 IN A 203.107.45.167;; Query time: 88 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Mon Aug 26 11:35:09 CST 2024
;; MSG SIZE rcvd: 53
执行结果分析:
查询信息:
; <<>> DiG 9.18.28-0ubuntu0.22.04.1-Ubuntu <<>> csdn.com
DiG
是 DNS 查询工具的名称及其版本。- 查询的域名是
csdn.com
。
响应头部
-
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37240
opcode: QUERY
:查询操作。status: NOERROR
:表示没有错误,查询成功。id: 37240
:查询的唯一标识符。
-
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
qr
:查询响应标志,表示这是一个响应。rd
:递归查询标志,表示客户端要求递归解析。ra
:递归可用标志,表示服务器支持递归查询。QUERY: 1
:查询的数量。ANSWER: 1
:响应的答案数量。AUTHORITY: 0
:权威回答的数量(即提供权威解析的 DNS 服务器)。ADDITIONAL: 1
:附加信息的数量(如附加的记录)。
OPT PSEUDOSECTION
;; OPT PSEUDOSECTION:
EDNS: version: 0, flags:; udp: 65494
EDNS: version: 0
:扩展 DNS 的版本。flags:
:扩展 DNS 选项标志(此处为空)。udp: 65494
:服务器支持的最大 UDP 数据包大小(以字节为单位)。
查询部分
;; QUESTION SECTION:
;csdn.com. IN A
csdn.com.
:查询的域名。IN
:互联网类。A
:查询的记录类型(A 记录,用于解析域名到 IPv4 地址)。
响应部分
;; ANSWER SECTION:
csdn.com. 5 IN A 203.107.45.167
csdn.com.
:查询的域名。5
:记录的生存时间(TTL,单位是秒),表示此记录在 DNS 缓存中有效的时间。IN
:互联网类。A
:记录类型(A 记录)。203.107.45.167
:域名csdn.com
对应的 IPv4 地址。
其他信息
-
;; Query time: 88 msec
- 查询的响应时间,单位是毫秒。
-
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
- 使用的 DNS 服务器地址和端口号(127.0.0.53 是本地 DNS 解析器,端口号为 53)。
-
;; WHEN: Mon Aug 26 11:35:09 CST 2024
- 查询的时间和日期。
-
;; MSG SIZE rcvd: 53
- 响应消息的大小,单位是字节。
⑤ 浏览器中输入URL后,会有哪些过程
- DNS 解析:浏览器通过 DNS 解析获取 URL 对应的 IP 地址。
- 建立连接:使用 IP 地址,浏览器与目标服务器建立 TCP 连接。
- 发送请求:浏览器发送 HTTP/HTTPS 请求到服务器。
- 服务器响应:服务器处理请求并返回 HTML 文档及其他资源。
- 页面渲染:浏览器解析 HTML,加载 CSS、JavaScript,并渲染页面。
过程执行下来,确保了用户输入的 URL 被正确地转换成可视的网页内容。