计算机网络应用层笔记--域名系统DNS

域名系统DNS

    • 标识因特网上主机的方式
      • 主机名
      • IP地址
    • 域名系统(DNS)
      • 工作过程
    • 互联网的域名结构
      • 顶级域名
        • 国家顶级域名nTLD
        • 通用顶级域名gTLD
        • 基础结构域名
      • 二级域名
        • 类别域名
        • 行政区域名
      • 域名树
      • DNS规定
    • 域名服务器
      • 域名服务器的层次
        • 根域名服务器
        • 顶级域名服务器(TLD服务器)
        • 权限域名服务器
        • 本地域名服务器
      • 域名解析过程
        • 递归查询
        • 迭代查询

标识因特网上主机的方式

主机名

计算机的名字。我现在的主机名字为DESKTOP-E8FG2MI。其他如:www。主机名几乎没有提供在因特网的位置。
两种查看方式:

  • 右键点击我的电脑属性。
  • 在cmd中输入ipconfig/all。

IP地址

网络层的内容。形如:121.7.106. 83
IP地址具有层次结构,是因为当我们从左至右扫描它时,我们会得到越来越具体的关于主机位于因特网何处的信息(即在众多网络的哪个网络里)。
路由器这样喜欢定长的、有着层次结构的IP地址。

域名系统(DNS)

主要任务:用来把主机名转换到IP地址。
定义:

  • 一个由分层的DNS服务器实现的分布式数据库;
  • 一个使得主机能够查询分布式数据库的应用层协议。

DNS 服务器通常是运行 BIND 软件的UNIX机器。
DNS使用客户-服务器模式运行在通信的端系统之间,通过采用了位于网络边缘的客户和服务器,实现了关键的名字到地址转换功能。

工作过程

假如某一应用进程需要把主机名解析为IP地址

  • 该应用进程调用解析程序,成为DNS的一个客户。
  • 把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器(使用UDP是为了减少开销)。
  • 本地域名服务器查找到域名后,把对应的IP地址放在回答报文中返回。
  • 如果本地域名服务器不能回答该请求,则此域名服务器就暂时成为DNS中的另一个客户,并向其他域名服务器发出查询请求。
  • 应用进程获得目的主机的IP地址后即可通信。

互联网的域名结构

采用层次树状结构的命名方法,使得任何一个连接在互联网上的主机或路由器都有一个唯一的层次结构的名字(域名)。

如下图为中央电视台用于收发电子邮件的计算机(即邮件服务器)的域名:
在这里插入图片描述

顶级域名

分为国家顶级域名nTLD,通用顶级域名gTLD,基础结构域名。

国家顶级域名nTLD

比如cn表示中国,us表示美国,uk表示英国。等等

通用顶级域名gTLD

corn (公司企业), net (网络服务机构), org (非营利性组织), int (国际组织), edu
(美国专用的教育机构), gov (美国的政府部门), mil(美国的军事部门)等等。

基础结构域名

这种顶级域名只有一个, 即arpa, 用于反向域名解析, 因此又称为反向域名

二级域名

分为类别域名、行政区域名。

类别域名

ac (科研机构), corn (工、 商、 金融等企业), edu(中国的教育机构), gov (中国的政府机构), mil (中国的国防机构), net (提供互联网络服务的机构), org (非营利性的组织)。

行政区域名

适用于我国的各省、自治区、 直辖市。 例如: bj C北京市),js (江苏省), 等等

域名树

表示互联网的域名系统。如下图:
在这里插入图片描述

DNS规定

  • 每一个域名都由标号(label)序列组成, 而各标号之间用点隔开。
  • 域名中的标号都有英文字母和数字组成。
  • 每一个标号不超过63个字符,且不区分大小写。除了使用-以外不能使用其他标点符号。
  • 级别越高的域名写在越右边,如com是顶级域名。
  • 完整域名不能超过255个字符。

