Java EE|TCP/IP协议栈之应用层协议DNS详解

news/2024/4/27 4:00:22/文章来源:https://blog.csdn.net/moteandsunlight/article/details/129216834

文章目录

    • 一、对DNS的感性认识
      • 简介
      • 特点
    • 一些常见疑问
    • 二、DNS
      • DNS域名结构
      • 域名的分级
    • 三、域名服务器
    • 四、域名解析过程
    • 参考

一、对DNS的感性认识

简介

DNS,即Domain Name System,是域名系统的简称。它是Internet上解决网上机器命名的一种系统。

TCP/IP中的IP地址是由四段以“.”分开的数字组成(此处以IPv4的地址为例,IPv6的地址同理),记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系。

域名可将一个IP地址关联到一组有意义的字符上去。用户访问一个网站的时候,既可以输入该网站的IP地址,也可以输入其域名,对访问而言,两者是等价的。

例如:微软公司的Web服务器的IP地址是207.46.230.229,其对应的域名是www.microsoft.com,不管用户在浏览器中输入的是207.46.230.229还是www.microsoft.com,都可以访问其Web网站。

一个公司的Web网站可看作是它在网上的门户,而域名就相当于其门牌地址,通常域名都使用该公司的名称或简称。例如上面提到的微软公司的域名,类似的还有:IBM公司的域名是www.ibm.com、Oracle公司的域名是www.oracle.com、Cisco公司的域名是www.cisco.com等。当人们要访问一个公司的Web网站,又不知道其确切域名的时候,也总会首先输入其公司名称作为试探。

但是,由一个公司的名称或简称构成的域名,也有可能会被其他公司或个人抢注。甚至还有一些公司或个人恶意抢注了大量由知名公司的名称构成的域名,然后再高价转卖给这些公司,以此牟利。已经有一些域名注册纠纷的仲裁措施,但要从源头上控制这类现象,还需要有一套完整的限制机制,这个还没有。所以,尽早注册由自己名称构成的域名应当是任何一个公司或机构,特别是那些著名企业必须重视的事情。有的公司已经对由自己著名品牌构成的域名进行了保护性注册。

特点

  • 分布式的
  • 协议支持 TCP 和 UDP,常用端口是 53
  • 每一级域名的长度限制是 63
  • 域名总长度限制是 253

一些常见疑问

  1. ARP协议是帮助ip地址和mac地址相互转化,DNS协议是帮助域名和IP地址相互转化。

  2. 为什么不直接用域名进行通信?

    ip地址是定长的,域名是变长的,不方便计算机处理。

  3. 同一个服务器的ip地址和域名的对象是谁?

    ip地址是面向主机的,域名是面向用户的。

  4. hosts文件是什么?

    hosts文件是由***写的,一个保存的域名和ip对应关系的没有扩展名的系统文件。

    它的作用就是将一些常见的网址域名与其对应的ip地址建立一个关联的“数据库”,当用户在浏览器中输入一个需要登陆的网址时,系统就会首先自动的去hosts文件中寻找对应的ip地址,一旦找到,系统就会立即打开对应的网页,如果没有找到,则系统就会将网址再提交给DNS域名解析服务器进行ip地址的解析。

    现在基本上就是hosts文件和DNS打配合的一个动作。

    操作系统规定,在进行DNS请求以前,先检查系自己的Hosts文件中是否有这个域名和IP的映射关系。如果有,则直接访问这个IP地址指定的网络位置,如果没有,再向已知的DNS服务器提出域名解析请求。也就是说Hosts的IP解析优先级比DNS要高。

    注意:hosts文件配置的映射是静态的,如果网络上的计算机更改了就需要及时更新ip地址,否则不能访问。就比如当时我一直打不开力扣一样。

  5. DNS系统工作相关原理

    如果新的计算机接入网络中,会将信息注册到数据库中。

    用户输入域名的时候,如果在本地hosts文件找不到,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的ip地址。

二、DNS

DNS域名结构

域名具有唯一性,命名规则如下:【以英文域名为例】

  • 每个域名都是一个标号序列(字母/数字/连接符(-));

  • 总长度不超过255字符

  • 由点号分割

  • 每个标号在63字符内,每个标号可以看成一个层次

  • 域名级别从左到右逐渐变大

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SBHS4hvi-1677311905032)(F:\typora插图\image-20230225143152145.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ZtQIBnQ-1677311905033)(F:\typora插图\image-20230225143210603.png)]

域名服务主要基于UDP实现,服务器端口号为53.

eg :我们熟悉的,www.baidu.com

  1. com: 一级域名. 表示这是一个企业域名。同级的还有 “net”(网络提供商), “org”(⾮非盈利组织) 等。
  2. baidu: 二级域名,指公司名。
  3. www: 只是一种习惯用法。

域名的分级

域名可以划分为各个子域,子域还可以继续划分为子域的子域,这样就形成了顶级域、二级域、三级域等。

