文档章节

平时使用的Lszrz到底是什么协议?说说Xmodem/Ymodem/Zmodem

独钓渔
 独钓渔
发布于 07/16 21:09
字数 1189
阅读 157
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

XMODEM, YMODEM, and ZMODEM

由于平时使用rz/sz较多,r/s好理解,一个send一个receive。但是由不太清楚z是什么意思,故有此文。
sx/rx, sb/rb (b=batch)和sz/rz分别实现了xmodem,ymodem和zmodem文件传输协议。

Xmodem(1977 Ward Christensen )->Ymodem(1985 Chuck Forsberg )->Zmodem(1986 Chuck Forsberg)

先有Xmodem,后逐渐演化成Ymodem,但是Ymodem还是不够快速缺点也多,再后来便发展为Zmodem,也就是我们日常工作中使用相当多的文件传输协议之一。

Xmodem
广泛使用的文件传输协议之一。最初的Xmodem协议使用128字节包和简单的校验和方式做为错误检测。随后改进为Xmodem-CRC,使用更加安全的循环冗余校验(Cyclic Redundancy Check )方式作为错误检测。Xmodem协议总是尝试优先使用CRC,如果发送方未收到使用CRC方式的请求消息,接收方则会切换为校验和方式继续请求传输。

校验和方式
包结构


打个比方,发一次文件需要分5块(block),那么block no 是从1到5,又假设这5块的数据包分别是d1~d5,那么checksum=sum(d1+d2+d3+d4+d5)/256 , 这里/是取模。

接收方如何知道某一块是不是最后一块?

以上述例子,在第5块发送完成后,紧接着会发送一个EOT(End of Transmission)标记字符,该字符是以单个字节单独发送。

传输过程


CRC方式

CRC方式在原有checksum的基础上,由一个字节更新为两个字节的CRC,相对于checksum更加安全。CRC循环冗余校验也属于校验和的一种,但是在严格意义上不属于和而是属于除

Xmodem-1K
包结构


Xmodem-1K本质上是Xmodem-CRC,只是data packet长度增加为1024bytes(1K),然后第1个字节由SOH更新为STX。在其他系统和BBS上它也被成为Ymodem,XMODEM-1K最初是Chuck Forsberg在其YMODEM协议中对XMODEM进行的众多改进之一。 Forsberg建议,各种改进是可选的,希望软件作者能够实现尽可能多的改进。 相反,他们通常只实现了最低限度的最低要求,导致大量的半兼容实现,并最终从名称“ YMODEM”拆分为“ XMODEM-1K”和各种YMODEM。

Ymodem
Ymodem是Chuck Forsberg对Xmodem的改进,但Ymodem的命名由Xmodem的原始作者Ward Christensen给出。Ymodem本质上是Xmodem-1K,它允许在同一个会话(session)里同时进行多文件传输。 在某些系统上,它被列为Ymodem Batch。

包结构

Ymodem在Xmodem基础上发展,沿用了TeLink协议的添加空头块的做法,也就是增加block 0。该block标识即将发送文件的文件名,文件大小和文件创建时间戳,如下:


传输过程
Ymodem允许在同一个会话(session)内同时传输多个文件,以下以多文件为例展示传输过程,单个文件类似。

以128位传输

以1K传输

Ymodem-g
YMODEM-g是Ymodem的变体,是一种流协议,以连续流的形式发送和接收1K数据包,直到指示需要停止为止。 在发送下一个数据包之前,它不需要等待接收到ACK。 该协议比YMODEM更快,因为没有在数据包之间引入延迟,但是没有纠正错误的能力。 如果任何块传输失败,则取消整个文件的传输。

Zmodem
随着网络速度加快,已有的x/ymodem协议速度已经跟不上时代的步伐。Zmodem应运而生,它采用窗口滑动机制,Zmodem有两个最重要的特征:高效,提供崩溃恢复。

高效
只要接收方没有发现错误便允许发送方不停的发送数据包,而无需发送方接收接收方的ACK标记(因为可能会有延迟或者错误发生)。允许连续发送的数据包数量称之为窗口,在大部分Zmodem的实现协议中采用2~16个包的数量。

