网络原理之应用层协议介绍
创始人
2025-05-31 06:45:17
0

应用层

应用层和应用程序息息相关,不同的应用层想里面可能涉及到不同的应用层协议,作为码农很大一部分工作就是在自定义应用层协议。

自定义应用层协议

1、考虑客户端和服务器之间传输哪些信息

2、考虑传输的数据按照上面格式组织

客户端和服务器之间传输哪些信息

举栗子:

​ 请求:

​ 自行车,山地;偏好便宜,耐用,帅气。

请求中有两部分:商品信息和偏好信息,之间使用;来分割
商品信息和偏好信息内部各个部分使用,来分割

响应:

​ 自行车品牌,价格,颜色,优惠
​ 日本自行车,300,蓝色,-10

​ 美国自行车,200,紫色,-5

​ 欧洲自行车,350,黑色,-2

响应中包含多个上架信息,每个商品占一行,每行里面多个属性之间使用,来分割

这就是我约定的客户端和服务器之间传输哪些信息。

传输的数据格式

1、HTTP协议

2、XML

XML比较典型的数据组织格式,经典古老的格式。
特点:通过“标签”的形式来组织键值对数据。标签名字就是key,内容是value

例如:

自行车山地价格颜色优惠

缺点:

1、代码丑

2、数据多了编写复杂

3、这些数据要通过网络传输,消耗网络带宽由于这里包含了大量的标签,就导致网络带宽占用的更高。

3、JSON

JSON是当前最流行的一种数据组织格式,相当于XML的替代品。

{goods:{name:自行车name2:山地},preference:['价格','颜色','优惠'	]
}

JSON:

使用{},{}里面包含了多组键值对,键值对之间使用,来分割,键和之之间使用:分割

键只能是字符串类型
值可以是字符串,数字,数组([ ]就代表数组)

优点:

1、可读性非常好

2、看起来美观整洁

3、扩展性强

缺点:

引入额外的字符串,传输数据流变大,消耗更多的带宽

4、protobuffer

占用带宽低,高校组织数据。

封装/分用 vs 序列化/反序列化

一般来说,在网络数据传输中,发送端应用程序,发送数据时的数据转换(如java一般就是将对象转换为某种协议格式),即对发送数据时的数据包装动作来说:
如果是使用知名协议,这个动作也称为封装
如果是使用小众协议(包括自定义协议),这个动作也称为序列化,一般是将程序中的对象转换为特定的数据格式。

接收端应用程序,接收数据时的数据转换,即对接收数据时的数据解析动作来说:
如果是使用知名协议,这个动作也称为分用
如果是使用小众协议(包括自定义协议),这个动作也称为反序列化,一般是基于接收数据特定的格式,转换为程序中的对象

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...