网络原理-TCP/IP --应用层

在这里插入图片描述

T04BF

👋专栏: 算法|JAVA|MySQL|C语言

🫵 今天你敲代码了吗

目录

    • 3.网络原理 -TCP/IP
      • 3.1 应用层

3.网络原理 -TCP/IP

3.1 应用层

应用层是程序员打交道最多的一层,与应用程序直接相关

而应用层的协议,实际上就规定了你写的程序,通过网络传输的时候,按照什么样的格式来进行传输

不同的应用程序可以使用不同的应用层协议

但是实际我们在开发中更多的是 自定义应用层协议

自定义应用层协议本质上就是 对要传输的数据 做出约定
(1)约定传输的数据要包含哪些信息
(2)约定传输的数据要遵守怎么样的格式

举个例子就是
假设我们要做一个外卖平台
那么用户进去这个平台就会自动获取到用户附近的商家列表,这个过程涉及到请求
那么请求的信息就包含:用户的ID以及所在的位置

此时服务器的响应就包含:商家列表,商家名称,商家图片,商家评分,商家简介

而上面的数据都是"结构化数据"

我们就要规定传输的具体格式
(1)基于文本行的方式来传输

请求:用户ID,位置信息\n

响应:商家1名称,商家1图片,商家1介绍;商家2名称,商家2图片,商家2介绍;商家3名称,商家3图片,商家3介绍…

这种格式就是属于 一种自定义的格式,要包含哪些信息,分隔符使用哪个…都是可以灵活进行控制的,只要确保服务器和客户端使用的是同一套通信规则即可

但是上述这一套规则是属于不太好用的,可维护性比较差,当属性多了的时候,看上去就比较乱

(2)基于XML的方式

XML是一种经典的数据组织方式

请求:

<request><userId>1234</userId><position>180E40N</position></request>

(3)基于JSON
这是当前最流行,最广泛使用的方式

{​     userId:1234,​     position:"180E40N"}

就是使用{ }作为边界
{ }里面是键值对,键值对之间用 ‘,’ 进行分割,键和值之间用 ‘:’ 进行分割

这种方式的可读性非常好,并且比 xml更加简洁

(4)yml
这种是基于 缩进的方式

request:​    userId:1234​    position:"180E40N"

就是基于缩进来表示 包含 / 嵌套关系
这种方式对于 缩进 是严格要求的,可读性也非常好
但是缺点在于,万一没缩进正确,就会出错

(5)protobuffer (pb)
前面几种都是文本格式,而pb则是 二进制格式
这种我们就看不懂了

就是针对要传输的数据进一步整理和压缩了,虽然可读性不好,但能够把空间最充分的利用,最节省网络带宽,效率也就最高

感谢您的访问!!期待您的关注!!!

在这里插入图片描述

T04BF

🫵 小比特 大梦想

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

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

相关文章

2928. 给小朋友们分糖果 I

给你两个正整数 n 和 limit 。 请你将 n 颗糖果分给 3 位小朋友&#xff0c;确保没有任何小朋友得到超过 limit 颗糖果&#xff0c;请你返回满足此条件下的 总方案数 。 示例 1&#xff1a; 输入&#xff1a;n 5, limit 2 输出&#xff1a;3 解释&#xff1a;总共有 3 种方…

FX2N用什么编程软件:深入解析与选择指南

FX2N用什么编程软件&#xff1a;深入解析与选择指南 在工业自动化领域&#xff0c;FX2N系列PLC因其卓越的性能和广泛的应用而备受瞩目。然而&#xff0c;对于许多初学者和工程师来说&#xff0c;如何选择合适的编程软件来开发FX2N系列PLC却是一个令人困惑的问题。本文将从四个…

【LINUX】LINUX基础(目录结构、基本权限、基本命令)

文章目录 LINUX的目录结构LINUX的基本权限LINUX基本命令 LINUX的目录结构 /&#xff1a;表示根目录bin&#xff1a;存放二进制可执行文件(命令ls、cat、mkdir等)boot&#xff1a;存放系统引导文件dev&#xff1a;存放设备文件etc&#xff1a;存放系统配置文件home&#xff1a;…

LeeCode热题100(爬楼梯)

爬楼梯这个题我断断续续看了不下5遍&#xff0c;哪次看都是懵逼的&#xff0c;就会说是满足动态规划&#xff0c;满足斐波那契数列&#xff0c;也不说为什么。 本文一定让你明白怎么分析这个题的规律&#xff08;利用数学的递推思想来分析&#xff09;&#xff0c;看不懂来打我…

Ubuntu 22.04 .NET8 程序 环境安装和运行

前言 我们需要将.NET8编写的console控制台程序&#xff0c;部署在Ubuntu服务器上运行。 安装.NET运行时 1.增加微软包安装源 wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages…

JAVA学习-练习试用Java实现“Z字形变换”

问题&#xff1a; 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时&#xff0c;排列如下&#xff1a; P A H N A P L S I I G Y I R 之后&#xff0c;你…

1114 全素日

