定义:协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定

(1)语法:即数据与控制信息的结构或格式;
(2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;
(3)时序(同步),即事件实现顺序的详细说明

既然是一组规定,那么协议一定是在特定的应用之间进行的,应用程序互相遵守这个规定,由应用完成对协议的解析,以及其相关操作。比如http对应浏览器,ftp对应FTP服务。在代码方面也有相应的语言包请求ftp服务、设置http请求,响应返回前端。
影响协议的因素:
·语法:协议格式不同
·语义与时序:响应策略不同
实验
对协议的解析的差别无非是协议多几个字段,以及字段名称不同。对影响并不大—-通过实验模拟解码器结果在1毫秒内就可以解析完成
主要差别在其对应策略上
举例原生api调用http与ftp比较:
·由浏览器完成http解析:设置http响应头,把文件信息放入数据区,当浏览器解析根据字段解析出存在附件,提示用户选择保存位置,并且根据响应头来获取文件名,根据数据区知道文件内容,是响应头+数据流的形式没有额外的确认机制,速度跟tcp传输几乎一样。当我们不能通过浏览器方式交互时,而是需要后台进行时。则是需要我们解析出来并采取相应策略,原理一样。

·ftp:服务端是电脑上的ftp服务,客户端是我们的程序里的相关jar包是浏览器对ftp支持的组件(也有浏览器不再对ftp支持,比如谷歌)当我们通过程序请求ftp服务时,由ftp服务完成对文件流的发送,我们通过对应的jar包完成接收,当收到ftp的数据往ftp发确认指令,然后再进行发送,由于有额外的确认机制所以速度相对慢一些
而我们可以对这些协议进行进一步的扩展,比如实现分片上传,断点续传等
但一个成熟的文件系统应该包括以下功能
断点续传
文件校验
自动重传
分块下载
并发控制

要实现这些功能则需要加上必要的字段比如crc校验码等
公司大多根据自己的业务需求自定义应用层协议

断点续传:https://blog.csdn.net/weixin_38055381/article/details/82753480

image.png
无分片以及确认下http与ftp速度比较。测试环境:局域网连接手机热点