📜  XMODEM文件传输协议

📅  最后修改于: 2021-08-29 11:02:21             🧑  作者: Mango

XMODEM是一种文件传输协议,使用户可以在不同的计算机之间传输文件。

历史 :
XMODEM由Ward Christensen1977年开发,从那时起,共享文件的方法发生了变化。由于其实现简单,它在早期的公告板系统(BBS)市场中变得非常流行。但是,随着调制解调器速度的提高,它变得效率低下。解决此问题的方法导致开发了多个XMODEM修改版本,以提高性能并解决文件共享协议中的其他问题。 XMODEM是历史上修改最多的计算机程序。

运作方式:
XMODEM将原始数据分解为一系列“数据包”,这些数据包被发送到接收器。它还包含其他信息,这些信息使接收器可以确定是否正确接收了该数据包。如果遇到错误,则在接收方请求后重发该数据包。传输由于字符串错误的数据包而中止。

下表显示了传输期间使用的各种符号及其含义–

Symbol Description
SOH Start of Header
EOT End of Transmission
ACK Acknowledge
NAK Not Acknowledge
ETB End of Transmission Block
CAN Cancel

封包结构:
XMODEM的原始数据包结构如下:

校验和是数据包以256为模的所有字节的总和。换句话说,可以通过丢弃除求和结果之外的所有8个最低有效位来计算它。这样。例如,如果此校验和方法用于仅包含两个带有值130和130的字节的微型数据包,则这些代码的总和为260,结果校验和为4。这可确保将校验和存储在8位中只要。

转让方式:
传输是由接收方驱动的,即,在接收方发送初始NAK之前,发送方不会发送任何数据。发送器一直等到接收器发送一个NAK字节。 NAK字节是接收器准备开始的信号。这是初始字节,显示文件传输已准备好开始。如果接收器花费的时间太长或发生错误,则发射器将停止等待或“超时”。

如果超时,文件传输将重新启动。如果接收器在十秒钟之内没有收到有效的数据包,同时由于缺少EOT字符而仍期待数据,则还会发送NAK

接收器执行以下任务并一次传输一个数据包–

  1. 它检查发送的数据包编号是否与实际的数据包编号匹配,即检查数据包中的第二个字节。如有任何差异,它将发送一个CAN字节以取消传输。
  2. 它将1的补码和第3位和第2位的数据包号相加,以检查它们的总和是否为255。如果有任何差异,它将发送一个CAN字节以取消传输。
  3. 数据包的校验和是在检索后计算得出的,并与数据包末尾从发送方接收到的校验和进行比较。如果条件SUM = CHECKSUM为true,则接收器向发送器发送ACK字节,这是按顺序发送下一个数据包的指示。如果不满足条件,则发送一个NAK字节,指示发送器再次发送该字节。

转移完成:
如果发送器发送的是EOT字节而不是SOH字节,则接收器将发送NAK字节。

如果发送方在此之后立即发送另一个EOT ,则接收方发送一个ACK字节,并且传输完成。接收器可以通过发送CAN字节随时取消传输,而发送器只能通过发送CAN字节取消块之间的传输。