【网络基础】DNS协议详解:从背景到解析过程及`dig`工具的使用

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
  1. 顶级域名(Top-Level Domain, TLD):“com”:顶级域名位于最右侧,是域名层级结构的最高级别,用于指示域名的类别或国家/地区代码。

  2. 二级域名(Second-Level Domain):“example”:二级域名位于顶级域名之前,是主要的域名标识部分,通常用于表示组织、企业、品牌。

  3. 子域名(Subdomain):“www.”:子域名位于二级域名之前,用于进一步细分域名的层级结构。


③ DNS解析过程

这里简单用文字解释:

  1. 用户请求:用户在浏览器输入网址,发起 DNS 查询。
  2. 本地缓存检查:浏览器和操作系统检查本地缓存是否已有对应 IP 地址。
  3. 递归查询:如果缓存中没有,递归 DNS 服务器开始查询。它首先联系根 DNS 服务器,获取顶级域名服务器的地址。
  4. TLD 服务器查询:递归 DNS 服务器向顶级域名服务器询问,然后获得权威 DNS 服务器的地址。
  5. 权威服务器查询:递归 DNS 服务器向权威 DNS 服务器请求,最终获得域名对应的 IP 地址。
  6. 结果返回: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后,会有哪些过程

  1. DNS 解析:浏览器通过 DNS 解析获取 URL 对应的 IP 地址。
  2. 建立连接:使用 IP 地址,浏览器与目标服务器建立 TCP 连接。
  3. 发送请求:浏览器发送 HTTP/HTTPS 请求到服务器。
  4. 服务器响应:服务器处理请求并返回 HTML 文档及其他资源。
  5. 页面渲染:浏览器解析 HTML,加载 CSS、JavaScript,并渲染页面。

过程执行下来,确保了用户输入的 URL 被正确地转换成可视的网页内容。

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值