认识自定义协议

经过前面的介绍,我们知道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服务器之间交互的细节,方便我们以后的学习。

相关推荐
Python_Study20251 天前
制造业数据采集系统选型指南:从技术挑战到架构实践
大数据·网络·数据结构·人工智能·架构
蚂蚁吃大象6661 天前
vmware虚拟机-网络模型
网络
Caitlin_lee_1 天前
计算机网络期末复习SCAU-第三章
网络·计算机网络
野生技术架构师1 天前
原来可以搭建一个HTTP服务
网络·网络协议·http
奇树谦1 天前
FastDDS路由可达的跨网段通信支持说明
网络
tianyuanwo1 天前
深入解析CentOS 8网络配置:NetworkManager DNS管理机制与网卡类型深度剖析
linux·网络·centos
DX_水位流量监测1 天前
无人机测流之雷达流速仪监测技术分析
大数据·网络·人工智能·数据分析·自动化·无人机
Xの哲學1 天前
Linux io_uring 深度剖析: 重新定义高性能I/O的架构革命
linux·服务器·网络·算法·边缘计算
testpassportcn1 天前
Fortinet FCSS_SDW_AR-7.4 認證介紹|Fortinet Secure SD-WAN 高級路由專家考試
网络·学习·改行学it
盛世宏博北京1 天前
《可复制推广:智慧档案馆 “十防” 安全防护体系建设指南》
网络·人工智能·web安全·智慧档案