应用层协议之DNS协议

news/2024/4/28 0:31:11/文章来源:https://blog.csdn.net/zyh20050430/article/details/137055394

一.应用层协议的相关数据传输格式

1.文本字符串格式

应用层主要是自定义协议,以点外卖为例:

客户点开软件,就是应用程序和服务器之间进行网络通信交互。请求和响应可以如下设置

请求:用户信息,位置信息,并使用文本的方式,用逗号分隔->10011,100E,30W。代码中就会构造出这样的字符串,写到TCP/UDP的Socket api中

响应:有多个商家,每个商家都是商家名称+饭菜图+距离+简介+评分,同理用文本的方式,每个商家占一行,用逗号分割。

上述就是自定义协议,方式灵活。而上述通过文本构造协议的方式是比较粗糙的方式,下面就介绍几种开发中常见的格式

2.xml格式

这也算是很老式的一种方式了

该格式的关键是既有开始标签,又有结束标签,结束标签就是在开始标签的前面再加一个反斜杠,例如下面的请求格式

<request>

      <userid>10011</userid>

      <position>100e.30w<</position>

</request>

上下两个request之间就是要传输的数据

xml的优势:让数据的可读性加强

xml的劣势:标签写起来繁琐,同时在网络传输过程中要消耗一定的带宽

3.json格式

这时当下最流行的数据组织格式。格式如下:

{

    userid :"10011",

    position:"100,30"

}

它采用的是键值对结构,外面的花括号把所有的键值对都包裹起来。键(就是key,就是这里的userid)固定使用字符串形式,也就是String类型,值可以是数字,可以是字符串,也可以是数组,还可以是json对象……。两对键值对之间用逗号分隔,键和值之间用冒号分隔,键是字符串但引号可以省略。

优势:可读性好,比xml简洁(因为只有一个标签,没有结束标签)

劣势:在网络传输中消耗一定的带宽(因为key也得传)

虽然有劣势,但是json再网络通信时仍然非常流行,除非性能要求很高的场景

4.protobuffer

这里与json和xml不同的是,它是以二进制的形式组织数据

优势:二进制形式组织,占用带宽最低,传输效率最高,计算机的执行效率最高

劣势:可读性差,降低了开发效率

相比于计算机的执行效率,更重要的还是程序员的开发效率,所以json更流行

二.DNS协议

DNS 即domain name system表示域名解析系统。

1.域名

我们之前说过,在网络上是使用IP地址来表示一个设备在网络上的位置。但是开发网站的关键是有人乐意使用,然而IP这种二进制的形式却不适合进行宣传。

所以就引入了域名的概念:它实际上是用单词组成的,能够表示实际意义,比如www.baidu.com

这就需要有一套自动系统来将域名翻译成IP。

2.hosts文件

最早的域名解析系统,是通过hosts文件实现的

通过这个路径可以找到我们电脑上的host文件

但是打开发现其实里面没啥东西,因为这个机制现在基本上不用了,因为用hosts文件来维护域名与IP地址的映射真的很不方便,每次有一个新的IP地址,就得把每个用户电脑里面的hosts文件进行手动更新。

所以就有了DNS协议

3.工作流程

DNS系统是一组服务器,要想访问某个域名,就要给此DNS服务器发送请求,查询当前域名对应的IP地址。后续若有域名更新,只需要更新这一组服务器即可,不需要修改每个用户的hosts文件

问题:全世界,无时无刻有很多台设备进行DNS请求。那么这一组服务器能抗住这么多请求量吗?一个服务器硬件资源(cpu,内存,硬盘,网络带宽……)优先,单位时间内请求太多,小号的粽子元超过了机器本身的资源上线,就会挂了。那该如何解决?

核心思路:开源,节流

1.开源:搭建DNS的大佬们,号召每个网络运营商都自己搭建一组“DNS镜像服务器”,其中的数据从它们那里同步。此时用户就会邮上线访问离自己最近的DNS镜像服务器。此时,原始DNS服务器就称作根服务器

