当前位置: 首页 > news >正文

【计算机网络】应用层协议 -- 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.lryc.cn/news/107479.html

相关文章:

  • ES6 - 数组新增的一些常用方法
  • 【BEV感知】3-BEV开源数据集
  • Kafka-Broker工作流程
  • 第八篇-Tesla P40+ChatGLM2+LoRA
  • 调用feign返回错误的数据
  • 【Spring】(二)从零开始的 Spring 项目搭建与使用
  • redis五种数据类型介绍
  • 【JavaEE】Spring Boot - 项目的创建和使用
  • Git reset、revert用法
  • Redis-1
  • 【Linux】Linux服务器连接百度网盘:实现上传下载
  • ADC模拟看门狗
  • google谷歌gmail邮箱账号注册手机号无法进行验证怎么办?此电话号码无法用于进行验证 或 此电话号码验证次数太多
  • Spring:IOC技术、Bean、DI
  • 目标检测与跟踪 (2)- YOLO V8配置与测试
  • 【Leetcode】56.合并区间
  • 设置系统编码 Beta
  • phpunit
  • html学习9(脚本)
  • SpringBoot整合Caffeine
  • 元宇宙虚拟展厅的特点是什么呢?优势有哪些?
  • Day11-Webpack前端工程化开发
  • 什么是函数式编程,应用场景是什么
  • Vue3之路由认识
  • P1775 石子合并(弱化版)(内附封面)
  • jmeter之接口测试(http接口测试)
  • webpack基础知识二:说说webpack的构建流程?
  • PHP使用PhpSpreadsheet实现导出Excel时带下拉框列表 (可支持三级联动)
  • Openssh高危漏洞CVE-2023-38408修复方案
  • Android中的ContentProvider