DNS 详细过程 与 ICMP

🌈 个人主页:Zfox_
🔥 系列专栏:Linux

目录

  • 一:🔥 DNS (Domain Name System) 快速了解
    • 🦋 DNS 背景
    • 🦋 域名简介
    • 🦋 真实地址查询 —— DNS
      • 🎀 域名的层级关系
      • 🎀 域名解析的工作流程:
  • 二:🔥 使用 `dig` 工具分析 DNS 过程
    • 🦋 安装 `dig` 工具
    • 🦋 `dig` 命令的基本用法
      • 🎀 1. 查询单个域名的 DNS 信息
      • 🎀 2. 查询结果的结构
      • 🎀 3. 解释查询结果
    • 🦋 高级用法
      • 🎀 1. 查询特定类型的 DNS 记录
      • 🎀 2. 指定 DNS 服务器
      • 🎀 3. 反向查询(IP 到域名)
      • 🎀 4. 控制输出结果
      • 🎀 5. 查看 TTL(生存时间)
      • 🎀 6. 跟踪查询过程
    • 🦋 DNS 缓存
      • 🎀 1. 系统级 DNS 缓存
      • 🎀 2. 浏览器级 DNS 缓存
  • 三:🔥 ICMP 协议快速了解
    • 🦋 ICMP 协议简介
    • 🦋 ICMP 的主要功能
    • 🦋 ICMP 的报文格式(选学)
    • 🦋 ping 命令
    • 🦋 一个值得注意的坑
    • 🦋 traceroute 命令
  • 四:🔥 浏览器上输入网址域名后点击回车,到底发生了什么?
  • 五:🔥 共勉

一:🔥 DNS (Domain Name System) 快速了解

💬 DNS 是一整套从域名映射到 IP 的系统

🦋 DNS 背景

🦈 在 TCP/IP 协议中,通过 IP 地址端口号 来确定网络上的一台主机的一个程序。然而,IP 地址不方便记忆,因此人们发明了主机名(hostname),这是一种字符串形式的名称。为了描述主机名和 IP 地址之间的关系,最初使用了 hosts 文件。

Hosts 文件示例

最初,互联网信息中心(SRI-NIC)负责管理这个 hosts 文件:

  • 如果一台新计算机要接入网络,或者某台计算机的 IP 地址变更,都需要向信息中心申请更新 hosts 文件。
  • 其他计算机也需要定期下载更新版本的 hosts 文件,才能正确访问网络资源。

🫙 这种管理方式非常繁琐,因此 DNS 系统应运而生:

  • 一个组织的系统管理机构负责维护系统内每个主机的 IP 地址 和 主机名 的对应关系。
  • 当有新计算机接入网络时,将这些信息注册到数据库中。
  • 当用户输入域名时,会自动查询 DNS 服务器,由 DNS 服务器检索数据库,返回对应的 IP 地址。

至今,我们的计算机上仍然保留了 hosts 文件。在域名解析过程中,系统会优先查找 hosts 文件的内容。

cat /etc/hosts

🦋 域名简介

🕸️ 主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称。例如:

  • www.baidu.com
    • com:一级域名,表示这是一个企业域名。同级的还有 net(网络提供商)、org(非盈利组织)等。
    • baidu:二级域名,公司名。
    • www:只是一种习惯用法。之前人们在使用域名时,往往命名成类似于 ftp.xxx.xxxwww.xxx.xxx 的格式,来表示主机支持的协议。

🦋 真实地址查询 —— DNS

🌍 通过浏览器解析 URL 并生成 HTTP 消息后,需要委托操作系统将消息发送给 Web 服务器。但在发送之前,还有一项工作需要完成,那就是查询服务器域名对应的 IP 地址,因为委托操作系统发送消息时,必须提供通信对象的 IP 地址。

比如我们打电话的时候,必须要知道对方的电话号码,但由于电话号码难以记忆,所以通常我们会将对方电话号 + 姓名保存在通讯录里。

