从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • 计算机简史

  • 数字电路

  • 计算机组成原理

  • 操作系统

  • Linux

  • 计算机网络

    • 计算机网络微课堂

    • 计算机网络微课堂-实验手册

    • 从零开始学计算机网络

      • DNS 入门
        • 什么是 DNS
        • A 记录举例
        • NS 记录举例
        • CNAME 记录举例
        • MX 记录举例
        • DNS 的查询过程
  • 数据库

  • 编程工具

  • 装机

  • 计算机基础
  • 计算机网络
  • 从零开始学计算机网络
2024-01-09
目录

DNS 入门

# 10.DNS入门

DNS 是很常用的互联网协议,很有必要了解一下。

‍

‍

# 什么是 DNS

DNS,全称 Domain Name System,它的作用只有一个:根据域名查出对应 IP 地址。

那它内部是怎么实现的呢?它其实就是一个分布式的数据库,数据库里存储了域名和 IP 的对应关系。当有请求要查询时,就从数据库里查询,然后返回;当有数据要更新时,就更新数据库。就这么简单。

具体说来,DNS 保存了一个个资源记录(Resource Record,简称 RR),每个记录有 4 个字段,格式为:(Name, Value, Type, TTL)。

根据使用场景,"记录"可以分成不同的类型(type),例如:

  • A:地址记录(Address),返回域名的 IP 地址

  • NS:域名服务器记录(Name Server),可以理解为该域名由哪个域名解析服务器来解析。

  • MX:邮件记录(Mail eXchange),返回电子邮件的服务器地址

  • CNMAE:规范名称记录(也叫别名记录),返回另一个域名。例如 ping 本博客的时候,可以发现实际 ping 的域名是 www.peterjxl.com.w.cdngslb.com(这个是 CDN 的域名,用来加速网站的),实现这个的原理就是 CNAME 记录,用户访问 www.peterjxl.com 的时候,实际上访问的是 www.peterjxl.com.w.cdngslb.com:

    C:\WINDOWS\system32> ping www.peterjxl.com
    
    Pinging www.peterjxl.com.w.cdngslb.com [119.147.148.176] with 32 bytes of data:
    Reply from 119.147.148.176: bytes=32 time=8ms TTL=56
    Reply from 119.147.148.176: bytes=32 time=8ms TTL=56
    Reply from 119.147.148.176: bytes=32 time=8ms TTL=56
    Reply from 119.147.148.176: bytes=32 time=8ms TTL=56
    
    Ping statistics for 119.147.148.176:
        Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
        Minimum = 8ms, Maximum = 8ms, Average = 8ms
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

# A 记录举例

举个实际的例子:搭建一个博客并绑定域名(具体可以参考 从零开始搭建博客系列)

我在云服务器厂商上买了一个域名,买了一个服务器;然后在服务器上搭建了一个网站:

‍

但是这 IP 不好记,我们可以给它加个域名,以后用户就可以用域名来访问了:

‍

那怎么绑定呢?加个解析记录,例如我给 peterjxl.com 加了个记录,这样用户访问 peterjxl.com 的时候,会返回一个 IP 地址(下图的记录值),然后 HTTP 协议就可以用运输层协议来建立 TCP/UDP 连接了(因为已经知道了 IP),然后就可以访问网站了。

‍

并且在 ping 的时候,也可以看到主机的 IP(已脱敏):

$ ping peterjxl.com

Pinging peterjxl.com [1xx.xx.xx.xx] with 32 bytes of data:
Reply from 1xx.xx.xx.xx: bytes=32 time=26ms TTL=52
Reply from 1xx.xx.xx.xx: bytes=32 time=26ms TTL=52
Reply from 1xx.xx.xx.xx: bytes=32 time=26ms TTL=52
Reply from 1xx.xx.xx.xx: bytes=32 time=26ms TTL=52

Ping statistics for 1xx.xx.xx.xx::
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 26ms, Maximum = 26ms, Average = 26ms
1
2
3
4
5
6
7
8
9
10
11
12

上述配置里,主机记录为 @ 表示是主域名,也就是我们可以直接通过主域名访问网站:

我们也可购买和配置子域名,例如 www.peterjxl.com:

‍

或者只配置子域名的解析记录,不配置主域名的解析记录,也是可以的 ‍

