免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 979 | 回复: 0
打印 上一主题 下一主题

XMODEM transfer protocol [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-17 10:41 |只看该作者 |倒序浏览

/*
XMODEM transfer protocol

-----------------------------------------
author: christensen
2004-3-25 10:08
noted: Job Nelson
*/
1。 帧格式
__________________________________________________
|          |                   |                               |                 |                   |
| SOH | 信息包序号 | 信息包序号的补码 | 数据区段 | 算术校验和 |
|_____|________ _|_______________ |________|__________|
说明:
SOH 帧的开头字节,代表信息包中的第一个字节
信息包序号: 对 256 取模所得到当前包号,第一个信息包的序号为 1
                 而信息包序号范围 0~255
信息包序号的补码: 当前信息包号的反码
数据区段: 数据区段的长度固定为 128 字节,其内容没有任何限制,可以是
             文本数据或二进制数据,不足128字节的文件结尾以ctrlz(1AH)补全
算术校验和: 2字节的算术校验和,只对数据区段计算后对 256 取模而得
2。 传输逻辑

1> 收发双方拨号连通后,发送方等待接收方传来 NAK 信号。当第一个 NAK 到达,
    发送方解释为 开始发送第一个包
2> 发送方一旦收到第一个 NAK ,启动了传输,发送方就将数据以每次 128 字节
    打包成帧格式传送,再等待接收方的确认信号
3> 发送方收到接收方传来的 ACK 信号,解释为信息包被正确接收,并有发送下一
    个包的含义
4> 发送方收到接收方传来的 NAK 信号,解释为请求重发同一数据包
5> 发送方收到接收方传来的 CAN 信号,解释为请求无条件停止传输过程
6> 发送方正常传输完全部数据,需要正常结束,发送 EOT 信号通知接收方。接收
    方用 ACK 进行确认
7> 接收方发送 CAN 无条件停止传输过程,发送方收到 CAN 后,不发送 EOT 确认
8> 虽然信息包是以 SOH 来标志一个信息包的起始的,但在 SOH 位置上出现的 EOT
    则表示数据传输结束,再也没有数据传过来
9> 接收方首先应确认信息包序号的完整性,通过对信息包序号取补,然后和信息包
    序号的补码异或,结果为 0 表示正确,结果不为 0 则发送 NAK 请求重传
10> 接收方确认信息包序号正确后,然后检查是否期望的序号。如果不是期望得到的
    信息包序号,说明发生严重错误,应该发送一个 CAN 来中止传输
11> 对于10>情况的唯一例外,是收到的包的信息包序号与前一个信息包序号相同,
    此中情况,接收方简单忽略这个重复的包,向发送方发出 ACK ,准备接收下一个包
12> 接收方确认了信息包序号的完整性和是正确期望的后,只对 512 字节的数据区段
    进行算术和校验,结果与帧中最后一个字节(算术校验和)比较,相同 发送 ACK,
    不同发送 NAK

3。 超时处理
1> 接收方等待一个信息包的到来所具有的超时时限为 10 秒,每个超时后发送 NAK
2> 当收到包时,接收过程中每个字符的超时间隔为 1 秒
3> 为保持“接收方驱动”,发送方在等待一个启动字节时不应该采用超时处理
4> 一旦传输开始,发送方采用单独的 1 分钟超时时限,给接收方充足的时间做发送
    ACK ,NAK ,CAN 之前的必须处理
5> 所有的超时及错误事件至少重试 10 次   
4。 控制字符
    控制字符符合 ASICII 标准定义,长度均为 1 字节
    SOH     0x01
    EOT     0x04
    ACK     0x06
    NAK     0x15
    CAN     0x18                                 

      这是 Xmodem 协议的最基本的一个版本,在其上还有 Xmode-1K 这样的扩展,加大了传输封包的大小(1K),用来提高传输速率;增加了 CRC 校验,用来提高传输的可靠性;区别在于:当启用 Xmodem 时,接收方发送 C 字符。发送方收到 C 字符判定为采用 Xmodem-1K 扩展;否则,当超时后,按照基本的版本传输。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/22754/showart_545724.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP