【计算机网络】应用层协议 -- DNS协议

文章目录

  • 1. DNS背景
  • 2. 域名简介
  • 3. 域名解析过程
  • 4. 使用dig查看DNS过程

1. DNS背景

DNS(Domain Name System,域名系统)协议,是一个用来将域名转化为IP地址的应用层协议。

TCP/IP当中通过IP地址和端口号的方式,来确定网络中一个主机上的一个程序,但IP地址是一长串数字,并不便于人们记忆,于是人们发明了一种叫做主机名的东西,并用hosts文件夹来描述主机名和IP地址之间的对应关系。

最初,这个hosts文件是由互联网信息中心(SRI-NIC)来管理的。

  • 如果一个新计算机要接入网络,或者某个计算机IP变更,都需要到信息中心申请变更hosts文件。
  • 其他计算机也需要定期下载更新版本的hosts文件才能正确上网。
  • 当用户通过域名访问互联网服务时,会先通过域名在本地的hosts文件中找到其对应的IP地址,然后再用这个IP地址去访问对应的服务。

但这样太麻烦了,于是产生了DNS系统。

  • 由一个系统管理机构,维护系统内每个主机的IP和主机名的对应关系。
  • 如果新计算机要接入网络,或者某个计算机IP变更,就需要将对应信息注册到数据库中。
  • 当用户通过域名访问互联网服务时,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址。

至今,我们的计算机上仍然保留了hosts文件,这个hosts文件当中一般存储的是主机名和IP地址之间的映射,用户也可以在hosts文件中自主添加域名和IP的映射关系,在域名解析的过程中会优先查找hosts文件的内容。

通过cat /etc/hosts可以查看hosts文件当中的内容。
在这里插入图片描述

2. 域名简介

域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称,例如www.baidu.com

  • com:一级域名,表示这是一个工商企业域名。同级的还有 .net (网络供应商)和 .org(开源组织或非盈利组织)等。
  • baidu:二级域名,一般对应的就是公司名。
  • www:只是一种习惯用法。

3. 域名解析过程

在浏览器中输入url后,如果url中包含域名,则需要对域名进行解析。

  • 首先会在浏览器中的DNS缓存中去查询是否有对应的记录,如果查询到对应的记录就可以直接得到对应的IP地址,完成解析。
  • 如果在浏览器中的DNS花缓存中没有找到,就会去查询操作系统中的DNS缓存,如果查询到对应的IP地址,完成解析。
  • 如果在操作系统的DNS缓存中也没有找到,就会去找本地的hosts文件,如果查询到对应的IP地址,完成解析。
  • 如果在本地的hosts文件中也没有找到,就会去本地DNS服务器中查找。本地DNS服务器IP地址一般会由网络服务商提供,如电信,移动等公司,一般会通过DHCP自动分配。目前使用的比较多的是谷歌提供的公用NDS 8.8.8.8和国内公用NDS 114.114.114.114。如果在本地DNS服务器中有对应域名的缓冲,则直接返回对应的IP地址,完成解析。
  • 如果本地DNS服务器中仍然没有找到,那么本地DNS服务器就会拿着域名去根DNS服务器中询问,根DNS服务器会告诉本地DNS顶级域名服务器的IP地址。
  • 本地DNS拿到顶级域名服务器的IP地址后,就会拿着域名去找顶级DNS服务器,顶级域名服务器会告诉本地DNS权威域名服务器的IP地址。
  • 本地DNS服务器拿到顶级域名服务器的IP地址之后,就会拿着域名去找顶级DNS服务器,顶级域名服务器会告诉本地DNS权威域名服务器的IP地址。
  • 本地DNS服务器拿着域名去权威域名服务器中,查询域名对应的IP地址,最终将该域名对应的IP地址返回给浏览器,此时整个域名解析过程就完成了。

4. 使用dig查看DNS过程

我们可以使用dig工具来查看域名解析的过程,例如查看百度域名www.baidu.com的解析过程。

在这里插入图片描述

  • 开头位置是dig的版本号。
  • 第二部分是服务器返回的详情,其中status参数为NOERROR表示查询成功。
  • QUESTION SECTION表示待查询的域名。
  • ANSWER SECTION表示查询的结果,首先www.baidu.com被查询成了www.a.shi.com,而最终其被查询成了两个具体的IP地址。
  • 最下面是一些结果统计,包含查询时间和DNS服务器的地址等。

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

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

相关文章

调试正在运行的程序(Keil)

大家好,我是惊觉。接上一篇调试正在运行的程序(STM32CubeIDE),今天Keil的实现方法。调试正在运行的程序,属于附着调试,在启动调试器时不会重置单片机的运行状态,从而可以定位死机等问题。没看过上一篇的同学&#xff0…

SystemC的调度器

文章目录 前言调度器初始化evaluatewait updatenotify delta notificationtime notification仿真结束 前言 SystemC是基于C的库,主要用来对 IC 进行功能建模和性能建模。有时也被用来当做 RTL (register transfer level) 级的升级版 HLS(High Level synthesis) 直接…

力扣 416. 分割等和子集

题目来源:https://leetcode.cn/problems/partition-equal-subset-sum/description/ C题解(思路来源代码随想录) : 背包问题有多种背包方式,常见的有:01背包、完全背包、多重背包、分组背包和混合背包等等。…

JVM基础篇-虚拟机栈

JVM基础篇-虚拟机栈 定义 Java Virtual Machine Stacks (Java 虚拟机栈) 每个线程运行时所需要的内存,称为虚拟机栈每个栈由多个栈帧(Frame)组成,对应着每次方法调用时所占用的内存每个线程只能有一个活动…

