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

2024-08-26 18:44

本文主要是介绍【网络基础】DNS协议详解:从背景到解析过程及`dig`工具的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 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
  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 被正确地转换成可视的网页内容。

这篇关于【网络基础】DNS协议详解:从背景到解析过程及`dig`工具的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109375

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof