应用层协议/传输层协议(UDP)

目录

应用层

如何自定义应用层协议?

序列化方式

1.基于行文本的方式来传输

2.基于xml的方式

3.基于json的方式

4.yml的形式

5.protobuffer(pb)形式

传输层

端口号

协议

 UDP

校验和

CRC

TCP


TCP/IP五层协议

应用层 -- 传输层 -- 网络层 -- 数据链路层 -- 物理层。

应用层

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

应用层协议里面描述的内容就是你写的程序,通过网络具体按照啥样的方式来传输数据,不同的应用程序就可以用不同的应用层协议。在实际开发中,很多时候需要自己去自定制应用层协议的。

自定义应用层协议,本质上就是对传输的数据做出约定:

1.约定传输的数据要有那些信息。

2.传输的数据要遵守什么样的格式。

如何自定义应用层协议?

1.确定传输信息

客户端发送请求,服务器响应数据。

比如开发一个外卖软件,用户发送请求:用户的id和所在位置,服务器返回响应:商家列表,商家名称,商家图片,商家评分简介等。

2.确定数据格式

上述的数据都属于”结构化数据“(通过结构体来表示的数据),网络上传输的是字符串(二进制字符串),就需要对数据进行序列化。

序列化方式

1.基于行文本的方式来传输

例如:

请求:用户id,位置信息

           1234 180E40N

响应:商家名称,商家图片,商家评分

           凉皮         图片地址        9.2       

这种格式属于自定义格式,包含的信息,分割符都可以灵活控制,只需要确保客户端和服务器使用同一套规则进行通信即可。但是这套规则的可维护性比较差,当属性多了的时候,看上去混乱。

2.基于xml的方式

一种经典的数据组织格式:

请求:

<request>

        <userId>1234</userId>

        <position>180E40N</position>

</request>

 在使用maven使就是通过xml来配置管理的。

3.基于json的方式

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

请求:

{

        userId: 1234,

        position: "180E40N"

}

可读性好,而且比xml更简洁。 

4.yml的形式

属于缩进格式,通过缩进来表示包含/嵌套关系。xml通过标签来表示嵌套关系,yml通过缩进来表示的。并且对于缩进是强制要求的,可读性也很好,缩进不正确就会出错。

5.protobuffer(pb)形式

前面几种形式都是文本格式,肉眼可以看懂,pd则是二进制数据,肉眼看不懂。对于传输效率要求高的场景推荐使用这种方式,针对数据进行进一步的整理和压缩,虽然可读性不好,但是能够把空间最充分的利用,最节省网络宽带,效率也最高。

传输层

socket api都是由传输层协议提供的,操作系统内核实现。

端口号

端口号就是传输层提供的概念,用来寻找主机上的应用程序。端口号是一个整数,使用两个字节表示的无符号整数:0 -> 65535,其中,小于1024的端口号称为知名端口号,把这些端口号分配给一些比较知名的服务器程序作为这些服务器的“默认端口号”,自己写的服务器程序要避免知名端口号。

同一个机器上,同一时刻,端口号不能重复被绑定。可以使用 netstat 命令查看当前主机上是否有使用9090端口的进程,打开终端,输入命令:

 9090端口号没有被使用,8080端口号被使用。两个进程不能同时绑定一个端口号。

协议

UDP: 无连接,不可靠传输,面向数据报,全双工

TCP:有连接,可靠传输,面向字节流,全双工

 UDP

应用层数据到达UDP之后,就会给应用层数据报前面拼装上UDP报头。

UDP数据报 = UDP报头(8字节) + UDP载荷

 一个UDP数据报,,最长就是64kb,UDP长度就描述了整个UDP数据报占多少个字节,通过UDP长度就能知道当前载荷一共是多少字节。如果使用UDP开发程序,就会有很大的限制,要确单个数据报在传输时不能超过64KB。

校验和

数据在网络传输中是可能会”出错“的。如比特翻转:

传输数据时是传输的二进制数,假设传输的是 0,但是实际到达对端却变成了 1

这是因为数据在传输过程中变为电信号/光信号/电磁波的形式,可能受到外界干扰。比如电信号,在电信号中使用 0 表示高电平,使用 1 表示低电平,此时如果在传输过程中,遇到一个变化的磁场,就会把原来 的高电平/低电平变为低电平/高电平,这就需要能够对传输的数据进行校验。UDP就使用CRC的方式来对错误信息进行校验。

校验和是数据引入冗余信息,通过冗余信息来验证原有的数据。就是拿着数据一部分进行一系列计算,得到的结果,如果数据发生变化,此时得到的结果也不一样

CRC

UDP中使用CRC算法作为校验和,CRC是一个简单粗暴的计算校验和的方式,循环冗余校验 。

设定两个字节的变量,把数据每个字节都取出来,往这个变量上进行累加,如果结果溢出,超过两个字节的溢出部分就舍弃。

TCP

TCP协议机制较复杂,下篇文章进行详解。

感谢观看

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

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

相关文章

cocotb value cocotb—基础语法对照篇

cocotb—基础语法对照篇 import cocotb from cocotb.triggers import Timer from adder_model import adder_model from cocotb.clock import Clock from cocotb.triggers import RisingEdge import randomcocotb.test() async def adder_basic_test(dut):"""Te…

【NoSQL数据库】Hbase基本操作——数据库表的增删改查

目录 一、Hbase原理 二、HBase数据库操作 三、遇到的问题和解决方法 一、Hbase原理 HBase的数据模型&#xff1a; 行键 时间戳 列族&#xff1a;contents 列族&#xff1a;anchor 列族&#xff1a;mime “com.cnn.www” T9 Achor:cnnsi.com”CNN” T8 Achor:…

【NLP高频面题 - LLM架构篇】大模型使用SwiGLU相对于ReLU有什么好处?

【NLP高频面题 - LLM架构篇】大模型使用SwiGLU相对于ReLU有什么好处&#xff1f; 重要性&#xff1a;★★★ &#x1f4af; NLP Github 项目&#xff1a; NLP 项目实践&#xff1a;fasterai/nlp-project-practice 介绍&#xff1a;该仓库围绕着 NLP 任务模型的设计、训练、优化…

ElementUI 问题清单

1、form 下面只有一个 input 时回车键刷新页面 原因是触发了表单默认的提交行为&#xff0c;给el-form 加上submit.native.prevent就行了。 <el-form inline submit.native.prevent><el-form-item label"订单号"><el-inputv-model"query.order…

AWS 机器学习,推动 AI 技术的健康发展

目录 一、AI 正在改变生产方式二、从炒作走向务实1、选对场景2、重视数据3、产品思维4、持续优化 三、人才是最稀缺的资源四、负责任的 AI 开发五、未来已来六、启示与思考七、结语 如果说传统软件开发是手工作坊&#xff0c;那么 AI 就像工业革命带来的机器生产。 在最新的一…

【第 1 章 初识 C 语言】1.8 使用 C 语言的 7 个步骤

目录 1.8 使用 C 语言的 7 个步骤 1.8.1 第 1 步&#xff1a;定义程序的目标 1.8.2 第 2 步&#xff1a;设计程序 1.8.3 第 3 步&#xff1a;编写代码 1.8.4 第 4 步&#xff1a;编译 1.8.5 第 5 步&#xff1a;运行程序 1.8.6 第 6 步&#xff1a;测试和调试程序 1.8.…

C++知识整理day4内存管理——new和delete详解

文章目录 1.C/C内存分布2.C语言中动态内存管理&#xff1a;malloc/realloc/calloc3.C内存管理方式3.1 new/delete操作内置类型3.2 new和delete操作自定义类型 4.malloc/free和new/delete到底什么区别&#xff1f;4.1 对于自定义类型4.2 对于自定义类型4.3 总结&#xff1a;它们…

实现跨平台 SSH 连接:从 macOS 到 Windows WSL 的完整解决方案20241203

&#x1f310; 实现跨平台 SSH 连接&#xff1a;从 macOS 到 Windows WSL 的完整解决方案 ✨ 引言 随着跨平台开发的普及&#xff0c;开发者经常需要在多系统环境中切换和协作。尤其是在 macOS 和 Windows 混合使用的开发环境中&#xff0c;通过 SSH 远程访问和管理 Windows …

检索增强生成RAG与知识图谱

检索增强生成RAG与知识图谱 一、检索增强生成&#xff08;RAG&#xff09;1、简介2、RAG 的优点3、RAG的应用场景4、RAG增强原理 二、知识图谱介绍1、简介2、知识图谱的应用场景3、优劣势分析a、优点:b、缺点: 4、应用实例5、知识图谱和图数据库的关系 一、检索增强生成&#x…

Vue前端开发-路由跳转及带参数跳转

在Vue 3中&#xff0c;由于没有实例化对象this&#xff0c;因此&#xff0c;无法通过this去访问 $route对象&#xff0c;而是通过导入一个名为 useRouter 的方法&#xff0c;执行这个方法后&#xff0c;返回一个路由对象&#xff0c;通过这个路由对象就可以获取到当前路由中的信…

第九篇:k8s 通过helm发布应用

什么是helm&#xff1f; Helm 是 Kubernetes 的包管理器。Helm 是查找、分享和使用软件构建 Kubernetes 的最优方式。 在红帽系的Linux中我们使用yum来管理RPM包&#xff0c;类似的&#xff0c;在K8s中我们可以使用helm来管理资源对象&#xff08;Deployment、Service、Ingress…

SQL——DQL分组聚合

分组聚合&#xff1a; 格式&#xff1a; select 聚合函数1(聚合的列),聚合函数2(聚合的列) from 表名 group by 标识列; ###若想方便分辨聚合后数据可在聚合函数前加上标识列&#xff08;以标识列进行分组&#xff09; 常见的聚合函数: sum(列名):求和函数 avg(列名)…

【Linux】ubuntu下一键配置vim

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;Linux &#x1f339;往期回顾&#x1f339;&#xff1a;Linux权限&#xff08;超详细彻底搞懂Linux的权限&#xff09; &#x1f516;流水不争&#xff0c;争的是滔滔…

42_GAN网络详解(2)---常见的GAN

DCGAN CGAN 条件生成对抗网络&#xff08;Conditional Generative Adversarial Networks, CGAN&#xff09;是生成对抗网络&#xff08;Generative Adversarial Networks, GAN&#xff09;的一种变体&#xff0c;由Mehdi Mirza和Simon Osindero在2014年提出。CGAN的主要改进在…

burp常用机漏洞测试理论

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

带权并查集和扩展域并查集的一些整理和理解(上)

请读者在有一定并查集基础上再阅读&#xff08;至少要知道什么是带权和扩展域并查集&#xff09; 在最近做题时候&#xff0c;我遇到了一些带权并查集和扩展域并查集的题目。我觉得它们都很难写也很难想&#xff0c;尤其是带权并查集我几乎第一时间无法想到是怎么做的&#xf…

一分钟快速了解SBTI科学碳目标/碳披露认证

一分钟快速了解SBTI&#xff08;Science Based Targets initiative&#xff0c;科学碳目标&#xff09;认证注意事项&#xff0c;是企业在追求可持续发展道路上不可或缺的一环。SBTI认证不仅是对企业减排承诺的权威背书&#xff0c;更是引领行业绿色转型的风向标。 在踏上SBTI认…

李飞飞空间智能来了:AI生成可探索交互的3D世界,颠覆游戏电影VR行业

目录 前言图生世界摄影效果景深效果滑动变焦 3D效果交互效果动画效果 走进大师的艺术工作流总结 前言 12月3日&#xff0c;有AI“教母”之称的李飞飞发布了空间智能的一个项目&#xff0c;一经发布就立刻引爆了外网。这个项目是仅仅通过一张图片&#xff0c;AI就可以快速的构建…

网络安全防护指南:筑牢网络安全防线(5/10)

一、网络安全的基本概念 &#xff08;一&#xff09;网络的定义 网络是指由计算机或者其他信息终端及相关设备组成的按照一定的规则和程序对信息收集、存储、传输、交换、处理的系统。在当今数字化时代&#xff0c;网络已经成为人们生活和工作中不可或缺的一部分。它连接了世…

方案拆解 | 打击矩阵新规频出!2025矩阵营销该怎么玩?

社媒平台的矩阵营销又要“变天”了&#xff1f;&#xff01; 11月18日&#xff0c;小红书官方发表了被安全薯 称为“小红书史上最严打击黑灰产专项”新规&#xff0c;其中就包括黑灰产矩阵号的公告。 ▲ 图源&#xff1a;小红书 实际上&#xff0c;不包括这次&#xff0c;今年…