Xmodem、Ymodem和Zmodem协议是最常用的三种通信协议

Xmodem、Ymodem和Zmodem协议是最常用的三种通信协议。

1.Xmodem协议是最早的,传输128字节信息块。是一种发送等待协议,具有流量控制功能。收、发方均采用包传送。每个包由包头、数据、包尾组成。
包头:包开始(SOH),包编号和包编号补码;
数据:固定的128字节;
包尾:存放校验和checksum。

2.Ymodem协议是Xmodem的改进版协议,具有传输快速稳定的优点。它可以一次传输1024字节的信息块,同时还支持传输多个文件。
Ymodem协议指的就是Ymodem-1K,除此还有Ymodem-g(没有CRC校验,不常用)。
Ymodem-1K用1024字节信息块传输取代标准的128字节传输,数据的发送会使用CRC校验,保证数据传输的正确性。它每传输一个信息块数据时,就会等待接收端回应ACK信号,接收回应后,才会继续传输下一个信息块,保证数据已经全部接收。
YModem协议是由XModem协议演变而来的,每包数据可以达到1024字节,是一个非常高效的文件传输协议,支持16位CRC校验

3.Zmodem协议是针对modem的一种错误校验协议。利用Zmodem协议,可以在modem上发送512字节的数据块。如果某个数据块发生错误,接收端会发送“否认”应答,因此,数据块就会被重传。
它是Xmodem文件传输协议的一种增强形式,不仅能传输更大的数据。而且错误率小。包含一种名为检查点重启的特性,如果通信链接在数据传输过程中中断,能从断点处而不是从开始处恢复传输。

Ymodem协议常用字符

字符ASCII码16进制
SOH0x01
STX0x02
ACK0x06
NAK0x15
EOT0x04
C0x43

Ymodem协议的传输过程:
(这个协议常用于文件传输,比如在线升级过程中传输的bin文件或者传输一些码库文件。
在Xshell软件中的串口传输过程中就有这种传输方式)
1.起始帧的数据格式
Ymodem的起始帧并不直接传输文件的数据,而是将文件名与文件的大小放在数据帧中传输。
帧长 = 3字节数据首部+ 128字节数据+2字节CRC16位校验码=133字节
数据格式如下:
SOH + 00 + FF + filename + filesize + NULL + CRCH + CRCL
起始帧是文件传输发送端发的第一条重要消息
其中:
SOH = 0x01 表示这个数据帧中包含着128个字节的数据(STX表示1024字节,初始帧只有128个);
00表示数据帧序号,初始是00依次向下排;
FF表示帧序号的取反;
filename表示要传输的文件名;
filesize表示文件的大小;
NULL表示数据部分的128字节中除去文件名和文件大小占据的剩下的字节都用00填充;
CRCH和CRCL分别表示16位CRC校验码的高8位和低8位(注意是整条帧去掉前三个字节的CRC校验)
2.数据帧的数据结构
YModem的数据帧中会预留1024字节空间用来传输文件数据
数据格式如下:
STX/SOH + [编号] + 编号的反码 + data[0] + data[1] + data[2] + … + CRCH + CRCL
STX 01 FE data[1024] CRCH CRCL
其中:
STX = 0x02 表示这帧数据后面包含着1024字节的数据部分;
01表示帧序号,FF表示帧取反;再下一帧就是02 FD依次类推;
data[1024]表示存放着1024字节的文件数据;
CRCH+CRCL 表示整条帧(去掉前三个字节)的CRC16校验。
注意:
(如果最后一条数据的大小在128~1024字节之间,则还使用STX的1024字节传输,剩余空间全部用0x1A填充)
(如果最后一条数据的大小小于128字节,则用SOH的128字节传输,剩余空间全部用0x1A填充)

例如:
STX 01 FE data[1024] CRCH CRC
STX 02 FD data[1024] CRCH CRC
STX 03 FC data[1024] CRC CRC
STX 04 FB data[1024] CRC CRC
SOH 05 FA data[100] 1A[28] CRC CRC

3.结束帧的数据结构
YModem的结束帧数据也采用SOH的128字节数据帧
数据格式如下:
SOH + 00 + FF + NULL[128] + CRCH + CRCL
其中:
SOH = 0x01 表示这个数据帧中包含着128个字节的数据(结束帧只有128个);
结束帧的帧序也是00 FF;
结束帧的128字节的数据部分不存放任何信息,即全部用00填充;
CRCH+CRCL 表示整条帧(去掉前三个字节)的CRC16校验。

传输过程:

在这里插入图片描述

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西瓜籽@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值