网络原理之应用层协议介绍

应用层

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

自定义应用层协议

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

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

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

举栗子:

​ 请求:

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

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

响应:

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

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

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

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

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

传输的数据格式

1、HTTP协议
2、XML

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

例如:

<request>
	<goods>
		<name>自行车</name>
		<name2>山地</name2>
	</goods>
	<preference>
		<preference>价格</preference>
		<preference>颜色</preference>
		<preference>优惠<preference></preference>
	</preferences>

缺点:

1、代码丑

2、数据多了编写复杂

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

3、JSON

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

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

JSON:

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

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

优点:

1、可读性非常好

2、看起来美观整洁

3、扩展性强

缺点:

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

4、protobuffer

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XY枫晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值