所以,有一种服务器就专门保存了 Web 服务器域名与 IP 的对应关系,它就是 DNS 服务器。

🎀 域名的层级关系

DNS 中的域名都是用句点来分隔的,比如 www.server.com,这里的句点代表了不同层次之间的界限。

在域名中,越靠右的位置表示其层级越高。

毕竟域名是外国人发明,所以思维和中国人相反,比如说一个城市地点的时候,外国喜欢从小到大的方式顺序说起(如 XX 街道 XX 区 XX 市 XX 省),而中国则喜欢从大到小的顺序(如 XX 省 XX 市 XX 区 XX 街道)。

实际上域名最后还有一个点,比如 www.server.com.,这个最后的一个点代表根域名。

也就是,. 根域是在最顶层,它的下一层就是 .com 顶级域,再下面是 server.com

所以域名的层级关系类似一个树状结构:

  • 🫧 根 DNS 服务器(.)
  • 🫧 顶级域 DNS 服务器(.com)
  • 🫧 权威 DNS 服务器(server.com)

在这里插入图片描述

根域的 DNS 服务器信息保存在互联网中所有的 DNS 服务器中。

这样一来,任何 DNS 服务器就都可以找到并访问根域 DNS 服务器了。

因此,客户端只要能够找到任意一台 DNS 服务器,就可以通过它找到根域 DNS 服务器,然后再一路顺藤摸瓜找到位于下层的某台目标 DNS 服务器。

🎀 域名解析的工作流程:

  1. 客户端首先会发出一个 DNS 请求,问 www.server.com 的 IP 是啥,并发给本地 DNS 服务器(也就是客户端的 TCP/IP 设置中填写的 DNS 服务器地址)。
  2. 本地域名服务器收到客户端的请求后,如果缓存里的表格能找到 www.server.com,则它直接返回 IP 地址。如果没有,本地 DNS 会去问它的根域名服务器:“老大,能告诉我 www.server.com 的 IP 地址吗?” 根域名服务器是最高层次的,它不直接用于域名解析,但能指明一条道路。
  3. DNS 收到来自本地 DNS 的请求后,发现后置是 .com,说:“www.server.com 这个域名归 .com 区域管理”,我给你 .com 顶级域名服务器地址给你,你去问问它吧。"
  4. 本地 DNS 收到顶级域名服务器的地址后,发起请求问:“老二,你能告诉我 www.server.com 的 IP 地址吗?”
  5. 顶级域名服务器说:“我给你负责 www.server.com 区域的权威 DNS 服务器的地址,你去问它应该能问到”。
  6. 本地 DNS 于是转向问权威 DNS 服务器:“老三,www.server.com 对应的 IP 是啥呀?” server.com 的权威 DNS 服务器,它是域名解析结果的原出处。为啥叫权威呢?就是我的域名我做主。
  7. 权威 DNS 服务器查询后将对应的 IP 地址 x.x.X.x 告诉本地 DNS
  8. 本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接。

至此,我们完成了 DNS 的解析过程。现在总结一下,整个过程我画成了一个图,

DNS 解析过程

DNS 域名解析的过程蛮有意思的,整个过程就和我们日常生活中找人问路的过程类似,只指路不带路。

那是不是每次解析域名都要经过那么多的步骤呢?

当然不是了,还有缓存这个东西的嘛。

🛸 浏览器会先看自身有没有对这个域名的缓存,如果有,就直接返回,如果没有,就去问操作系统,操作系统也会去看自己的缓存,如果有,就直接返回,如果没有,再去 hosts 文件看,也没有,才会去问「本地 DNS 服务器」。

二:🔥 使用 dig 工具分析 DNS 过程

🦋 安装 dig 工具

在 Linux 系统中,dig 是一个强大的 DNS 查询工具,通常需要手动安装。使用以下命令安装 dig

# 对于基于 Red Hat 的系统(如 CentOS)
sudo yum install bind-utils# 对于基于 Debian 的系统(如 Ubuntu)
sudo apt-get install dnsutils

