认识自定义协议

经过前面的介绍,我们知道TCP/IP协议有一组五层模型,从上往下为应用层、传输层、网络层、数据链路层和物理层,且在网络中传输的数据都必须经过这几层模型的封装和分用,作为程序员,我们最经常打交道的就是应用层。程序员写的代码,只要涉及网络传输的代码都可以被视为应用层的一部分。且应用层中涉及到的网络通信协议,很多都是程序员自定义的,所以但凡实现一个具体程序,写代码前,一定要约定应用层协议的格式。

那如何具体实现自定义协议呢?

自定义协议分成两个阶段:

阶段一:根据需求,明确传输哪些信息。

阶段二:约定好信息的组织格式。

接下来,我们以外卖程序为例子,介绍这两个阶段

阶段一

首先,我们打来一个外卖程序时,会显示一个商家列表。此时我们可以根据我们要吃什么向服务器发送请求,这个请求中就可能包括用户要吃的东西、用户的位置信息和用户的id等信息,服务器可以根据请求里面的内容返回一个响应,响应的内容就会包括商家的id、商家的名字、商家的图片、评分和配送费等信息。

具体请求和响应的内容是如何组织的,就要靠阶段二。

阶段二

应用层也给我们提供了一些组织数据的自定义格式,常用的有行文本格式、xml格式、json格式和protobuf格式这四种。

1.行文本格式

行文本格式指的是数据以文本的形式逐行 进行记录和存储数据的一种格式。每一行代表一个相对独立的数据单元或者一条记录。

以上面点外卖为例子

请求和响应的内容根据行文本格式组织的形式如下图

注意:

上图组织数据的方案并不是固定的,列与列之间不一定使用逗号分隔, 也可以使用分号,一个点和/t等形式来隔开列与列之间的信息,行与行之间也是如此。

最低要求就是客户端服务器(前段端)和后端服务器共同按照同一套规则来进行构造和解析数据就行了。

2. .xml格式

xml格式就是以成对的标签构成的键值对结构来组织数据,且xml格式中的标签内容是可以自定义的。

形式如下图

xml格式的优缺点

优点:可读性好

缺点:xml格式中的开始标签和结束标签表示的都是同一个信息,冗余信息太多了,在网络传输中,会消耗更多的宽带。

对于一个服务器来说,硬盘最便宜,内存其次,CPU小贵,宽带特别贵

3.json格式

json格式是一种轻量级的储存数据的格式,json格式的数据在网络传输时,占用的网络宽带较小,尤其时处理大量数据时,能够有效提高传输效率,节省网络资源。

json也是最流行的网络数据格式组织的方案。

形式如下图

优点:可读性好,消耗的宽带资源也比xml少

缺点:还是存在冗余信息

4. protobuf格式

protobuf格式是基于二进制的格式对数据进行压缩,这样就不涉及到xml和json格式中的冗余信息了,消耗的宽带资源最少,但是可读性变差了。

总结

1.行文本格式最原始,可读性好

2.xml格式较原始,可读性好,冗余较多

3.json格式是当今主流的方式,可读性好,冗余一般

4.protobuf格式是在追求高性能场景下的使用方式,可读性差,冗余最小

但是在应用层中,除了自定义协议之外,也有一些大佬们搞好的现成的协议,如HTTP协议就是其中的一种,且HTTP协议也是我们学习的重点内容,接下来,我就会向大家一步一步介绍HTTP协议。

Fiddler抓包工具

HTTP是一个文本格式的协议,可以通过Fiddler抓包,分析HTTP请求和响应的细节。

抓包工具的原理

Fiddler相当于一个"代理",当浏览器访问Sogou.com时,就会先把这个http请求先发给fiddler,接着Fiddler再将请求转发给sogou服务器,当sogou服务器返回数据时,Fiddler会先拿到返回的数据,在把数据返回给浏览器。

如下图

因此,通过Fiddler,我们就可以清楚的知道浏览器和sogou服务器之间交互的细节,方便我们以后的学习。

相关推荐
EasyGBS3 分钟前
视频设备轨迹回放平台EasyCVR打造视频智能融合新平台,驱动智慧机场迈向数字新时代
网络·人工智能·安全·音视频
EasyGBS33 分钟前
视频设备轨迹回放平台EasyCVR综合智能化,搭建运动场体育赛事直播方案
网络·安全·音视频
低头不见3 小时前
tcp的粘包拆包问题,如何解决?
网络·网络协议·tcp/ip
SKYDROID云卓小助手4 小时前
三轴云台之相机技术篇
运维·服务器·网络·数码相机·音视频
yuzhangfeng7 小时前
【云计算物理网络】从传统网络到SDN:云计算的网络演进之路
网络·云计算
TDengine (老段)7 小时前
TDengine 中的关联查询
大数据·javascript·网络·物联网·时序数据库·tdengine·iotdb
zhu12893035568 小时前
网络安全的现状与防护措施
网络·安全·web安全
zhu12893035569 小时前
网络安全与防护策略
网络·安全·web安全
沫夕残雪10 小时前
HTTP,请求响应报头,以及抓包工具的讨论
网络·vscode·网络协议·http