Zmodem协议工作原理

文章来源:https://wenku.baidu.com/view/9d8be736eefdc8d376ee32b4.html

Zmodem协议中规定,发送器和接收器之间所传递的信息都包含在包中,即帧中。Zmodem帧中有两个组件:报头和数据子包。
每个帧以报头开始,它标识帧的类型,并带有至少4个字节的信息。
16位CRC二进制报头的格式为:ZPAD ZDLE A frame-type ZF3 ZF2 ZF1 ZF0 CRC-1 CRC-2
ZPAD ZDLE表示帧的开始,
A表示报头的数据是二进制格式,
frame-type表示帧类型,
ZF3 ZF2 ZF1 ZF0是4个字节的信息,当帧类型不同时,它的含义也不同,
CRC-1 CRC-2为校验码

数据子包中包含的是原始的数据块,每个数据子包可以包含至多1024个字节的数据,其后跟随一个CRC值用以校验。
数据子包可以有选择地跟随一个报头后面,而一个报头之后也可以连接无数个数据子包,这种机制保证了数据的传输速度

Zmodem协议中的帧类型及作用
Zmodem协议中有18种帧类型,下面将介绍主要用到的帧类型:
ZRQINIT=0:当ZMODEM发送端启动时,发送次帧。请求接收端发送它的 ZRINIT 帧。开始文件的传输。
ZRINIT=1:接收端发送此帧,表明它已准备好从发送端接收文件。
ZFIFLE=4:此帧用于初始化实际的文件传输。它包含一个报头,后面跟随一个数据子包。数据子包含有文件的信息,如文件名称,长度,时间戳等等。
ZRPOS=9:接收端在任何时刻都可以发送这个帧,4个字节的偏移量填充到报头信息的4个字节,偏移量是接收器请求从文件的某个位置开始发送数据的请求。此帧可实现断点续传的功能。
ZDATA=10:这个帧的4个报头字节包含跟随数据的偏移量,其后可跟随任意个数据子包。数据子包包含文件内容。
ZEOF=11:指明所有文件数据都已发送,4个报头字节包含了EOF的偏移量
ZFIN=8:当发送端再没有文件传送时发送这个帧,接收端在退出之前以它自己的ZFIN帧应答。

Zmodem协议的工作过程:
发送端和接收端要传输文件,首先必须建立连接,双方通过一些传输选项的选择和协商指定好文件传输所必需的遵循的规范。
然后发送端开始进行文件传输,其中 ZFIFLE 帧中含有文件处理的选项,而 ZDATA 帧将具体用来传送文件数据。
在文件传输过程中,对于特定的要求发送端和接收端会进行一些信息的请求响应。
最后当所有的文件都传输完毕,会话将被终止。

按照结构化的方法对系统进行设计,Zmodem协议的工作过程可以细分为以下几个部分:
1、start sending(发送端建立连接)
2、start receiving(接收端建立连接)
3、transmission of sender(发送端传输文件过程)
4、transmission of receiver(接收端接收文件过程)
5、management of ZDATA frame(接收端ZDATA帧的处理过程)
6、management of ZEOF frame(对ZEOF帧的处理过程)
7、end sending(发送端终止发送)
8、end receiving(接收端终止接收)
对于每一部分均可用流程图阐释其工作过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值