注意

  • 域名只是个逻辑概念, 并不代表计算机所在的物理地点。
  • 域名中的 “点” 和点分十进制 IP 地址中的 “点” 并无一一对应的关系。

域名服务器

域名体系是抽象的,具体实现域名系统的是使用分布在各地的域名服务器。
从理论上讲, 可以让每一级的域名都有一个相对应的域名服务器, 使所有的域名服务器构成和图相对应的 “域名服务器树” 的结构。 但这样做会使域名服务器的数量太多, 使域名系统的运行效率降低。 因此DNS就采用划分区的办法来解决这个问题。
一个服务器所负责管辖的(或有权限的)范围叫做(zone)。
在一个区中的所有节点必须是能够连通的。 每一个区设置相应的权限域名服务器, 用来保存该区中的所有主机的域名到IP地址的映射。
区是DNS服务器实际管辖的范围。 区可能等千或小千域, 但一定不能大于域。

如下图举例,假定abc公司有下属部门x,y,部门x下面又分三个部门u,v和w,依此类推。
在这里插入图片描述

域名服务器的层次

每一个域名服务器都能够进行部分域名到IP地址的解析。 当某个DNS服务器不能进行域名到
IP地址的转换时, 它就设法找互联网上别的域名服务器进行解析。
域名服务器按层次分可分为根域名服务器,顶级域名服务器,权限域名服务器,本地域名服务器。

在这里插入图片描述

根域名服务器

所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。根域名服务器是最重要的域名服务器, 因为不管是哪一个本地域名服务器, 若要对互联网上任何一个域名进行解析(即转换为IP地址), 只要自己无法解析, 就首先要求助于根域名服务器。假定所有的根域名服务器都瘫痪了, 那么整个互联网中的 DNS 系统就无法工作。
由千根域名服务器采用了任播技术,因此当 DNS 客户向某个根域名服务器的 IP 地址发出查询报文时, 互联网上的路由器就能找到离这个 DNS 客户最近的一个根域名服务器。 这样做不仅加快了 DNS 的查询过程, 也更加合理地利用了互联网的资源。
需要注意的是, 在许多情况下, 根域名服务器并不直接把待查询的域名直接转换成 IP 地址(根域名服务器也没有存放这种信息), 而是告诉本地域名服务器下一步应当找哪一个
顶级域名服务器进行查询。

顶级域名服务器(TLD服务器)

这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。 当收到 DNS 查询请求时, 就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址)。

权限域名服务器

这就是前面已经讲过的负责一个区的域名服务器。 当一个权限域名服务器还不能给出最后的查询回答时, 就会告诉发出查询请求的 DNS客户, 下一步应当找哪一个权限域名服务器。

本地域名服务器

不属于域名层次结构,但是十分重要。每一个互联网服务提供者 ISP, 或一个大学, 甚至一个大学里的系, 都可以拥有一个本地域名服务器, 这种域名服务器有时也称为默认域名服务器。 当计算机使用Windows7操作系统时, 打开 “控制
面板", 然后依次选择 “网络和Internet " – “网络和共享中心” – " 查看网络状态和任务” – “无线网络连接 "(假定采用家庭网络) – " 属性” – “Internet协议版本 4” – "属性 ”等项目, 就可以看见首选DNS服务器和备用DNS服务器的IP地址。 这里的DNS服务器指的就是本地域名服务器。 本地域名服务器离用户较近, 一般不超过几个路由器的距离。 当所要查询的主机也属于同一个本地ISP时, 该本地域名服务器立即就能将所查询的主机名转换为它的IP地址, 而不需要再去询问其他的域名服务器。

域名解析过程

递归查询

如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址, 那么本地域名服务器就以 DNS客户的身份, 向其他根域名服务器继续发出查询请求报文(即替该主机继续查询), 而不是让该主机自已进行下一步的查询。 因此, 递归查询返回的查询结果或者是所要查询的IP地址, 或者是报错, 表示无法查询到所需的IP地址。
在这里插入图片描述

迭代查询