如上图所示。

另外,xxx.yyy.zzz.com。xxx是四级域名、yyy是三级域名、zzz是二级域名、com是顶级域名。

其中顶级域名又分为国际顶级域名(cn、us、uk)、通用顶级域名(com、edu、gov……)和反向域名(arpa,用于PTR查询,ip地址转换为域名)。

三、域名服务器

域名是分层结构,域名服务器也是对应的层级结构。
有了域名结构,还需要有一个东西去解析域名,域名需要由遍及全世界的域名服务器去解析,域名服务器实际上就是装有域名系统的主机。

由高向低进行层次划分,可分为以下几大类:

分类作用
根域名服务器最高层次的域名服务器,本地域名服务器解析不了的域名就会向其求助
顶级域名服务器负责管理在该顶级域名服务器下注册的二级域名
权限域名服务器负责一个区(一个域名服务器所负责的范围/权限范围)的域名解析工作
本地域名服务器当一个主机发出DNS查询请求时,这个查询请求首先发给本地域名服务器
  1. 每个层的域名上都有自己的域名服务器,最顶层的是根域名服务器
  2. 每一级域名服务器都知道下级域名服务器的IP地址
  3. 为了容灾, 每一级至少设置两个或以上的域名服务器参考

四、域名解析过程

相关前置知识:

🔺本地域名服务器的概念:

任何一台主机在网络地址配置时,都会配置一个域名服务器作为默认域名服务器,这个默认域名服务器通常称为本地域名服务器,是主机进行域名查询过程中首先被查询的域名服务器。

主机确定本地域名服务器的方法:

主机在任何时候需要进行域名解析都会将域名查询请求发送给该服务器,该服务器如果保存了被查询域名的信息,则直接做出响应,如果没有,则代理查询其他域名服务器,直到查询到结果,最后将查询结果发送给查询主机。

设置域名服务器的方式:

  1. 手动设置:以设置IPv4为例,就是在电脑中设置的DNS的内容;
  2. 动态设置:使用DHCP动态配置方式。

什么是解析器

解析器是负责网络爬虫的主要部分,其负责的工作主要有:下载网页的功能,对网页的文本进行处理,如过滤功能,抽取特殊HTML标签的功能,分析数据功能。

整体来说,这是一个递归查找的过程。

域名解析总体可分为一下过程:
(1) 输入域名后, 先查找自己主机对应的域名服务器,域名服务器先查找自己的数据库中的数据.
(2) 如果没有, 就向上级域名服务器进行查找, 依次类推
(3) 最多回溯到根域名服务器, 肯定能找到这个域名的IP地址
(4) 域名服务器自身也会进行一些缓存, 把曾经访问过的域名和对应的IP地址缓存起来, 可以加速查找过程
以上内容引自此blog

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZNPDrbOL-1677311905034)(F:\typora插图\image-20230225152538799.png)]

上边是我是半懂,暂时先留在这,后续进行更正补充。

下边画图分析一个我比较理解的过程:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ptlw2igT-1677311905035)(F:\typora插图\image-20230225154906733.png)]

参考

DNS协议详解

DNS相关科普

关于DNS的特点

DNS拓展阅读(暂略)

域名类型相关阅读1

常见域名后缀介绍

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

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

相关文章

【蓝桥集训】第七天并查集

作者:指针不指南吗 专栏:Acwing 蓝桥集训每日一题 🐾或许会很慢,但是不可以停下来🐾 文章目录1.亲戚2.合并集合3.连通块中点的数量有关并查集的知识学习可以移步至—— 【算法】——并查集1.亲戚 或许你并不知道&#…

c语言tips-大端小端存储介绍和使用union判断大小端