安装完成后,就可以使用 dig 命令查看域名解析过程了。

🦋 dig 命令的基本用法

🎀 1. 查询单个域名的 DNS 信息

最简单的用法是直接查询一个域名的 DNS 信息。例如,查询 www.baidu.com 的 DNS 记录:

dig www.baidu.com

🎀 2. 查询结果的结构

dig 命令的输出分为多个部分:

  1. 版本信息:显示 dig 的版本和命令参数。
  2. 查询状态:显示查询的状态(如 NOERROR 表示查询成功)。
  3. QUESTION SECTION:显示要查询的域名和记录类型。
  4. ANSWER SECTION:显示查询结果。
  5. 统计信息:显示查询时间、DNS 服务器地址等。

例如:

root@hcss-ecs-a9ee:~# dig www.baidu.com; <<>> DiG 9.18.30-0ubuntu0.22.04.2-Ubuntu <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62911
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1;; QUESTION SECTION:
;www.baidu.com.			IN	A;; ANSWER SECTION:
www.baidu.com.		52	IN	CNAME	www.a.shifen.com.
www.a.shifen.com.	50	IN	A	183.2.172.177
www.a.shifen.com.	50	IN	A	183.2.172.17;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Mon Mar 03 19:46:51 CST 2025
;; MSG SIZE  rcvd: 101

🎀 3. 解释查询结果

  • QUESTION SECTIONwww.baidu.com 的查询类型为 A(IPv4 地址)。
  • ANSWER SECTION
    • www.baidu.com 被解析为 www.a.shifen.com(CNAME 记录)。
    • www.a.shifen.com 被解析为两个 IP 地址:183.2.172.177183.2.172.17
  • 统计信息:查询时间、使用的 DNS 服务器等。

🦋 高级用法

🎀 1. 查询特定类型的 DNS 记录

dig 支持查询多种 DNS 记录类型。例如,查询 CNAME 记录:

dig www.baidu.com CNAME

查询 MX 记录(邮件交换记录):

dig baidu.com MX

🎀 2. 指定 DNS 服务器

默认情况下,dig 会使用系统配置的 DNS 服务器(如 /etc/resolv.conf 中的服务器)。如果需要指定一个特定的 DNS 服务器,可以使用 @ 符号:

dig @8.8.8.8 www.baidu.com

🎀 3. 反向查询(IP 到域名)

使用 -x 选项可以进行反向查询,将 IP 地址解析为域名:

dig -x 8.8.8.8 +short

🎀 4. 控制输出结果

dig 提供了多种选项来控制输出内容:

  • 精简输出+short,只显示查询结果。
  • 完整输出:默认显示所有信息。
  • 自定义输出:例如,只显示 ANSWER SECTION
dig www.baidu.com +noall +answer

🎀 5. 查看 TTL(生存时间)

TTL 表示 DNS 记录在缓存中的有效时间(单位:秒)。可以通过以下命令查看:

dig www.baidu.com +ttlid

🎀 6. 跟踪查询过程

使用 +trace 选项可以跟踪 DNS 查询的完整过程,从根域到最终结果:

dig www.baidu.com +trace

🦋 DNS 缓存

DNS 缓存可以提高查询效率,减少对外部 DNS 服务器的请求。以下是查看 DNS 缓存的方法:

🎀 1. 系统级 DNS 缓存

在 Windows 系统中,可以使用以下命令查看系统级 DNS 缓存:

ipconfig /displaydns

🎀 2. 浏览器级 DNS 缓存

浏览器也会缓存 DNS 记录。清除浏览器缓存的方法因浏览器而异,可以自行搜索相关操作。

三:🔥 ICMP 协议快速了解

🦋 ICMP 协议简介

✍️ ICMP(Internet Control Message Protocol ,互联网控制消息协议)是一个网络层协议,主要用于在网络中发送 控制消息 和 错误报告。它为 IP 协议提供了必要的补充功能,尤其是在网络调试和故障排查方面。

