数据通信——应用层(域名系统)
引言
TCP到此就告一段落,这也意味着传输层结束了,紧随其后的就是TCP/IP五层架构的应用层。操作系统、编程语言、用户的可视化界面等等都要通过应用层来体现。应用层和我们息息相关,我们使用电子设备娱乐或办公时,接触到的就是应用层。
域名系统概述
域名系统(DomainNameSystem)简称DNS。在1983年因特网正式开始采用层次式的名字空间组织方案——域名系统(DNS)并开始使用分布式数据库管理整个名字空间。
众所周知,IP很长,不方便直接交流,因此应用层采用域名作为我们访问各个站点的手段,域名可以被记住,当我们再次访问某些网站采用域名就可以了。
但因为网络渐渐庞大了,难免会有重名的用户,因此如何在应用层表示因特网中唯一一个用户成为了难题之一。况且,我们在网络层中以一个IP地址作为网络中独一无二的个体,那么如何将应用层的域名和网络层相应的IP联系起来并且再由公网IP转化为成私有IP是域名系统首当其冲的问题。所有的应用和服务都离不开域名!

DNS以客户/服务器(C/S)的方式工作,其主要包含三部分内容:
1.层次树型结构的域名空间(Domain Name Space)
2.存储有关域名及其二进制IP地址信息的名字服务器(NameServer)
3.实现域名与二进制IP地址的转换工作的解析器(Resolver)
域名空间
域名也要有存储的地方,我们管其叫做域名空间。域名空间中含有域名的具体结构或命名规则。为了方便管理和查询,设计者采用层次化的树形结构组织域名分布。树形结构自然就有树枝和子叶。在这个域名空间中含有:
域名:网络中一个用户(计算机)的名字;
域:域名空间中的一树枝,表示因特网某个可被管理的资源集合;域还可以根据需要被进一步地划分为子域。
子叶就是代表因特网中提供特定服务的服务器主机的名称,像我们熟知的“WWW”等。子叶也代表它的下面也不能再划分子域了。这样的设计保证了域名在全网的唯一性。
其中顶级域名为通用域名;顶级域名最开始有7个“元老”
com:经济实体
edu:教育机构
org:不适宜在其它域下注册的组织机构和非政府组织
net:网络服务机构
gov:政府机构(美国专用)
mit:军事机构(美国专用)
int:国际相关组织机构
当然,除了那两个老美专用的东西,其它顶级域名是有相应的标准的,整个国际都要遵守的。当然,我们也要有自己的域名以示区别,这就是二级域名。
二级域名就是国家定制的域名了。我国将域名分为类别域名和行政域名两类。
ac:科研机构
com:工商金融和企业
edu:教育机构
gov:中国政府机构
net:中国的网络服务机构组织
mil:中国国防
org:非盈利机构
其中还有行政区域域名,覆盖了各省、自治区、直辖市等。比如:BJ(北京)、SH(上海)等等。
我们的域名均采用中文域名,国内域名注册统一通过中国互联网信息中心——CNNIC及其代理商进行管理。而国际的域名注册由ICANN统一管理。

上图就是域名空间域名层次分布
我们在表达一个域名时,要从左往右,从低到高以“.”作为区分来描述域名。以上图为例就是:www.b.360.cn,再比如:www.cctv.com
域名服务器
在DNS中,存储有关的域名和域名相应的二进制IP地址信息的程序运行在专门的网络结点上,这些结点称为名字服务器。各服务器只负责解析其主管范围的解析工作。并且还设置了若干互不交叉的区域以防止数据源带来的不稳定因素。
域名服务器分为四个大类:
1.根域名服务器(rootNS):最高层次的域名服务器,共13个,管辖所有顶级域名和IP映射。
2.顶级域名服务器(TLDNS):管辖旗下所有的二级域名和IP映射。
3.授权服务器:管辖区域内所有域名和IP映射
4.本地域名服务器:管辖每个主机所在区域的授权查询服务器。

书中对各服务器负责区域的描述
拥有一个区内所有的主机信息的名字的服务器就是该区授权的名字服务器(Authoritative Name Server)
不仅如此,还需要若干的辅助名字服务器,辅助名字服务器会获取名字服务器的域名信息副本预防名字服务器出现故障时,DNS系统还可以正常运作。
域名解析
如何将DNS和IP地址互相解析?我们可以通过配置设备的本地DNS来完成,我们在使用网络时候总能看见这个DNS。通过传输层UDP报文的支持,从端口53完成DNS和IP关系的建立。如下图则书中DNS与IP地址互相解析过程。
当应用进程需要将一个域名映射为IP地址时,就调用域名解析函数,解析函数将待转换的域名放在DNS请求中,以UDP报文方式发给本地域名服务器。本地的域名服务器查到域名后,将对应的IP地址放在应答报文中返回。同时域名服务器还必须具有连向其他服务器的信息以支持不能解析时的转发。若域名服务器不能回答该请求,则此域名服务器就暂成为DNS中的另一个客户,向根域名服务器发出请求解析,根域名服务器一定能找到下面的所有二级域名的域名服务器,这样以此类推,一直向下解析,直到查询到所请求的域名。