假设域名为m.xyz.com的主机想知道域名为y.abc.com的主机的IP地址。例如,主机m.xyz.com打算发送邮件给主机y.abc.com。这时就必须知道主机y.abc.com的IP地址。
查询步骤:

  • 1.主机m.xyz.com先向其本地域名服务器dns.xyz.com进行递归查询。
  • 2.本地域名服务器采用迭代查询。 它先向一个根域名服务器查询。
  • 3.根域名服务器 告诉本地域名服务器, 下一次应查询的顶级域名服务器 dns.com的IP
    地址。
  • 4.本地域名服务器向顶级域名服务器dns.com进行查询。
  • 5.顶级域名服务器 dns.com 告诉本地域名服务器, 下 一次应查询的权限域名服务器
    dns.abc.com的IP地址。
  • 6.本地域名服务器向权限域名服务器dns.abc.com进行查询。
  • 7.权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。
  • 8.本地域名服务器最后把查询结果告诉主机m.xyz.com。

这8个步骤总共要使用8个UDP用户数据报的报文。 本地域名服务器经过三次迭代查询后, 从权限域名服务器dns.abc.com得到了主机y.abc.com的IP地址, 最后把结果返回给发起查询的主机m.xyz.com。
在这里插入图片描述

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

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

相关文章

protobuf3 自定义option_Protobuf3 语法指南

以前我翻译了 Protobuf2 语法指南,现在 千念飞羽把protobuf3的语法指南也翻译了,我也转载一下,读者可以有个参考。 译文地址是: Protobuf3语言指南。英文原文:Language Guide (proto3)中文出处:Protobuf语言指南[译]Pr…

web.xml.jsf_面向初学者的JSF 2.0教程

web.xml.jsf1.什么是JSF? JSF是Java Server Faces的首字母缩写。 它是一种服务器端处理技术,它允许将服务器端代码嵌入到网页中。 由于可以将服务器端处理和渲染代码嵌入网页本身,因此使项目的整体编码更加简单。 减少文件总数和大小。 JSF包…

0 是什么数

0 是最小的自然数0 是有理数0 既不是正数也不是负数,而是正数和负数的分界点0 是介于 -1 和 1 之间的整数0 不是奇数,而是偶数(一个非正非负的特殊偶数)0 不是质数,也不是合数0 在多位数中起占位作用,如108…

ubuntu下vscode使用cmake编译运行c++配置文件