一个新搭建好的网络,往往需要先进行一个简单的测试来验证网络是否畅通。然而,IP 协议本身并不提供可靠传输机制。如果数据包在传输过程中丢失,IP 协议无法通知传输层丢包的原因。ICMP 正是为了解决这一问题而设计的。

🦋 ICMP 的主要功能

ICMP 的主要功能包括:

  • 确认 IP 包是否成功到达目标地址:通过发送 ICMP Echo Request 和接收 ICMP Echo Reply,可以验证网络连通性。
  • 通知 IP 包在发送过程中被丢弃的原因:例如,目标不可达、超时、数据包过大等。
  • 辅助网络诊断ICMP 提供了多种报文类型,用于诊断网络问题。

在这里插入图片描述

ICMP 是基于 IP 协议工作的,但它并不是传输层的功能,因此仍然被归结为网络层协议。需要注意的是,ICMP 只能搭配 IPv4 使用。如果是 Pv6 的情况,则需要使用 ICMPv6

🦋 ICMP 的报文格式(选学)

📰 关于报文格式, 我们并不打算重点关注, 大家稍微有个了解即可
在这里插入图片描述

ICMP 报文分为两类:

  1. 错误消息:用于通知发送方在传输过程中发生的错误,例如目标不可达、超时等。
  2. 查询消息:用于诊断和查询网络状态,例如 ICMP Echo RequestEcho Reply
    在这里插入图片描述

🦋 ping 命令

ping 是一个基于 ICMP 协议的常用网络工具,用于测试网络连通性。

ping www.example.com
  • ping 命令的作用

    • 验证网络连通性:通过发送 ICMP Echo Request 和接收 ICMP Echo Reply 来确认目标主机是否可达。
    • 统计响应时间:测量从发送请求到接收回复的时间,单位为毫秒。
    • 显示 TTL(Time To Live):IP 数据包的生存周期,表示数据包在网络中可以经过的最大跳数。
  • 工作原理

    • ping 命令会先发送一个 ICMP Echo Request 给目标主机。
    • 目标主机接收到请求后,会返回一个 ICMP Echo Reply
    • 如果目标主机不可达,中间的路由器可能会返回一个 ICMP 错误消息,例如“目标不可达”。
      在这里插入图片描述

🦋 一个值得注意的坑

  • 在面试中,面试官可能会问:“telnet 是 23 端口,ssh 是 22 端口,那么 ping 是什么端口?”

请注意,这是一个常见的陷阱问题 !

ping 命令基于 ICMP 协议,工作在网络层,而端口号是传输层的概念。ICMP 并不使用端口号,因此 ping 不涉及端口号。

🦋 traceroute 命令

traceroute 是另一个基于 ICMP 协议的工具,用于显示数据包从源主机到目标主机所经过的路径。

traceroute www.example.com

在这里插入图片描述

  • 工作原理
    • traceroute 通过发送一系列带有递增 TTL 的 ICMP Echo Request 或 UDP 数据包,记录每个跳数的路由器地址。
    • 每个中间路由器在 TTL 超时时会返回一个 ICMP Time Exceeded 消息,从而揭示路径上的路由器。
    • 最终目标主机返回一个 ICMP Echo Reply 或其他响应,表示路径追踪完成。

四:🔥 浏览器上输入网址域名后点击回车,到底发生了什么?

  • https://xiaolincoding.com/network/1_base/what_happen_url.html#%E5%AD%A4%E5%8D%95%E5%B0%8F%E5%BC%9F-http

  • https://blog.csdn.net/wuhenliushui/article/details/20038819/

五:🔥 共勉

😋 以上就是我对 DNS 与 ICMP 的理解, 觉得这篇博客对你有帮助的,可以点赞收藏关注支持一波~ 😉
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27372.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C/C++算法】从浅到深学习--- 位操作算法(图文兼备 + 源码详解)

绪论&#xff1a;冲击蓝桥杯一起加油&#xff01;&#xff01; 每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” 绪论​&#xff1a; 今天总结了下位操作中常见的使用的方法&#xff0c;并且附加许多训练&#xff0c;通过…