2.节流:让请求量变少。让美国上网设备,搞一个本地缓存(例如:我的电脑一分钟要访问10次www.baidu.com,那我只让第一次请求DNS即可,然后把结果存到缓存中,后9次都是用第一次的结果

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

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

相关文章

Vue模块化开发步骤—遇到的问题—解决办法

目录 1.npm install webpack -g 2.npm install -g vue/cli-init 3.初始化vue项目 4.启动vue项目 Vscode初建Vue时几个需要注意的问题-CSDN博客 1.npm install webpack -g 全局安装webpack 直接命令提示符运行改指令会报错&#xff0c;operation not permitted 注意&#…

【QT入门】 Qt代码创建布局之水平布局、竖直布局详解

往期回顾&#xff1a; 【QT入门】 Qt实现自定义信号-CSDN博客 【QT入门】 Qt自定义信号后跨线程发送信号-CSDN博客 【QT入门】 Qt内存管理机制详解-CSDN博客 【QT入门】 Qt代码创建布局之水平布局、竖直布局详解 先看两个问题&#xff1a; 1、ui设计器设计界面很方便&#xf…

1学习使用axios

一、axios介绍&#xff1a; axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 Node.js。它提供了一种简单的方法来发送 HTTP 请求&#xff0c;并且具有很多实用的功能&#xff0c;使得网络请求变得更加方便和可靠。 以下是 axios 的一些主要特点和功能&…

python判断当前日期是全年哪一天

设计者&#xff1a;ISDF 版本&#xff1a;v3..0 日期&#xff1a;04/01/2019设计者&#xff1a;ISDF 版本&#xff1a;v4..0 日期&#xff1a;03/27/2024 import datetime#闰年判断函数 def ys_leep_year(year):ys_leep Falseif (year % 400 0) or ((year % 4 0) and (year …

【每日力扣】452. 用最少数量的箭引爆气球与763. 划分字母区间

&#x1f525; 个人主页: 黑洞晓威 &#x1f600;你不必等到非常厉害&#xff0c;才敢开始&#xff0c;你需要开始&#xff0c;才会变的非常厉害。 452. 用最少数量的箭引爆气球 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0…

SpringBoot学习之ElasticSearch下载安装和启动(Windows版)(三十)

本文先写windows下的下载安装和启动,后续有时间再补充其他环境下(Mac、Linux、Docker)的,这里我们后续对ElasticSearch简称为ES,读者习惯这一称呼就好。 一,ES下载 可以百度【ElasticSearch官网】或者直接点击这里的ES官网下载地址:​​​​​ Download Elasticsearch…

【 MyBatis 】| 关于多表联查返回 List 集合只查到一条的 BUG

目录 一. &#x1f981; 写在前面二. &#x1f981; 探索过程2.1 开端 —— 开始写 bug2.2 发展 —— bug 完成2.3 高潮 —— bug探究2.4 结局 —— 效果展示 三. &#x1f981; 写在最后 一. &#x1f981; 写在前面 今天又是 BUG 气满满的一天&#xff0c;一个 xxxMapper.xm…

聊聊低代码产品的应用场景

随着数字化转型的不断深入&#xff0c;企业对于快速开发和迭代软件应用的需求也越来越迫切。而在这样的背景下&#xff0c;低代码产品应运而生&#xff0c;成为了一种热门的技术解决方案。本文将解读低代码产品的定义并探讨其应用场景。 一、低代码产品的定义 低代码产品是一种…

恢复 Linux 上已删除的文件:extundelete 、PhotoRec (***)

为什么Linux的命令 rm 没有回收站呢&#xff1f;Trash-Cli&#xff1a;Linux 命令行回收站工具 &#xff08;***&#xff09; https://blog.csdn.net/ken2232/article/details/136981360 extundelete 直接 apt 安装&#xff0c;运行出现段错误&#xff0c;网络上给出的一种解决…

vscode添加gitee

1.创建仓库 2.Git 全局设置 3.初始化仓库 2.1 打开vscode打开需要上传到给git的代码文件 2.2.点击左边菜单第三个的源代码管理->初始化仓库 4.点击加号暂存所有更改 5.添加远程仓库 5.1 添加地址&#xff0c;回车 5.2 填写库名&#xff0c;回车 6.提交和推送 6.1 点击✔提交…

C++类的六个默认成员函数(详细解析与总结)

目录 前言&#xff1a; 一、构造函数 a.特点 b.注意事项 1.首先明确什么是默认构造函数 2.默认构造函数对内置类型与自定义类型的处理 c.总结 二、析构函数 a.特点 b.注意事项 1.什么时候写析构函数&#xff1f; 2.析构函数对内置类型与自定义类型的处理 c.总结 …

武汉星起航引领跨境电商新纪元,助力卖家扬帆远航全球市场

在全球化的商业浪潮中&#xff0c;跨境电商行业异军突起&#xff0c;成为连接全球市场的重要纽带。亚马逊&#xff0c;作为全球零售电商的巨擘&#xff0c;为无数卖家提供了走向国际市场的广阔舞台。在这片充满机遇与挑战的蓝海中&#xff0c;武汉星起航电子商务有限公司以其独…

R包安装失败怎么办?(一)msigdbr

R包安装失败 如果是网络原因&#xff08;error connection&#xff09;&#xff0c;就使用本地安装的方法。如果是网络原因&#xff0c;通常会出现安装超时&#xff0c;或者网络无法连接的提示 当你把timeout 设置到1000之后还会报错&#xff0c;怎么办&#xff1f; options…

在 Linux 中安装 Jenkins【图文详细教程】

安装 Jenkins 的系统要求&#xff1a; 最少 256MB 可用内存最少 1GB 可用磁盘空间JDK 8 / 11 /17&#xff08;Jenkins 是用 Java 写的&#xff0c;打包成 war 包&#xff09; 查看 JDK 的版本 Java JDK 在 Linux 中的安装可以参考&#xff1a;https://www.yuque.com/u27599042/…

实物档案管理系统是做什么的

实物档案管理系统是用于管理和组织实物档案的信息系统。它的主要功能包括记录、查找、归档实物档案&#xff0c;以及提供相关的管理功能。 具体来说&#xff0c;玖拓智能实物档案管理系统可以帮助单位完成以下任务&#xff1a; 1. 档案登记与归档&#xff1a;将新收到的实物档案…

斯坦福大学研究团队革新电机技术,助力机器人性能飞跃提升

文 | BFT机器人 在科技日新月异的今天&#xff0c;我们期望机器能够胜任的任务愈发复杂且多变。无论是为失去肢体的人提供动力的假肢&#xff0c;还是那些独立在外部世界自由穿梭的机器人&#xff0c;它们都需要在多种场景下展现出卓越的行动能力。 然而传统的标准电动机&…

mac电脑下安装和启动nginx

一,安装homebrew 必须安装了homebrew&#xff0c;可在终端输入命令brew -v查看是否已经安装,没安装的话安装一下: 如果未安装先安装&#xff08;网上很多文章&#xff09; 二,查看nginx是否存在 使用命令:brew search nginx查看nginx是否存在: 不存在的话,就使用brew inst…

服务消费微服务

文章目录 1.示意图2.环境搭建1.创建会员消费微服务模块2.删除不必要的两个文件3.检查父子模块的pom.xml文件1.子模块2.父模块 4.pom.xml 添加依赖&#xff08;刷新&#xff09;5.application.yml 配置监听端口和服务名6.com/sun/springcloud/MemberConsumerApplication.java 创…

社交革命:Facebook如何塑造数字社交的未来

引言 在当今数字化时代&#xff0c;社交媒体已成为人们生活的核心&#xff0c;而Facebook作为其中的领军者&#xff0c;一直在塑造着数字社交的未来。本文将深入探讨Facebook在数字社交领域的地位、影响力以及对未来社交的塑造作用&#xff0c;为读者揭示这场社交革命如何由Fa…

【MySQL】聊聊自增id用完怎么办?

在实际的开发中&#xff0c;一般都会将数据存储到数据库中&#xff0c;在设计表的时候&#xff0c;其实id如果达到最大值的话&#xff0c;会出现什么问题。其实主要分两种情况&#xff0c;一种是设置了主键id&#xff0c;另一种没有设置主键id。 表定义自增值id create table…