在gcc/g能编译运行c的情况下,使用cmake编译只需要修改以下两个文件。 launch.json {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid830387"version&quo…

r语言mfrow全程_R语言中的色彩_LearningR - SegmentFault 思否

1. 基本颜色1.1 palette()1.1.1 palette的默认颜色palette()## [1] "black" "red" "green3" "blue" "cyan" "magenta" "yellow"## [8] "gray"pie(rep(1,8), colpalette(), border palette()…

java如何避免注释重复_Java 8中的可重复注释

java如何避免注释重复使用Java 8,您可以对声明或类型重复相同的注释。 例如,要注册一个类仅应由特定角色在运行时访问,则可以编写如下内容: Role("admin") Role("manager") public class AccountResource { …

什么是有理数

有理数是整数(正整数、0、负整数)和分数的统称,是整数和分数的集合。 整数也可看做是分母为一的分数。不是有理数的实数称为无理数,即无理数的小数部分是无限不循环的数。 正整数和正分数合称为正有理数,负整数和负分数…

Python中的符号

解释经常在python源码中看到的,->和:等符号。python在函数名或类名首字母用_来表示私有接口(仅供内部使用)。 标注 关联到某个变量、类属性、函数形参或返回值的标签,被约定作为类型提示来使用。 局部变量的标注在运行时不可访问,但全局变量、类属性…

java高可用grpc_GRPC java 分布式调用链跟踪实践

Opentracing基本模型image.png如图,在跟踪链中有以下几个比较重要的数据结构和概念:span:标识一次分布式调用,其自身包含了id,parentId(指向上级Span的id), traceIds,服务名称等重要属性&#x…

jrebel gradle_JRebel适用于Gradle Spring Boot应用程序

jrebel gradle关于如何将JRebel添加到使用Gradle作为构建工具的Spring Boot应用程序中,有一些文档 。 它是基本的,但是效果很好。 您所要做的就是在build.gradle中添加几行: if (project.hasProperty(rebelAgent)) {bootRun.jvmArgs rebel…

vim 的寄存器/剪贴板

文章目录 一、查看寄存器查看所有的寄存器查看指定的寄存器二、各种寄存器介绍无名寄存器(默认寄存器)命名寄存器复制专用寄存器逐级临时缓存寄存器。行内删除寄存器黑洞寄存器表达式寄存器文件名寄存器搜索模式寄存器命令行寄存器插入寄存器轮换缓冲区寄存器系统剪贴板选择和…

Python中的lambda表达式

lambda表达式被用于创建匿名函数。匿名函数就是没有名字的函数。 返回类型是函数类型。 作用:一行就可以表示一个函数,使代码简洁。很适合只使用一次的函数。 语法 lambda 参数:表达式等价于 def 函数名(参数):return 表达式举例 无参函数…

华为的型号命名规则_华为Mate 40 Pro+ 外观曝光 正面双挖孔 背部奥利奥

近日关于华为Mate 40 Pro的消息,又有了新进展。有媒体曝光出了一组Mate 40 Pro 的外观渲染图。华为Mate 40系列将会有三种型号,分别是华为Mate 40,Mate 40 Pro 和Mate 40 Pro ,这与之前发布的华为 P40 系列是相同的型号命名规则。…

drools 执行函数_Drools可执行模型还活着

drools 执行函数总览 可执行模型的目的是提供规则集的纯基于Java的表示,以及方便的Java DSL以编程方式创建这种模型。 该模型是低级的,旨在为用户提供所需的所有信息,例如用于索引评估的lambda。 这样可以使其保持快速运行,并避免…

vim 底行命令模式的正则表达式(匹配模式)

文章目录一、vim 替换表达式的语法格式二、vim 关于 range 的表达式三、vim 关于 flags 的元字符四、vim 关于数量的元字符五、环视和固化分组六、vim 替换表达式的示例(一)结合 copy 命令使用(二)结合 move 命令使用(…

navicat模型显示注释_RetinaNet模型构建面罩检测器

字幕组双语原文:如何使用RetinaNet模型构建面罩检测器英语原文:How to build a Face Mask Detector using RetinaNet Model!翻译:雷锋字幕组(李珺毅)介绍目标检测是计算机视觉中一个非常重要的领域,对于自动…

python中parse.add_argument()简单用法

argparse模块简单使用流程以及与命令行的交互1.导入模块2.创建解析器3.添加参数4.解析参数5使用参数完整代码与命令行的交互argparse 模块是 Python 内置的一个用于命令项选项与参数解析的模块。下面以例子来简单记下模块使用流程。1.导入模块 import argparse2.创建解析器 该…

java最好学习的方法_学习Java的最佳方法

java最好学习的方法Java是有些人可能说很难学习的语言之一,而其他人则认为它与其他语言具有相同的学习曲线。 两种观察都是正确的。 但是,由于Java具有平台无关性,因此在语言方面具有相当大的优势。 Java是一种低级语言,它以一种…

什么是整数

整数(integer)是正整数、零、负整数的集合。 整数的全体构成整数集,整数集是一个数环。在整数系中,零和正整数统称为自然数。-1、-2、-3、…、-n、…(n为非零自然数)为负整数。则正整数、零与负整数构成整数…

镜像电流源特点_模电中的电流源电路

在模电中,电流源电路也称恒流源电路,经常作为放大电路中的偏置电路(即为放大电路提供合适的静态工作点的电路)、有源负载以及电压-电流转换电路等。在一些名牌大学的期末考试或研究生入学考试中,也经常出一道和恒流源相关的题。不同学校的教材…