YModem协议学习

YModem传输形式:YModem,YModem-1K,YModem-g。
YModem-1k用124字节信息快传输取代标准的128字节传输,数据使用CRC教研,保证数据传输的准确性。
YModem-g取消了数据的CRC校验码,发送完一个数据块信息后,不会等待接受度蛋的ACK信号,而是直接传输下一个数据块。
通常所说的都是YModem或者YModem-1K。

1.起始帧格式

SOH 00 FF filename[] filesize[] NULL[] CRCH CRCL

SOH 00 FF 为帧头,中间是128字节的数据,尾部是16位CRC校验。
SOH:0x01 表示数据帧包含128字节内容
00:表示数据帧序号,起始帧为00,第一镇为01
FF:帧序号的取反
filename:文件名后跟00表示文件名结束 如foo.c,66 6F 6F 2E 63 00
filesize:文件的大小后跟00表示文件结束 如1024Byte,34 30 30 00,即0x400的字符表示
NULL:数据部分128字节,除去文件名和文件大小,剩余的字节数全部用00填充
CRC:只计算数据区

2数据帧格式

STX 01 FE data[1024] CRCH CRCL

STX:0x02 表示数据帧后面包含1024字节数据
01:表示第一帧数据
FE:01的取反
data:1024字节的数据
CRC:1024字节数据的校验码
如果文件数据最后声音忽的数据在128~1024之间,则韩式使用STX的1024字节传输,但是剩余空间用0x1A填充:

STX num -num data[] 1A...1A CRCH CRCL

如果文件大小小于128字节,则会用SOH数据帧来传输,如果不满128字节剩余的就用0x1A来填充。

SOH 01 FE data[] 1A...1A CRCH CRCL

如果文件最后的一帧数据小于128字节。

SOH num ~num data[] 1A...1A CRCH CRCL

3结束帧数据结构

结束帧数据也采用SOH128字节数据帧,结构如下:

SOH 00 ff NUM[128] CRCH CRCL

结束帧数据全部用00填充。

4文件传输过程

假设有一个文件foo.c,大小为4196Byte ,0x1064字节的文件。则其传输过程如下:

发送端                                     接收端
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<   C   //接收端发送大写字母C启动传输
SOH 00 FF "foo.c" 1064 NUL[118] CRCH CRCL>>>>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<   ACK  
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<   C  //收到第0帧数据后,反馈ACK 以及C启动第一帧传输
STX 01 FE data[1024] CRCH CRCL>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<   ACK
STX 02 FD data[1024] CRCH CRCL>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<   ACK
STX 03 FC data[1024] CRCH CRCL>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<   ACK
STX 04 FB data[1024] CRCH CRCL>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<   ACK
SOH 05 FA data[100] 1A[28] CRCH CRCL>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<   ACK
EOT>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  NAK
EOT>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  ACK
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  C
SOH 00 FF NUL[128] CRCH CRCL>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  ACK

信号数据及含义如下

符号数值含义
SOH0x01128字节数据
STX0x021024字节数据
EOT0x04结束传输
ACK0x06回应
NAK0x15不回应
CA0x18传输中止
C0x43请求数据包

CA中止传输信号由发送端发送

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值