Manim(一款强大的数学可视化动画引擎)学习历程

相逢情便深,恨不相逢早 第一眼看见上面这种类型的视频我就深深被它的简约清楚所折服,我觉得它完全符合我的审美,我也相信只要了解过制作这种视频的软件的人都会喜欢上它。运用这种风格比较有名的是b站里的一位up主名叫3Blue1Brown&#xff0…

C++ 模板初阶

泛型编程 泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础 模板分为:函数模板和类模板 函数模板 概念 函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化&a…

数据结构 | 搜索和排序——排序

目录 一、冒泡排序 二、选择排序 三、插入排序 四、希尔排序 五、归并排序 六、快速排序 排序是指将集合中的元素按照某种顺序排序的过程。 一、冒泡排序 冒泡排序多次遍历列表。它比较相邻的元素,将不合顺序的交换。每一轮遍历都将下一个最大值放到正确的位…

【抽水蓄能电站】基于粒子群优化算法的抽水蓄能电站的最佳调度方案研究(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码、数据、文章讲解 💥1 概述 文献来源: 摘要:抽水蓄能电站作为当前电力系统重要的储能和调峰电源同时具有填谷、调频、调相、事故备用以…

ETHERNET/IP 转ETHERCAT连接ethercat总线伺服如何控制

捷米JM-EIP-ECAT网关连接到ETHERNET/IP总线中做为从站使用,连接到ETHERCAT总线中做为从站使用,可以同时满足多种工业生产的需求。支持广泛的设备类型,可以和多种不同的设备进行通讯。 技术参数 ETHERNET/IP 技术参数 网关做为 ETHERNET/IP …

记一次 HTTPS 抓包分析和 SNI 的思考

日常听说 HTTPS 是加密协议,那现实中的 HTTPS 流量,是真的完全加密吗? ——答案是,不一定。原因嘛,抓个包就知道了。 我们用 curl 命令触发一下: curl -v https://s-api.37.com.cn/api/xxx * Trying 1…

jmeter使用步骤

jmeter 使用步骤 1,进入jmeter目录中的bin目录,双击jmeter.bat 打开 2,右键test plan 创建线程组 3,配置线程组参数 4,右键刚刚创建的线程组,创建请求,填写请求地址 5,需要携带to…

ES6之Promise、Class类与模块化(Modules)

目录 PromiseClass类extendssuper Modules 模块系统export default 和对应importexport 和 import Promise Promise 是 ES6 引入的一种用于处理异步操作的对象。 它解决了传统回调函数(callback)模式中容易出现的回调地狱和代码可读性差的问题。 Promis…

【远程桌面软件NoMachine】

Remote Access for Everybody 特色:快速、安全、跨平台、免费且简单易用,尤其是在带宽低、速率慢的网络环境下,NoMachine仍能保持良好的性能。 官网地址为:https://www.nomachine.com/

聊聊我的故事-悲惨的童年

目录 前言一、介绍二、17年回顾1.出生2.上幼儿园3.上小学4.上初中 高中总结 前言 本人是06年生的,快18了, 提示:以下是本篇文章正文内容,下面案例可供参考 一、介绍 本人已经17了,在这17年过的很悲惨,也…

使用uni-app的uniCloud 云数据库入门:实现一个简单的增删改查

官方云数据库文档 前置步骤使用uni-app新建一个uniCloud项目 [外链图片转存失败,源站可能有防盗官方云数据库文档]!链机制,建议将()https://uniapp.dcloud.net.cn/uniCloud/hellodb.html)] 新建表 这里我加了几个测试字段 createTime、remark、money // 文档教程: https://un…

[Docker实现测试部署CI/CD----相关服务器的安装配置(1)]

目录 0、CI/CD系统最终架构图规划IP地址 1、git配置Git下载pycharm配置gitidea配置git 2、GitLab安装与配置主机要求拉取镜像定义 compose.yml启动gitlab浏览器访问并修改密码查看登录密码修改密码 3、SonarQube 安装与配置拉取镜像修改虚拟内存的大小启动SonarQube登录 SonarQ…

SQL ASNI where from group order 顺序

SQL语句执行顺序: from–>where–>group by -->having — >select --> order 第一步:from语句,选择要操作的表。 第二步:where语句,在from后的表中设置筛选条件,筛选出符合条件的记录。 …

矩阵快速幂

简介 矩阵快速幂是一种高效计算矩阵幂的方法。它利用了矩阵的幂运算具有分治性质的特点,可以将矩阵的幂运算时间复杂度从 O(n)降低到 O(logn)。可用于解决线性递推式问题。 经典的斐波那契数列fnfn-1fn-2。当n很大时,你无法快速的计算第n项的值。可以构…

【RedisInsight】连入Docker容器可视化redis服务

文章目录 下载安装RedisInsight添加数据库添加docker容器内的redis数据库 下载安装RedisInsight 进入redis官网下载:https://redis.com/redis-enterprise/redis-insight/,安装过程一路Next即可。 打开桌面上的快捷方式启动:RedisInsight-v2…

MySQL多版本并发控制

1. 什么是MVCC MVCC(Multiversion Concyrrency Contril),多版本并发控制。顾名思义,MVCC是通过数据行的多个版本来管理实现数据库的 并发控制。这项技术使得在innodb的事务隔离级别下执行 一致性读 操作有了保证。换言之,就是为了查询一些正在…