【每日八股】计算机网络篇(二):TCP 和 UDP

目录 TCP 的头部结构&#xff1f;TCP 如何保证可靠传输&#xff1f;1. 确认应答机制2. 超时重传3. 数据排序与去重4. 流量控制5. 拥塞控制6. 校验和 TCP 的三次握手&#xff1f;第一次握手第二次握手第三次握手 TCP 为什么要三次握手&#xff1f;问题一&#xff1a;防止历史连接…

Tomcat-web服务器介绍以及安装部署

一、Tomcat简介 Tomcat是Apache软件基金会&#xff08;Apache Software Foundation&#xff09;的Jakarta 项目中的一个核心项目&#xff0c;由Apache、Sun和其他一些公司及个人共同开发而成。 Tomcat服务器是一个免费的开放源代码的Web应用服务器&#xff0c;属于轻量级应用…

【通俗讲解电子电路】——从零开始理解生活中的电路(三)

实际应用案例&#xff1a;生活中的电子电路 ——拆解你身边的“隐形工程师” 1. 手电筒电路&#xff1a;最简单的直流系统 电路组成 电源&#xff1a;2节1.5V电池&#xff08;串联3V&#xff09;。 开关&#xff1a;按钮控制回路通断。 LED&#xff1a;发光二极管&#xff…

部署Windows Server自带“工作文件夹”实现企业网盘功能完整步骤

前文已经讲解过Windows Server自带的“工作文件夹”功能&#xff0c;现以Windows Server 2025为例介绍部署工作文件夹的完整步骤&#xff1a; 为了确保您能够顺利部署和充分利用工作文件夹的功能&#xff0c;我将按照以下步骤进行讲解。 请注意&#xff0c;在域环境中部署工作…

详解LSM树

目录 什么是LSM树 磁盘结构与顺序IO LSM树结构 LSM树的写入 SSTable合并 LSM树的读取 LSM树的删除 总结 什么是LSM树 LSM 树全名日志结构合并树&#xff08;Log-Structured Merge Tree&#xff09;&#xff0c;是一种用于存储和管理数据的树状数据结构&#xff0c;常用…

ABAP语言的动态编程(3) - data reference 对象

如果数据对象的类型在运行时才知道&#xff0c;就需要用到 data reference 对象。 Data references can point to any data objects or to their parts (components, rows of internal tables, or sections specified by offsets and lengths) 也就是说 data reference 对象其实…

Excel的行高、列宽单位不统一?还是LaTeX靠谱

想要生成田字格、米字格、带拼音标准&#xff0c;方便小学生书法和练字。Word&#xff0c;Excel之类所见即所得是最容易相当的方式。但它们处理带田字格之类背景时&#xff0c;如果没有专用模板、奇奇怪怪的插件&#xff0c;使用起来会碰到各种问题。比如&#xff0c;Word里面用…

Stepdown SLOPE for Controlled Feature Selection

文章&#xff1a;《Stepdown SLOPE for Controlled Feature Selection》 如何保证错选率可控地特征选择&#xff1f;&#xff1f;&#xff1f;&#xff1f; 研究背景 现有SLOPE方法主要关注FDR&#xff08;错误发现率&#xff09;控制&#xff0c;但在实际应用中需更严格地控…

mysql空间占用

1、查询数据库占用空间 可以通过查询 information_schema 系统数据库中的 SCHEMATA 表和 TABLES 表来获取数据库占用的空间大小。 SELECT table_schema AS 数据库名称,SUM(data_length index_length) / 1024 / 1024 AS 占用空间(MB) FROM information_schema.TABLES GROUP BY…

量子关联特性的多维度探索:五量子比特星型系统与两量子比特系统的对比分析

模拟一个五量子比特系统&#xff0c;其中四个量子比特&#xff08;编号为1, 2, 3, 4&#xff09;分别与第五个量子比特&#xff08;编号为5&#xff09;耦合&#xff0c;形成一个星型结构。分析量子比特1和2的纠缠熵随时间的变化。 系统的哈密顿量H描述了量子比特间的相互作用…