当我们向外进行DNS解析请求时,通过递归或者迭代的方式实现,这也是域名的解析过程。
后续
递归或迭代,我打算放在以后单独写文档,这里就提一下。域名很好理解,毕竟我们每天都在用。但是应用层的东西很混杂,下一篇就要讲文件传输了。
相关文章:
数据通信——应用层(域名系统)
引言 TCP到此就告一段落,这也意味着传输层结束了,紧随其后的就是TCP/IP五层架构的应用层。操作系统、编程语言、用户的可视化界面等等都要通过应用层来体现。应用层和我们息息相关,我们使用电子设备娱乐或办公时,接触到的就是应用…...
Visual Studio 更新:远程文件管理器
Visual Studio 中的远程文件管理器可以用来访问远程机器上的文件和文件夹,通过 Visual Studio 自带的连接管理器,可以实现不离开开发环境直接访问远程系统,这确实十分方便。 自从此功能发布以来,VS 开发团队努力工作,…...
ChatGPT追祖寻宗:GPT-3技术报告要点解读
论文地址:Language Models are Few-Shot Learners 往期相关文章: ChatGPT追祖寻宗:GPT-1论文要点解读_五点钟科技的博客-CSDN博客ChatGPT追祖寻宗:GPT-2论文要点解读_五点钟科技的博客-CSDN博客 本文的标题之所以取名技术报告而不…...
java easyexcel 导出多级表头
maven <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>${easyexcel.version}</version> </dependency> 导出行的对象 import com.alibaba.excel.annotation.ExcelIgnore; import …...
rar格式转换zip格式,如何做?
平时大家压缩文件时对压缩包格式可能没有什么要求,但是,可能因为工作需要,我们要将压缩包格式进行转换,那么我们如何将rar格式转换为其他格式呢?方法如下: 工具:WinRAR 打开WinRAR,…...
Java中的构造方法
在Java中,构造方法是类的特殊方法,用于初始化对象的实例变量和执行其他必要的操作,以便使对象能够正确地工作。构造方法与类同名,没有返回类型,并且在创建对象时自动调用。 以下是构造方法的一些基本特性:…...
【Java】fastjson
Fastjson简介 Fastjson是阿里巴巴的团队开发的一款Java语言实现的JSON解析器和生成器,它具有简单易用、高性能、高可用性等优点,适用于Java开发中的数据解析和生成。Fastjson的主要特点包括: 简单易用:Fastjson提供了简单易用的…...
JMeter之脚本录制
【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程,刷完面试就稳了,你也可以当高薪软件测试工程师(自动化测试) 前言: 对于一些JMeter初学者来说,录制脚本可能是最容易掌握的技能之一。…...
计算机网络的相关知识点总结
1.谈一谈对OSI七层模型和TCP/IP四层模型的理解? 不管是OSI七层模型亦或是TCP/IP四层模型,它们的提出都有一个共同的目的:通过分层来将复杂问题细化,通过各个层级之间的相互配合来更好的解决计算机中出现的问题。 说到分层…...
WPF实现轮播图(图片、视屏)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
【Vue.js】使用Element搭建首页导航左侧菜单
目录 Mock.js 是什么 有什么好处 安装mockjs 编辑 引入mockjs mockjs使用 login-mock Bus事物总线 首页导航栏与左侧菜单搭建 结合总线完成组件通讯 Mock.js 是什么 Mock.js是一个用于生成随机数据的模拟数据生成器。它可以帮助开发人员模拟接口请求,生…...
Spring MVC常见面试题
Spring MVC简介 Spring MVC框架是以请求为驱动,围绕Servlet设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图。简单来说,Spring MVC整合了前端请求的处理及响应。 Servlet 是运行在 Web 服务器或应用…...
Java基础面试题精选:深入探讨哈希表、链表和接口等
目录 1.ArrayList和LinkedList有什么区别?🔒 2.ArrayList和Vector有什么区别?🔒 3.抽象类和普通类有什么区别?🔒 4.抽象类和接口有什么区别?🔒 5.HashMap和Hashtable有什么区别&…...
Spark计算框架
Spark计算框架 一、Spark概述二、Spark的安装部署(安装部署Spark的Cluster Manager-资源调度管理器的)1、Spark的安装模式1.1、Spark(单节点)本地安装1.2 Spark的Standalone部署模式的伪分布式安装1.3Spark的YARN部署模式1.4Spark…...
mybatis缓存源码分析
mybatis缓存源码分析 背景 在java程序与数据库交互的过程中永远存在着性能瓶颈,所以需要一直进行优化.而我们大部分会直接将目标放到数据库优化,其实我们应该先从宏观上去解决问题进而再去解决微观上的问题.性能瓶颈体现在什么地方呢?第一网络通信开销,网络数据传输通信.…...
机房小探索
现在连不了NJU-WLAN,怀疑是没有插网线,可以考虑买个USB转网卡的接口,但是我的电脑只有两个USB插口,还不知道版本是什么,之后还想连鼠标跟键盘外设呢。只能连NJU_SWI_WLAN,合理怀疑是Software Internet的缩写…...
PHP8的类与对象的基本操作之成员变量-PHP8知识详解
成员变量是指在类中定义的变量。在类中可以声明多个变量,所以对象中可以存在多个成员变量,每个变量将存储不同的对象属性信息。 例如以下定义: public class Goods { 关键字 $name; //类的成员变量 }成员属性必须使用关键词进行修饰…...
phpstudy2016 RCE漏洞验证
文章目录 漏洞描述漏洞验证 漏洞描述 PHPStudyRCE(Remote Code Execution),也称为phpstudy_backdoor漏洞,是指PHPStudy软件中存在的一个远程代码执行漏洞。 漏洞验证 打开phpstudy2016,用bp自带的浏览器访问www目录下…...
【QT】QT事件Event大全
很高兴在雪易的CSDN遇见你 ,给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享QT中的事件Event技术,主要从QT事件流程和常用QT事件方法等方面展开,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞关注,小易…...
华为云云耀云服务器L实例评测|华为云上安装etcd
文章目录 华为云云耀云服务器L实例评测|华为云上安装etcd一、什么是etcd官方硬件建议 二、华为云主机准备三、etcd安装1. 安装预构建的二进制文件2. 从源代码构建 四、etcd服务注册与发现1. 配置etcd2. 使用systemctl 管理启动etcd服务3. 注册服务4. 发现服务 五、其…...
检索增强生成RAG基础架构与手动模拟
检索增强生成RAG基础 什么是RAG? 检索增强生成(RAG)是指对大型语言模型输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。大型语言模型(LLM)用海量数据进行训练,使用数十亿个参数为回答问题、翻译语言和完成句子等任务生成原始输…...
The import xxx.xxx.xxx is never used
The import xxx.xxx.xxx is never used List is a raw type. References to generic type List<E> should be parameterized Dead code The value of the local variable d is not used代码洁癖啊,为啥这些这么多黄色警告都不处理呢。 没有用的代码࿰…...
SAP PP实战解析:MPS(主生产计划)如何成为供需平衡的“定海神针”?
1. 为什么企业需要MPS这根"定海神针"? 想象一下你正在经营一家汽车制造厂。周一销售部突然接到500辆车的加急订单,周三又被告知原定300辆的订单要取消。如果直接根据这些波动安排生产,车间可能周一忙到通宵,周三却闲置停…...
用STM32和HC-SR04做个智能小车避障,代码和接线图都给你准备好了
STM32与HC-SR04构建智能小车避障系统实战指南 1. 项目概述与核心组件选型 智能小车避障系统是嵌入式开发中极具实用价值的练手项目,它能综合考察开发者对传感器数据采集、电机控制和简单算法的掌握程度。这个项目的核心在于如何让小车自主感知环境并做出避障决策&…...
Linux入门指南:从内核到终端,掌握核心命令与文件操作
1. 从内核到终端:理解Linux的运作逻辑很多刚接触Linux的朋友,包括我当年,都会觉得它是一堆神秘命令的集合。输入几个字母,敲下回车,系统就乖乖听话了。但要想真正用好Linux,而不是死记硬背命令,…...
SpringBoot3 + JDK17 项目实战:用MyBatis-Plus和Redis快速搭建一个用户管理系统
SpringBoot3 JDK17 实战:构建高性能用户管理系统 最近在重构公司内部的管理系统时,我选择了SpringBoot3和JDK17这套组合。新版本带来的性能提升和语法糖让开发效率提高了不少,特别是记录日志和编写Lambda表达式时。本文将带你从零开始&#…...
从LVGL官方例程到自定义界面:在Windows上用CodeBlocks模拟器快速玩转GUI设计
从LVGL官方例程到自定义界面:在Windows上用CodeBlocks模拟器快速玩转GUI设计 对于嵌入式开发者而言,图形用户界面(GUI)设计往往需要在硬件平台上反复烧录测试,效率低下。而LVGL模拟器配合CodeBlocks的组合,为开发者提供了一个在PC…...
手把手教你改造10块钱的USBASP烧录器,让它兼容Arduino IDE和AVRDUDESS
10元USBASP烧录器改造实战:解锁Arduino与AVRDUDESS全兼容方案 从闲置到全能:低成本硬件改造的价值探索 在电子制作和嵌入式开发领域,专业烧录工具往往价格不菲。但你可能不知道,手头那台吃灰的"智峰"版USBASP烧录器&…...
从3D打印机到机械臂:聊聊步进电机选型时,那些容易被忽略的‘动态指标’(附避坑清单)
从3D打印机到机械臂:步进电机选型中那些被低估的动态性能指标 在自动化设备和精密运动控制领域,步进电机因其开环控制特性、高性价比和易于集成的特点,成为3D打印机、CNC机床、机械臂等设备的首选驱动元件。然而,许多工程师在选型…...
Crontab实战指南:从基础配置到高级调试技巧
1. Crontab入门:从零开始掌握定时任务 第一次接触Crontab时,我被这个看似简单却功能强大的工具深深吸引。作为Linux系统中最经典的定时任务工具,它就像一位不知疲倦的助手,能够精确地在指定时间执行你交代的任何任务。记得刚开始使…...