1. 大小端介绍 大端(Big Endian)和小端(Little Endian)是两种CPU或者计算机系统存储数据的方式。 在大端系统中,数据的高位字节(MSB)存储在内存地址的低位,低位字节(LSB…

【C++】C++入门(下)

引用 什么是引用?   引用是给一个已经存在的变量取一个别名,在语法上并不会给这个别名开一个空间,它和她引用的变量共用一个空间。但是实际上引用也是开了一块空间的,用来存放引用名。引用是按照指针的方式来实现的。引用语法&…

《分布式技术原理与算法解析》学习笔记Day23

分布式数据复制 我们在进行分布式数据存储设计时,通常会考虑对数据进行备份,以提高数据的可用性和可靠性,“数据复制技术”就是实现数据备份的关键技术。 什么是数据复制技术? 在分布式数据库系统中,通常会设置主备…

华为OD机试用Python实现 -【统一限载货物数最小值】(2023-Q1 新题)

华为OD机试题 华为OD机试300题大纲统一限载货物数最小值题目描述输入描述输出描述说明示例一输入输出说明示例二输入输出说明Python 代码实现算法逻辑华为OD机试300题大纲 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查…

python爬虫常见错误

python爬虫常见错误前言python常见错误1. AttributeError: WebDriver object has no attribute find_element_by_id1. 问题描述2. 解决办法2. selenium:DeprecationWarning: executable_path has been deprecated, please pass in1. 问题描述2. 解决办法3. 下载了包…

k8s-资源限制-探针检查

文章目录一、资源限制1、资源限制的使用2、reuqest资源(请求)和limit资源(约束)3、Pod和容器的资源请求和限制4、官方文档示例5、资源限制实操5.1 编写yaml资源配置清单5.2 释放内存(node节点,以node01为例…

《程序员思维修炼》速读笔记

文章目录书籍信息概览绪论从新手到专家的历程认识大脑利用右脑调试大脑主动学习积累经验控制注意力超越专家图解书籍信息 书名:《程序员思维修炼(修订版)》 作者:[美] Andy Hunt 概览 绪论 再提“实用”关注情境所有人都关注这…

Flutter3引用原生播放器-IOS(Swift)篇

前言由于Flutter项目中需要使用到播放器功能,因此对flutter中各种播放器解决方案进行了一番研究和比对,最后决定还是自己通过Plugin的方法去引用原生播放器符合自己的需求,本篇文章会对各种解决方案做一个简单的比较,以及讲解一下…

线材-电子线载流能力

今天来讲的是关于电子线的一个小知识,可能只做板子的工程师遇到此方面的问题会比较少,做整机的工程师则必然会遇到此方面问题,那就是线材问题。 下面主要说下电子线的过电流能力。(文末有工具下载)电子线(h…

[11]云计算|简答题|案例分析|云交付|云部署|负载均衡器|时间戳

升级学校云系统我们学校要根据目前学生互联网在线学习、教师教学资源电子化、教学评价过程化精细化的需求,计划升级为云教学系统。请同学们根据学校发展实际考虑云交付模型包含哪些?云部署采用什么模型最合适?请具体说明。9月3日买电脑还是租…

@Value注解的使用(可用于配置文件)

基本概念Value:注入配置文件中的内容。只要是spring的注解类(service,compotent, dao等)中都可以。Component:泛指组件,当组件不好归类的时候,可以使用这个注解进行标注。AutoWired:自动导入依赖…

Jinja2----------模板渲染、模板访问对象属性

目录 1.Jinja2 1.简介 2.Jinja2模板 2.模板渲染 app.py templates/index.html templates/blog_detail.html 效果 3.模板访问对象属性 app.py templates/index.html 效果 1.Jinja2 1.简介 Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来…

二叉树的前序遍历-java两种方式-力扣144

一、题目描述给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root [1,null,2,3]输出:[1,2,3]示例 2:输入:root []输出:[]示例 3:输入:root [1]输出…

【Linux驱动开发100问】什么是模块?如何编写和使用模块?

🥇今日学习目标:什么是Linux内核? 🤵‍♂️ 创作者:JamesBin ⏰预计时间:10分钟 🎉个人主页:嵌入式悦翔园个人主页 🍁专栏介绍:Linux驱动开发100问 什么是模块…

分布式之PBFT算法

写在前面 在分布式之拜占庭问题 一文中我们分析了拜占庭问题,并一起看了支持拜占庭容错的口信消息性和签名消息性算法,但是这两种算法都有一个非常严重的问题,就是消息数量太多,通信的成本太大,消息数量复杂度为O(n ^…

HMM(隐马尔科夫模型)-理论补充2

目录 一.大数定理 二.监督学习方法 1.初始概率 2.转移概率 3.观测概率 三.Baum-Welch算法 1.EM算法整体框架 2. Baum-Welch算法 3.EM过程 4.极大化 5.初始状态概率 6.转移概率和观测概率 四.预测算法 1.预测的近似算法 2.Viterbi算法 1.定义 2. 递推&#xff1…

2023安装archlinux笔记

本文只是个笔记,不是详细教程,仅供参考。 安装过程基本与 《2021年vmware安装archlinux》 https://blog.csdn.net/lxyoucan/article/details/115226297 差不多。 无U盘安装 不想格式化U盘了,直接从硬盘安装。参考一下文章。 《没有U盘纯硬…

Laravel框架02:路由与控制器

Laravel框架02:路由与控制器一、路由配置文件二、路由参数三、路由别名四、路由群组五、控制器概述六、控制器路由七、接收用户输入一、路由配置文件 以web网页路由文件为例: 默认根路由 路由定义格式Route::请求方式(请求的URL, 匿名函数或控制响应的方…

CV学习笔记-MobileNet

MobileNet 文章目录MobileNet1. MobileNet概述2. 深度可分离卷积(depthwise separable convolution)2.1 深度可分离卷积通俗理解2.2 深度可分离卷积对于参数的优化3. MobileNet网络结构4. 代码实现4.1 卷积块4.2 深度可分离卷积块4.3 MobileNet定义4.4 完…