【应用层】DNS协议

2023-11-15

一、概述

本篇文章基于《计算机网络》和《计算机网络:自顶向下方法》,为笔者的读书笔记,主要内容如下所示:

  • DNS提供的服务
  • 互联网的域名结构
  • DNS服务器的分布
  • DNS的工作原理
  • DNS记录 & 往DNS插入记录

二、DNS提供的服务

域名系统 DNS(Domain Name System) 提供的服务很简单,就是将便于人们使用的机器名字转换为IP地址。

我们都知道用户与互联网上的某台主机通信时必须知道对方的 IP 地址。相比于难以记忆的IP地址,用户更容易记住的是有具体含义的主机名字,例如我们访问百度的页面通常会选择输入www.baidu.com而不是183.232.231.172;但对于路由器来说,它更喜欢的则是定长的、有层次结构的 IP 地址。所以为了折衷这些不同的偏好,我们需要一种能进行主机名到 IP 地址转化的服务,域名系统 DNS 应运而生。

和 HTTP、FTP 和 SMTP 协议一样,DNS 协议是应用层协议,它同样是采用客户-服务端模式运行在通信的端系统之间。DNS 协议运行在 UDP 之上,采用的端口号是 53。在 Windows/Linux 的命令行窗口下,我们可以输入 dslookup 命令来查询域名对应的IP地址,如下所示:
在这里插入图片描述
这里我们以查询百度搜索域名的 IP 地址为例,可以看到返回的结果中显示 www.baidu.com 这个域名下对应两个 IP 地址,分别是183.232.231.172183.232.231.174


三、互联网的域名结构

互联网采用的是层次树状结构的命名方法,任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。域还可以划分为子域,而子域还可继续划分为子域的子域,这样就形成了顶级域、二级域、三级域,等等。下面通过一个例子来说明:
在这里插入图片描述
上图是新浪邮件服务器的域名,从语法上将,每一个域名都由标号(label)序列组成,各个标号之间用点隔开。其中标号 com 是顶级域名,标号 sina 是二级域名,标号 mail 是三级域名。DNS 对标号有如下规定:

  • 级别最高的顶级域名写在最右边,级别最低的域名卸载最左边;
  • 域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符;
  • 英文字母不区分大小写,也就是说 mail 和 MAIL 在域名中是等效的;
  • DNS既不规定一个域名需要包含多少个下级域名,也不规定每一级域名代表什么意思;
  • 各级域名由上一级的域名管理机构管理,而最高的顶级域名则由ICANN进行管理,这种方式可以确保每一个域名在整个互联网范围内都是唯一的

需要注意的是,域名中的点和IP地址中的点并无任何关系,域名只是一个便于人们使用和记忆的字符串,和IP地址存在映射关系。至于域名中的点所对应的顶级域名、二级域名等,和下面将要介绍的 DNS 的分布式和层次性设计有着很大的关系。


四、DNS服务器的分布

