热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

YModem协议总结

1.简介YModem协议是Xmodem协议的升级版本,传输数据的大小增加了,可达每帧数据传输1024字节,可作为一个高效的文件数据传输协议

1. 简介     

        YModem协议是Xmodem协议的升级版本,传输数据的大小增加了,可达每帧数据传输1024字节,可作为一个高效的文件数据传输协议。


2. 特点


  1. 传输数据量大,可达1024字节;
  2. 错误检验方式:使用循环冗余码校验(CRC校验)。

3. 相关字符和帧格式说明


3.1 字符说明


3.2 帧格式说明


3.2.1 帧格式


帧格式

数据包开始信号

(1字节)

发送序号

(1字节)

发送序号补码

1字节)

数据区

(128/1024字节)

CRC高字节

(1字节)

CRC低字节

(1字节)

SOH/STX

index

~index


STX/SOH

发送128字节/发送1024字节

CRCL

16位CRC校验码的低8


3.2.2 起始帧(133字节)


起始帧

SOH

00

FF

filename[]+filesize[]+NULL[](共128字节)

CRCH

CRCL


filename[]

存放文件名(存放文件名的十六进制),文件名后一位存放0x00作为结束标志。

filesize[]

存放文件的大小,后加0x00作为结束标志。

NULL[]

表示剩下的字节填充0x00

CRCH

16位CRC校验码的高8

CRCL

16位CRC校验码的低8


3.2.3 数据帧(133字节/1029字节)


数据帧

STX/SOH

[帧序号]

[帧序号的反码]

data[0]+data[1]+data[2]+…..(128字节/1014字节)

CRCH

CRCL


STX/SOH

发送128字节/发送1024字节

data

如果传输数据大小不足128字节,则剩余部分全部填充1A

CRCH

16位CRC校验码的高8

CRCL

16位CRC校验码的低8


3.2.4 结束帧(133字节)


结束帧

SOH

00

FF

NULL+NULL+NULL+…..+NULL(128字节)

CRCH

CRCL


NULL

结束帧NULL全部填入0x00


4. 传输流程说明

                            

                                                                                        图1. 传输流程示意图

注意的点:

1. 帧的发送之前,都是通过接收端发送字符‘c’来请求;

2. 接收端接收到帧之后,都会进行一次ACK应答。

流程文字说明:

1. 接收方开启传输,接收方发送一个字符’c’,进入等待(SOH)状态,没回应,超时退出;

2. 发送方开始时处于等待状态,等待字符’c’。若发送方收到’C’后,发送第一帧(起始帧)发送完毕后,进入等待(ACK)状态;

3. 接收方收到第一帧数据包后,进行CRC校验,校验通过,则发送ACK;

4. 发送方收到ACK,又进入等待“文件传输开启”信号,进入等待’c’状态;

5. 接收方又发出一个字符’c’,开始准备接收文键。进入等待SOH或STX状态;

6. 发送方收到字符’c’后,开始发送数据帧;

7. 接收方收到数据后,发送一个ACK,若要传输数据包含多帧数据,继续ACK应答,直到所有数据传输完毕;

8. 数据传输完毕后,发送方发送EOT,第一次···以NACK应答,进行二次确认。发送方收到NAK后,重发EOT,接收方第二次收到结束符,就发送ACK应答。最后接收方在发送一个字符’c’开启另一次传输,发送方在没有第二个文件要传输的情况下,发送结束帧,正式结束数据传输。


推荐阅读
  • IT运维管理困境
    四大利器帮你走出IT运维管理的困境2008-10-0717:27:05标签:IT运维管理网络拓扑图   [推送到技术圈]最近给客户做咨询时,跟行业客户谈 ... [详细]
  • Spring Boot 打包上传Docker 仓库的详细步骤
    这篇文章主要介绍了SpringBoot打包上传Docker仓库的详细步骤,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 ... [详细]
  • 目录1常见的格式1.1Excel文件的格式1.2Excel数据的格式2Excel数据格式2.1数据类型转换3练习1常见的格式1.1Excel文件的格式Excel文件的常见格式& ... [详细]
  • 本文目录一览:1、数据库有哪几种2、数据库软件 ... [详细]
  • centosFedoraRHEL•整改方法:•验证检查:1、查看etclogin.defs,访谈询问当前所设置的密码长度及更换周期 ... [详细]
  • 下载完成之后解压提取jl1.0.0.1.jar这里写图片描述将jl1.0.0.1.jar拷贝到项目中,并添加到Library这里写图片描述4.源代码Tip:由于工程名 ... [详细]
  • CAD临时文件在哪里?CAD临时文件保存位置分享
    CAD临时文件在哪里?AutoCAD是一款很常用的设计软件,然而还有很多伙伴不知道CAD临时文件保存在哪里?很多伙伴找了半天愣是找不到,可惆怅了,为了解决此类用户的烦恼,今天小编将 ... [详细]
  • socket.io是个基于node.js的快平台实时通讯框架。只用不到10行代码,就可以搭建一个简单的多人实时聊天室。先来看看运行后的效果:socket.io多人聊天室只要简单几 ... [详细]
  • 是不是zlib是这些库的压缩算法的实现库,而这么多库它们只是在打包的时候使用了zlib进行压缩而已.而具体的打包格式就有ZIP,BZIP2,GZ之分?但是在我们在用gz压缩时候通常之前 ... [详细]
  • ADK安装步骤
    1、下载AndroidSDK,解压后即可(全英文路径)下载地址:http:ools.android-studio.orgindex.phpsdk,下载完成后2、新建一个环境变量,变 ... [详细]
  • 在画图过程中,我们经常会对CAD软件进行必要的设置cad怎么设置。通过这些设置可以大大提高我们的制图效率。下面分别介绍几种常见的设置方法。1.正交 ... [详细]
  • RHEL/CentOS/Fedora Linux命令下安装Google Chrome
    键入以下命令查看当前版本是32还是64$echoYouareusing$(getconfLONG_BIT)bitLinuxdistro.You64 ... [详细]
  • 转载自:http:www.hbtelecom.com.cndetail.asp?news_id78369_______________________________ ... [详细]
  • 成功入职字节跳动Android岗,定级22,入职就是30K16薪
    Android线程间切换用什么,Handler的运行机制是什么?Android处理异步任务用什么,AsyncTask线程池溢出是怎么回事& ... [详细]
  • PHPStorm调整内存限制:为什么调整内存?问题出现在当项目里有大量js的时候,一旦编辑包含js的文件,phpstorm会出现卡顿,甚至未响应,如图:内存占用始终保持在1.5G左 ... [详细]
author-avatar
陈苏女士
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有