zoukankan      html  css  js  c++  java
  • XModem协议

    1. XModem信息包格式


    XModem协议最早由Ward Christensen在20世纪70年代提出并实现的,传输数据单位为信息包,信息包格式如下:

    ---------------------------------------------------------------------------
    |     Byte1     |    Byte2    |     Byte3      |Byte4~Byte131|  Byte132   |
    |-------------------------------------------------------------------------|
    |Start Of Header|Packet Number|~(Packet Number)| Packet Data |  Check Sum |
    ---------------------------------------------------------------------------

    SOH (0x01)

    EOT (0x04)

    ACK (0x06)
    NAK (0x15)
    CAN (0x18)

    
    

    2、数据包说明

    对于标准Xmodem协议来说,如果传送的文件不是128的整数倍,那么最后一个数据包的有效内容肯定小于帧长,不足的部分需要用CTRL-Z(0x1A)来填充

    3、如何启动传输

    Xmodem协议的传输由接收方启动,接收方向发送方发送"C"或者NAK(这里的NAK是用来启动传输的。下面我们用到的NAK是用来对数据产生重传机制)。其中接收方发送NAK信号表示接收方打算用累加和校验;发送字符"C"则表示接收方打算使用CRC校验。

    4、传输过程

    当接收方发送的第一个"C"或者NAK到达发送方,发送方认为可以发送第一个数据包了,传输启动。发送方接着接着应该将数据以每次128字节的数据加上包头,包号,包号补码,末尾加上校验和,打包成帧格式传送。发送方发了第一个包后就等待接收方的确认字节<ACK>,收到接收方传来的<ACK>确认,就认为数据包被接收方正确接收,并且接收方要求发送方继续发送下一个包;如果发送方收到接收方传来的<NAK>(这里的表示重发),则表示接收方请求重发刚才的数据包;如果发送方收到接收方传来的<CAN>字节,则表示接收方请求无条件停止传输。

    5、结束传输

    如果发送方正常传输完全部数据,需要结束传输,正常结束需要发送方发送<EOT>通知接收方。接收方回以<ACK>进行确认。如果接收方发送<CAN>给发送方也可以强制停止传输,发送方受到<CAN>后不需要发送<EOT>确认,此时传输已经结束

  • 相关阅读:
    蓝桥杯 勾股数 暴力
    蓝桥杯 连接乘积 暴力
    蓝桥杯 师座操作系统 map
    蓝桥杯 洗牌 vector
    蓝桥杯 盾神与砝码称重 dfs 剪枝
    蓝桥杯 盾神与积木游戏 贪心
    RESTful风格API
    APIview使用
    linux常用命令
    python中的三种路径
  • 原文地址:https://www.cnblogs.com/hkj8808/p/10730102.html
Copyright © 2011-2022 走看看