从理论上来说,整个互联网可以只使用一个 DNS 服务器,该服务器包含所有的映射,客户直接将所有查询发往一个 DNS 服务器,同时该 DNS 服务器直接对所有的查询客户做出响应。但是它并不适用于当今庞大的互联网,这种设计含有以下缺陷:

  • 单点故障。如果该 DNS 服务器崩溃,整个互联网随之瘫痪。
  • 通信
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【应用层】DNS协议 的相关文章

  • DNS 与 GKE 内部负载均衡器

    我在 GKE 上有两个 kubernetes 集群 一个公共集群处理与外界的交互 另一个私有集群仅供内部使用 公共集群需要访问私有集群上的一些服务 我已通过以下方式将这些服务暴露给公共集群的 Pod内部负载均衡器 https cloud g
  • 如何确定c#中的dns变化?

    我想监控dns地址的变化 所以我需要跟踪 dns 更改 我现在正在用线程来做 我获取 dns 并将其保存为文件 然后每 10 秒比较一次它们 但我需要更具体的解决方案 例如 有相关活动吗 这是代码 GetDns public List
  • Mac OSX Lion DNS 查找顺序 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 升级到 Mac OSX Lion 后 我发现 etc hosts 不再首先查找名称解析 这会导致一些副作用 例如 etc hosts 中的条目解析速度
  • 为开发环境分配域名localhost

    我正在构建一个网站 并且不想将网站从指向重新配置为http 127 0 0 1 to http www example com 此外 我使用的证书当然是用正确的域名制作的www example com但我的测试环境会调用127 0 0 1这
  • 多个项目使用同一网络的 Docker DNS

    我有以下内容docker compose yml file version 3 services frontend image alpine command tail f dev null networks shared default b
  • 将多个域指向 Nginx 中的一台虚拟主机

    基本上 我想将每个域名重定向到一个虚拟主机 即文档 http nginx org en docs http server names html看起来很清楚 server listen 80 server name domain1 com w
  • 完全合格的域名是否需要句点?

    我对 FQDN 完全合格域名 感到困惑 FQDN 是否需要以句点结尾 喜欢sun or sun tuc noao edu or sun tuc noao edu 有什么不同 IT 的工作原理 域名 系统 https technet micr
  • file_get_contents 失败并显示“getaddrinfo 失败:没有与主机名关联的地址”

    我正在尝试从另一台主机获取该页面 我按照 hph 手册所述 page file get contents http www example com echo page 但它失败了 在 apache 日志中我得到以下内容 Mon Oct 12
  • 端口 80 被我的 ISP 封锁,那么我的浏览器如何仍然工作?

    我知道当我请求 example com 时 我的浏览器实际上默认为 example com 80 但是 我的 ISP 阻止 80 端口侦听 那么如果端口 80 被阻止 我如何接收请求的响应 它不应该工作 不是吗 当您发出 HTTP 请求 实
  • 如何在iPhone中获取DNS服务器IP

    我尝试通过以下方式获取 etc resolv conf 打开 etc resolv conf 0644 但它返回 1并且errno是2这意味着 没有这样的文件 我能做些什么 您无法访问应用程序沙箱之外的文件
  • 简单的域名正则表达式

    如何确保域名符合这 3 个简单标准 以 com net 结尾 不得以 http 或 https http www 或 https www 我已经设法理解了正则表达式的这一部分 它与第一个标准相对应 com net 但我不知道如何实现另外两个
  • DNS预取和页面优化[重复]

    这个问题在这里已经有答案了 今天我在一个网页的 HTML 源代码中看到了这个片段
  • 相同视图和浏览器版本中不同的 IE XML/XSL 行为,但使用不同的域用户帐户

    我们的一位用户在尝试访问我们的 Web 应用程序视图之一时遇到问题 IE9 行为在 6 8 和 9 中显得一致 但在域帐户之间不一致 对于该特定用户的 Windows 域帐户 无论使用哪些凭据来访问我们的应用程序 或者使用哪台机器的浏览器
  • .NET 中机器的域名?

    一定有一种简单的方法可以做到这一点 我不敢相信没有 我扫描了网络 发现有 20 种不同的方法来查找当前用户所在的域 但没有一种方法可以获取当前计算机的域 或工作组 在非托管 c 中 这是通过以下方式检索的 WKSTA INFO 100 bu
  • 如果第一个域有文件夹路径,如何将一个域 301 重定向到另一个域

    我想要从 www olddomain com 进行 301 重定向到 newdomain com 的根目录 但无论旧域上的文件夹路径是什么 我都希望它能够正常工作 例如 以下内容都应重定向到 newdomain com 的根目录 www o
  • MongoDB:连接到 MongoDB 的 resolv.conf 的 DNS 问题

    我想从 MongoDB Atlas 导出一些数据 如果我执行下面的命令 它会尝试连接localhost并导出数据 mongoexport uri mongodb srv
  • 查询 dns 别名

    我找到了一些code http msdn microsoft com en us library system net dns gethostbyaddress VS 71 aspx来自 msdn 站点 下面包含代码 看起来它将返回给定服务
  • 跨多个域的 ASP.NET 会话

    是否有合适的 NET 解决方案来在多个域上提供持久服务器会话 即 如果该网站的用户在 www site1 com 下登录 他们也将在 www site2 com 下登录 安全是我们正在开发的程序的一个问题 Thanks 它是否需要在会话中
  • AWS Cloudfront 作为具有自定义域的 Heroku 站点的 CDN

    最近 我从 AWS Route 53 brianpatrickhummel com 购买了一个域来托管个人投资组合 该投资组合网站已启动并正在运行 使用 S3 存储桶和 Cloudfront 作为 CDN 在作品集网站上 访问者可以预览我构
  • AWS Route 53 - 公共子域无法公开访问?

    我已购买域名company com并创建公共子域sales company com 路由53中的公共托管区域 我将子域映射 创建 A 记录 到内部应用程序负载均衡器 ALB 即该 ALB 只能在我的公司网络内访问 我的理解是公共子域可以映射