你好哇&#xff0c;新的一天开始啦&#xff01; solution 取数值的不同部分&#xff0c;联想到借助string #include<iostream> #include<string> using namespace std; bool judge(string s){int n atoi(s.c_str());if(n 1 || n 0) return false;for(int i 2…

FT编程语言:探索其深度、广度与未来潜力

FT编程语言&#xff1a;探索其深度、广度与未来潜力 FT编程语言&#xff0c;作为一个新兴且充满潜力的编程领域&#xff0c;正逐渐引起开发者和研究者的广泛关注。其独特的设计理念和强大的功能使得它在多个方面展现出独特的魅力。本文将从四个方面、五个方面、六个方面和七个…

“浔川AI翻译”正式上线!——浔川AI社

1前言&#xff1a; 浔川AI翻译机是一种基于人工智能技术开发的翻译设备。它能够实时将一种语言的文本或口语翻译成另一种语言&#xff0c;使得不同语言之间的交流更加便捷。浔川AI翻译机利用深度学习算法和大数据训练模型&#xff0c;能够自动识别和理解输入的语言&#xff0c…

618大促买什么数码最划算?数码好物清单整理,买到就是赚到!

618年中大促数码产品爱好者们纷纷摩拳擦掌&#xff0c;准备在这个购物狂欢节里抢购心仪已久的数码好物&#xff0c;在繁多的品牌和型号中挑选出最划算的产品&#xff0c;并不是一件容易的事情&#xff0c;为了帮助大家更好地把握这次购物机会&#xff0c;我们精心整理了一份数码…

基于java的CRM客户关系管理系统(一)

目录 第一章 绪论 1.1 研究背景和意义 1.1.1 企业管理信息化 1.1.2 CRM的概念 1.1.3 CRM客户管理系统的意义 1.2 国内外研究 1.3 论文结构 1.4 本章小结 资源毕业设计毕业论文源代码请移步 CRM客户关系管理系统毕业论文毕业设计源代码 第一章 绪论 1.1 研究背景…

【qt】多窗口开发

多窗口开发 一.应用场景二.嵌入的窗口1.设计Widget窗口2.创建窗口3.添加窗口4.总代码 三.独立的窗口1.创建窗口2.显示窗口 四.总结 一.应用场景 多窗口,顾名思义,有多个窗口可以供我们进行操作! 截个小图,你应该就知道了 OK,话不多说,直接开干,先来设计我们的主窗口 需要蔬菜…

《异常检测——从经典算法到深度学习》29 EasyTSAD: 用于时间序列异常检测模型的工业级基准

《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Donut: …

MySQL的一些高频面试题汇总(持续补充)

1.事务4大特性 事务4大特性&#xff1a;原子性、一致性、隔离性、持久性 原⼦性&#xff1a;事务是最⼩的执⾏单位&#xff0c;不允许分割。事务的原⼦性确保动作要么全部完成&#xff0c;要么全不执行 一致性&#xff1a;执⾏事务前后&#xff0c;数据保持⼀致&#xff0c;多…

2-链表-51-删除链表的倒数第 N 个结点-LeetCode19

2-链表-51-删除链表的倒数第 N 个结点-LeetCode19 参考:代码随想录 LeetCode: 题目序号19 更多内容欢迎关注我(持续更新中,欢迎Star✨) Github:CodeZeng1998/Java-Developer-Work-Note 技术公众号:CodeZeng1998(纯纯技术文) 生活公众号:好锅(Life is more than co…

html 添加元素如何能提升速度

在 HTML 中&#xff0c;如果你需要频繁地添加大量元素&#xff0c;需要确保你的操作能够以最佳性能进行。以下是一些有助于提高添加元素速度的方法&#xff1a; 综上所述&#xff0c;通过使用文档片段、innerHTML、虚拟滚动以及避免频繁的重排和重绘&#xff0c;你可以提高在 H…

java mybatis处理大数据量,开启和配置二级缓存,及注意事项,已解决

注意事项&#xff1a; 尽量避免使用下面方式写sql否则会降低服务器性能&#xff1a; mybatis二级缓存开启后&#xff0c;避免使用事务注解&#xff08;加上事务注解后二级缓存数据会导致两次访问不一致问题&#xff09;&#xff1a; 3. 返回的对象实体类&#xff0c;要实现Se…

基恩士激光 速度 曝光等关系

一、基恩士 CtrlN 二、速度设置 计算扫描速度 曝光时间&#xff1a; 1:1 相机点间隔是0.025 &#xff0c;我们要扫描的图像也是1&#xff1a;1的话&#xff0c;速度可以为 采样周期我们设定为3K&#xff0c;假如我们的7000行就够了 速度V0.025&#xff08;线间隔&#xff0…

基于SSM框架的手机商城项目

后端: 订单管理 客户管理&#xff1a; 商品管理 类目管理 前端&#xff1a; 首页&#xff1a;

Visual Studio怎么用?

Visual Studio的使用涉及多个方面&#xff0c;以下是一个清晰的使用指南&#xff0c;涵盖了Visual Studio的基本功能、安装、界面介绍、项目创建、代码编写、调试和发布等关键步骤&#xff1a; 一、Visual Studio简介 Visual Studio是由微软公司开发的一款集成开发环境&#…