# NS 记录举例

NS 记录,可以理解为该域名由哪个域名解析服务器来解析。我们在注册域名的时候,总会有一个默认的 DNS 服务器:

‍

该 DNS 服务器会负责 peterjxl.com 的解析。我们在添加各类解析记录的时候,也是会将记录发送给这些服务器,等访客要访问的时候,DNS 协议就会向该 DNS 服务器发送请求,获取实际的 IP 地址,然后建立 TCP/UDP 连接。 ‍ 当然,我们也是可以修改默认 DNS 服务器的,例如修改为一些高防的 DNS,这里不展开:

‍

不过这样之前添加的解析记录,就得自己迁移到新的 DNS 服务器了。 ‍

# CNAME 记录举例

这里以阿里云的产品:CDN 的文档 (opens new window)来说明。

CDN 全称 Content Delivery Network,内容分发网络;用处是加速网站,可以理解为使用 CDN 后,访问网站的速度会变快。

那么原理是什么呢?

首先,将源站的内容(例如 HTML,CSS,JS 等)放到阿里云的服务器上(在 CDN 里叫做节点),而阿里云在全球都有很多的服务器;当访客访问网站的时候,会就近选择节点上的资源,然后返回内容给用户。

举个生活中的例子:在广州的小明想要吃 KFC,那么当他打开地图软件搜索 KFC 时,地图软件会就近搜索附近的 KFC 餐厅,然后返回结果给到小明;而在其他城市的人也是一样,搜索的时候会就近搜索。

‍以下内容摘自阿里云 CDN 文档 (opens new window):

假设您的加速域名为 www.aliyundoc.com,接入 CDN 开始加速服务后,当终端用户在北京发起 HTTP 请求时,处理流程如下图所示。

  1. 当终端用户向 www.aliyundoc.com 下的指定资源发起请求时,首先向 Local DNS(本地 DNS)发起请求域名 www.aliyundoc.com 对应的 IP。
  2. Local DNS 检查缓存中是否有 www.aliyundoc.com 的 IP 地址记录。如果有,则直接返回给终端用户;如果没有,则向网站授权 DNS 请求域名 www.aliyundoc.com 的解析记录。
  3. 当网站授权 DNS 解析 www.aliyundoc.com 后,返回域名的 CNAME www.aliyundoc.com.example.com。
  4. Local DNS 向阿里云 CDN 的 DNS 调度系统请求域名 www.aliyundoc.com.example.com 的解析记录,阿里云 CDN 的 DNS 调度系统将为其分配最佳节点 IP 地址。
  5. Local DNS 获取阿里云 CDN 的 DNS 调度系统返回的最佳节点 IP 地址。
  6. Local DNS 将最佳节点 IP 地址返回给用户,用户获取到最佳节点 IP 地址。
  7. 用户向最佳节点 IP 地址发起对该资源的访问请求。

例如,我的 CNAME 记录是这样添加的:

# MX 记录举例

MX 记录主要是自己搭建邮件服务器时用到的,不过国内管得比较严,基本上不允许自行搭建邮件服务器,这里不展开。

# DNS 的查询过程

DNS 的查询过程比较复杂,建议阅读阮一峰老师的博客:DNS 查询原理详解 - 阮一峰的网络日志 (opens new window)。读完后会对 DNS 有基本的认知。## 推荐阅读

DNS 原理入门 - 阮一峰的网络日志 (opens new window)

DNS 查询原理详解 - 阮一峰的网络日志 (opens new window)

抓包理解 DNS 流程和 CDN 原理 - 知乎 (opens new window)

一文搞懂 DNS 基础知识,收藏起来有备无患~ (opens new window)

美国能让中国从网络上消失? (opens new window)

真的黑客能让你分分钟开进沟里,但他们不屑于此 (opens new window)

nslookup 入门命令详解 - 知乎 (opens new window)

上次更新: 2025/6/3 09:31:54
《计算机网络微课堂》终:结束,也是开始
教程概述

← 《计算机网络微课堂》终:结束,也是开始 教程概述→

最近更新
01
学点统计学:轻松识破一本正经的胡说八道
06-05
02
2025 年 5 月记
05-31
03
《贫穷的本质》很棒,但可能不适合你
05-27
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式