YModem协议简介

  • Post author:
  • Post category:其他


百度百科对Ymodem 协议描述

(Ymodem) Ymodem 协议。Ymodem是一种错误纠正协议。使用较大数据块的调制解调采用这种协议,以获得更高的工作效率。采用Ymodem协议的调制解调器以1024字节数的块发送数据。成功接收的不会被确认。有错误的块被确认(NAK),并重发。Ymodem类似于Xmodem-1K,不同之处是提供批处理模式(batch mode)。在批处理模式下,可以使用一个命令发送一些文件。Ymodem使用循环冗余码校验作为错误校验方式。

等同于Xmodem-1K 加批文件传送的一种文件传送协议 ( 也称 Ymodem Batch) 。它比标准 Xmodem 要快,而且在发送数据之前发送文件名。 Ymodem-G 无需无错误通道的认可或当

调制解调器

自纠错时就可传送,但是一旦出现错误传送就会取消。

YModem的传输定义的常量

符号 数值 含义
SOH 0x01 128字节数据帧,协议类型
STX 0x02 1024字节数据帧,协议类型
EOT 0x04 结束传输,发送者发送
ACK 0x06 接收者处理成功回应,发送者发现下一包数据(1024或者128)
NAK 0x15 接收者处理失败回应,发送者需要重发此1024或者128数据
CA 0x18 传输中止
C 0x43 接收者准备接收时会发连续的C,发送者接收到C开始发送

1、起始帧的数据格式


YModem的起始帧并不直接传输文件的数据,而是将文件名与文件的大小放在数据帧中传输,

它的帧长=3字节数据首部+128字节数据+2字节CRC16校验码=33字节。pNum表示数据帧号,2字节长度,从0x00到0xFF循环,文件信息为第一帧数据所以是00,pNumNot表示数据帧号取反,2字节长度,NUL[0] 表示文件名称+文件长度不足128字节时候,用0补齐128字节。它的数据结构如下:

SOH  pNum   pNumNot   [filename] [filezise]  NUL[ 0] CRCH CRCL

2、数据帧的数据格式

YModem数据帧有两种长度SOH和STX,两种格式除了数据帧长度不同外无较大区别。由于YModem采用每帧数据校验一次CRC,所以STX传输会减少校验,但是重发时候会增加重发数据量。

SOH pNum pNumNot data[128] CRCH CRCL

STX  pNum pNumNot data[1024] CRCH CRCL


3、数据结束帧数据

格式

YModem的结束帧数据也采用SOH的128字节数据帧,pNum固定为00,pNumNot固定为FF,它的结构如下:

SOH 00 FF NUL[128] CRCH CRCL

4、取消发送帧数据格式

直接发送5个CA,即1818181818


5、文件传输过程


以SOH举例传输过程。STX只需要将文件信息帧,结束帧保留,文件内容包替换为STX即可



版权声明:本文为qi15211原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。