随机推荐

  • 基于若依对接微信jssdk

    基于若依对接微信jssdk java package com ruoyi system controller import com alibaba fastjson2 JSONObject import com ruoyi common c
  • 电脑键盘练习_电脑初学者指法练习的基本知识

    对于电脑初学者来说 打字无疑是最基本的电脑操作 经常有人问笔者 如何才能提升打字的速度 我每次回答的都是让他多玩玩电脑 多打打字 熟能生巧 此外 打字指法也是提高打字速度的最有效训练基础 朋友们在练习的时候一定要使用正确的手指去按按键 下面
  • 文件管理.

    1 touch 创建测试用的空文件修改文件的时间戳记 格式 touch 选项 文件名 2 echo 创建文件并编辑内容 格式 echo 123 gt 111 3 dd转换和拷贝文件 格式 dd if 拿取容量的文件名 of 要创建的文件名
  • 多路查找树——2-3树和2-3-4树

    目录 2 3树定义 2 3树的插入 2 3树的删除 PS 2 3 4树定义 2 3 4树插入 2 3 4树删除 PS 2 3树定义 定义 多路查找树 其中每一个结点都具有两个孩子 称为2结点 或三个孩子 称为3结点 所有叶节点都在树结构的同
  • IBM MQ开发通用方法,包括客户端连接、服务器端连接、发送接受消息

    1 接口方法 IQueueManager java author weiya public interface IQueueManager 发送消息 param b param queueName roseuid 447BE52F01C2
  • cs寄存器 x86 特权模式_segmentation和保护模式(二)

    segmentation和保护模式 一 上文讲到了segment descriptor 把这些descriptors放在一起 在内存里连续分布 就构成了GDT Global Descriptor Table 所以GDT也可以被称为段 描述符
  • 总离差平方和推导公式

    总离差平方和推导
  • 使用股票程序交易系统应该注意哪些问题?

    尽管使用了程序交易系统 但交易者应该明白 交易的主体是人而不是程序交易系统 交易系统不过是贯彻交易者的思想 执行了交易者的指令而已 交易者仍是交易的主体 这一点不因使用了程序交易系统而改变 交易系统有其高峰期和低谷期 交易系统从大类来分可分
  • stream新特性

    package com jeethink system domain public class Employee public Integer age public String name public Integer getAge ret
  • 十几行代码就可以让你的微信小程序挂掉

    mpvue github 地址请参见 是一个使用Vue js 开发小程序的前端框架 框架基于 Vue js核心 mpvue 修改了 Vue js 的runtime 和compiler 实现 使其可以运行在小程序环境中 从而为小程序开发引入了
  • HTML5

    文章目录 前言 滚动长画幅 实现细节 语义化标签 语言的本地化 前言 本文将分析 AirPods Pro 产品介绍使用的技巧与有趣的第三方库 滚动长画幅 这次AirPods Pro 的产品介绍以一个由用户手动进行滚动推进的长画幅组成 这个长
  • day02-HTML5列表/表格/媒体元素/结构元素

    0目录 补充知识点 HTML5列表 HTML5表格 HTML5媒体元素 HTML5结构元素 1 行内元素和块元素 行内元素 不独占一行 例如 a 标签 strong标签 em标签 块级元素 独占一行 例如 p 标签 h1 h6标签 2 HT
  • Python爬虫系列之爬取猫眼电影,没办法出门就补一下往期电影吧

    前言 今天给大家介绍利用Python爬取并简单分析猫眼电影影评 让我们愉快地开始吧 开发工具 Python版本 3 6 4 相关模块 requests模块 pyecharts模块 jieba模块 scipy模块 wordcloud模块 以及
  • 运行Pangolin时提示以下错误: terminate called after throwing an instance of 'std::runtime_error'

    在运行Pangolin时提示以下错误 terminate called after throwing an instance of std runtime error what Pangolin X11 Unable to retrieve
  • 增强现实代码+注释解析(三)

    1 书名 Mastering OpenCV with Practical Computer Vision Projects 2 章节 Chapter 3 Marker less Augmented Reality 3 书中源代码的最新更新可
  • CustomEditor+ScripableObject 简单用法

    写在前面 看了一整天 算是明白了点 记录一下 要是不知道怎么入门可以看一下 希望能帮到您 Ps 本文一律采用c 进行讲解 用途 自定义inspector 监视器 面板 举个例子 你在ScriptableObejct里声明了一个string类
  • Linux安装——VMware + RedHat

    文章目录 1 安装VMware虚拟机 2 安装RedHat红帽系统 2 1 虚拟机设置 2 2 开启虚拟机 3 cannot updata read only repo 3 1 删除自带yum包 3 2 下载centos版本yum包替换 3
  • Mysql 5.7 / 5.8 性能测试

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 转载于 https my oschina net u 582827 blog 1802981
  • Python训练了个模型,怎么交给Java用呢?

    最近碰到几个人问 如何实现 java 调用他们写好的 Python 应用 模型 这里我就把几种常见的办法做下汇总整理 喜欢本文记得收藏 关注 点赞 注 文末提供技术交流群 推荐文章 李宏毅 机器学习 国语课程 2022 来了 有人把吴恩达老
  • 【应用层】DNS协议

    一 概述 本篇文章基于 计算机网络 和 计算机网络 自顶向下方法 为笔者的读书笔记 主要内容如下所示 DNS提供的服务 互联网的域名结构 DNS服务器的分布 DNS的工作原理 DNS记录 往DNS插入记录 二 DNS提供的服务 域名系统 D