崩溃恢复
如果Zmodem传输被取消或者因为某种原因被干扰,该稍候可以恢复传输,并且无需重新发送之前的内容。

参考
http://web.cecs.pdx.edu/~rootd/catdoc/guide/TheGuide_226.html#SEC237
https://en.wikipedia.org/wiki/XMODEM
https://en.wikipedia.org/wiki/YMODEM
https://en.wikipedia.org/wiki/ZMODEM

 

 

独钓渔
粉丝 49
博文 490
码字总数 197606
作品 0
沙坪坝
系统管理员
私信 提问
加载中
请先登录后再评论。
CDH5: 使用parcels配置lzo

一、Parcel 部署步骤 1 下载: 首先需要下载 Parcel。下载完成后,Parcel 将驻留在 Cloudera Manager 主机的本地目录中。 2 分配: Parcel 下载后,将分配到群集中的所有主机上并解压缩。 3 激...

cloud-coder
2014/07/01
6.8K
1
beego API开发以及自动化文档

beego API开发以及自动化文档 beego1.3版本已经在上个星期发布了,但是还是有很多人不了解如何来进行开发,也是在一步一步的测试中开发,期间QQ群里面很多人都问我如何开发,我的业余时间实在...

astaxie
2014/06/25
2.7W
22
N简单CMS

N简单CMS能够让网站开发者更快速、灵活、简单的开发网站。 N简单CMS有以下特点: 更简单和自由的模板标签调用 专注于人性化的管理和操作 基于完全php5框架Kohana2.3.4开发 资源调用和消耗更低...

匿名
2013/02/26
3.2K
0
OpenConnect VPN 服务器--ocserv

ocserv 全称是 OpenConnect VPN Server。实现了 AnyConnect SSL VPN 协议,兼容 OpenConnection VPN 客户端。特点是体积小、安全和可配置。依赖标准协议如 TLS 1.2 和数据报文 TLS。...

匿名
2013/03/06
8.7K
0
Chrome页面自动刷新插件--smartF5

smartF5是一款chrome插件,用以实现监控页面资源,并自动刷新。 特别适合双屏情况下的DEMO开发,大大提高页面开发效率。 让你键盘上的F5键退休吧! 为什么选择smartF5 本插件具有以下特色: ...

YanisWang
2013/04/04
1.2W
0

没有更多内容

加载失败,请刷新页面

加载更多

抖音批量发布软件,批量运营200+自媒体账号

抖音批量发布软件,批量运营200+自媒体账号,现在短视频平台大家也可以看的到,流量很大,很多人开通了商品橱窗,在上面进行带货,赚钱也很简单,尤其是抖音这个平台,男女老少都在玩,里面也...

osc_emgrwx5d
17分钟前
9
0
基于MES系统的企业信息化系统的集成

引言 随着网络和科技的发展,互联网技术和电子信息技术已经逐渐融入了我们生活工作的各个环节。在企业中,企业信息化程度的高低也直接影响到企业的运营。企业要想得到快速长远的发展,就要利...

osc_7owgvpdx
18分钟前
17
0
dockerfile源码编译安装nginx、php和harbor

安装docker 环境:基于CentOS Linux release 7.6.1810 注意:以下所有操作基于root用户 #centos7# step 1: 安装必要的一些系统工具yum install -y yum-utils device-mapper-persistent-da...

osc_otuqqtuq
19分钟前
11
0
条形码识别器Dynamsoft Barcode Reader v7.5全新上线!

Dynamsoft Barcode Readerv7.5带来了一些新的参数配置,例如中心定位条形码、二值化模式等。让我们来看看新功能中的一些亮点。 更新 添加了对QR Code Model 1(QR Code规范的旧版本)的支持。...

roffey
20分钟前
6
0
TCP端口的十一种连接状态

TCP端口的十一种连接状态∶ CLOSED∶端口默认是关闭状态。 
LISTEN∶服务器程序开始监听一个端口,就是LISTEN状态。 
 

SYN_RCVD∶三次握手的第二次握手后的端口状态,是收到了客户端发...

程序员面试吧
20分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部