XMODEM 文件传输协议
XMODEM是WardChristensen于1977年开发的标准文件传输流程,它发送与数据相关的数据块并等待接收块接收。XModem用于硬件和软件。
XMODEM是一种具有有效错误检测设备的半双工通信协议。
它违反了发送给接收者的一系列数据包中的原始数据和其他允许接收者确定数据包是否已正确接收的信息。
标记的文件以在最后一个块后面发送的文件结束字符完成。该字符不在数据包中,而是作为单个字节发送。
由于文件的长度不作为协议的一部分进行传输,因此最终的包中填充了可以释放的已知字符。
文件一次传输一个数据报。计算包校验和并与在获取端的包末尾找到的校验和进行比较。当收件人向发件人发送确认消息时,将发送后续的一组包裹。
如果校验和有问题,接收方会发送一条消息,要求重新提交。
收到负面反馈后,发件人重新发送包裹并尝试连续传输大约十次,然后再发出传输。
传输方式
接收方进行传输,即在接收方发送第一个NAK之前,发送方不会发送任何数据。发送方一直等到接收方发送一个NAK字节。
NAK字节是接收方准备开始的信号。这是指示文件传输已准备好开始的第一个字节。
如果收件人等待时间过长或发生错误,发件人将停止等待或“超时”。文件传输将在到期时重新启动。
如果收件人在等待数据时由于缺少EOT字符而在十秒内没有收到有效包裹,也会发送NAK。
接收方执行以下功能并一次传输一个数据包:
假设发送的包号与实际包号相同,即检查包中的第二个字节。
如果出现差异,请发送CAN字节以取消传输。数据包的校验和在检索后计算,并与包末尾从发送方接收到的校验和进行比较。
如果条件SUM=CHECKSUM为真,则接收方向发送方发送一个ACK字节,指示按顺序发送下一个包。
如果情况不令人满意,则发送NAK字节,表示发送器将重新发送该字节。
当发送方发送EOT字节而不是SOH字节时,接收方发送一个NAK字节。
如果之后发送方立即发送另一个EOT,则接收方发送ACK字节,传输完成。
接收方有权随时通过发送CAN字节取消传输,发送方只能通过发送CAN字节来取消块之间的传输。