嵌入式学习笔记-卡尔曼滤波,PID,MicroPython

文章目录 卡尔曼滤波卡尔曼滤波的核心思想卡尔曼滤波的数学模型1. 状态转移模型&#xff08;预测系统状态&#xff09;2. 观测模型&#xff08;预测测量值&#xff09; 卡尔曼滤波的五个关键步骤1. 预测状态2. 预测误差协方差3. 计算卡尔曼增益4. 更新状态5. 更新误差协方差 卡…

计算机网络学习————(五)TCP/IP学习

前文学习&#xff1a; 一、二、三、四 学习来源网站 &#xff1a; 极客时间 TCP协议 发展历史 ARPA-NCP协议————可扩展性差、且对应的一般为单对单 解决问题&#xff1a; 在IP协议之上&#xff0c;解决网络通讯可依赖问题 点对点&#xff0c;面向连接 双向传递 字节流&am…

智能笔记,智慧管理:Obsidian 与 DeepSeek 携手引领 AI 知识新时代

清华大学出品《DeepSeek&#xff1a;从入门到精通》分享 清华大学出品《DeepSeek&#xff1a;从入门到精通》分享 清华大学出品《DeepSeek&#xff1a;从入门到精通》分享 AI 助力下的知识管理革新&#xff1a;构建你的智能 Obsidian 系统 在数字时代&#xff0c;如何高效地整…

VSCode 移除EmmyLua插件的红色波浪线提示

VSCode 中安装插件EmmyLua&#xff0c;然后打开lua文件的时候&#xff0c;如果lua代码引用了C#脚本的变量&#xff0c;经常出现 “undefined global variable: UnityEngineEmmyLua(undefined-global)” 的红色波浪线提示&#xff0c;这个提示看着比较烦人&#xff0c;我们可以通…

优得运维推出光伏电站运维精进班,助力新能源行业人才培养

随着全球新能源产业的快速发展&#xff0c;光伏电站的运维需求日益增长。为了满足行业对高素质运维人才的需求&#xff0c;优得运维——联盛新能源集团的核心成员&#xff0c;正式推出光伏电站运维精进班。该课程旨在通过系统化的培训&#xff0c;帮助学员夯实电工基础、提升应…

anything文本分割优化

1、文本分割优化&#xff0c;建议 200 和40&#xff0c;把文档切得更碎一些方便检索命中。 2、RAG接口进一步优化 /*** RAG知识库接口** param prompt* return*/GetMapping(value "/rag/chat", produces MediaType.TEXT_EVENT_STREAM_VALUE)public Flux<ChatCom…

全志A133 android10 mipi屏幕调试

一&#xff0c;确认屏幕信息 屏幕调试首先要查看屏幕规格书&#xff0c;主要看里面的屏供电电压vdd&#xff0c;背光供电电压&#xff0c;timing参数部分。 举个例子&#xff1a; 屏供电电压 可以看出供电电压为3.3V&#xff0c;过大则会烧屏&#xff1b;背光供电电压 屏幕…

(下:补充——五个模型的理论基础)深度学习——图像分类篇章

目录 1.1 卷积神经网络基础 3.1 AlexNet网络结构详解与花分类数据集下载 4.1 VGG网络详解及感受野的计算 5.1 GoogLeNet网络详解 6.1 ResNet网络结构&#xff0c;BN以及迁移学习详解 总结&#xff08;可以直接看总结&#xff09; 1.1 卷积神经网络基础 视频讲解&#xf…

批量给 Word 添加文字和图片水印

在 Word 中添加水印是非常常见的一个需求&#xff0c;当我们需要将 Word 文档发送给第三方&#xff0c;或者需要将 Word 文档打印出来的时候&#xff0c;给 Word 文档加上水印是一个很重要的操作&#xff0c;可以声明版权&#xff0c;也可以起到广告标识作用。如果少量 Word 文…