HeTui 发表于 2024-8-20 16:25

XYZmodem协议区别

# 协议的区别

## XModem

XModem的传输数据单位是信息包,XModem传输的信息包格式是:

| 帧头 | 包序号 | 序号取反 | 文件大小    | 校验位    |
| ---- | ------ | -------- | ----------- | --------- |
| SOH| 0x01   | 0xFF   | Data | Check Sum |

* 一个信息包包含一个标题开始字符SOH、 一个单字节包序号、 一个包序号的补码、128个字节数据和一个单字节的校验和。他把数据划分成128个字符的"小包"进行发送,每发送一个"小包",都要检验是否正确。如果发现错误,就再重新发送,直到整个文件传输完毕。

![](https://static.mianbaoban-assets.**xinyu-images/MBXY-CR-6d38ae38ba3bb6c53e1a79cc156a9bf7.png)00









* 接送方发送完NAK以后,就会等待发送方的SOH。一收到SOH字符,接收方就进入等待数据包剩余131个字符的状态。当接收方收到EOT字符后,它发送ACK并推出XModem协议传输。

* 由于每个信息包直邮128字节所以,效率不高,且控制字符没有得到协议保护。



## YModem

* 它是由XModem演变而来的,相对于XModem在效率上和可靠性上有了很大的改进。它信息报中的数据段可以达到1024个,采用CRC校验后,可靠性得到提高。并且它可以在一次传说中发送或接收多个文件。下面是第一个数据包,它包含了文件名和文件长度。

| 帧头 | 包序号 | 序号取反 |       文件名文件大小      | 填充区 | 校验|
| :--: | :----: | :------: | :---------------------------: | :----: | ----- |
| SOH|0x00|   0xFF   | filename+0x00   filesize+0x00 |0x00| CRC16 |

* 在数据传输中,我们还有数据包。

|   帧头    | 包序号 | 序号取反 |      数据       | 填充区 | 校验|
| :-------: | :----: | :------: | :-------------: | :----: | ----- |
| SOH / STX |0x01|   0xFF   | 128或者1024字节 |0x00| CRC16 |

<img src="https://img-blog.csdnimg.cn/20200707233230137.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTU5Mjg4,size_16,color_FFFFFF,t_70" style="zoom: 33%;" />

* 在这个协议中,需要先由接收方发送字母C,启动YModem协议进行准备接收文件,然后发送方发送的第一个128字节的数据,包含了传文件的文件名和文件长度。包的序号为0,文件名和文件长度由一个NULL字符(值为0的字符)隔开,文件长度值后面跟随一个空格数据包的其余部分由NULL字符填充。

* 第二个数据包可以发送SOH或者STX,如果是STX开头,表示数据部分长度为1024字节。通过发送较长的数据包,YModem可以充分利用数据连接,减少应答次数。



## ZModem

ZModem并不是从XModem或者YModem演变而来的,他是一个全新的协议,流式协议。它不再以"包"来分割发送数据,而是按照连续的数据流进行处理,并把错误校验码遍布文件的始终。接收方对整个文件做校验,如果发生错误,它只要求将出错的部分重新发送。

ZModem协议将发送器和接收器之间传递的所有信息都包含在帧中。每个帧有两个组件:报头、数据子包、帧以包头开始,并带有至多4个字节的信息。

数据子包可以有选择地跟随一个报头。每个数据子包可以包含至多1024个字节的数据,其后跟随一个CRC值用于校验。

```
[报头类型字节][帧类型字节][四个数据字节][报头CRC][数据子包][数据子包结束字符]
```

ZModem协议相对于XModem和YModem两种协议效率高、传输速度快。但是,ZModem协议相对于其他文件传输协议过于复杂,实现起来有难度。

tpgf 发表于 2024-9-2 13:04

XYZmodem协议主要是用于在计算机之间通过串行通信传输文件的文件传输协议

maudlu 发表于 2024-9-3 16:43

XModem、YModem和ZModem是三种流行的文件传输协议,它们在串行通信中用于在主机和远程系统之间传输数据文件。

dspmana 发表于 2024-9-3 18:03

ZModem协议支持传输文件名和属性,而XModem和YModem不支持。

phoenixwhite 发表于 2024-9-3 19:17

XModem是最基础的协议,适用于简单的数据传输需求。

caigang13 发表于 2024-9-3 20:10

只用过YModem协议,ZModem就没有用过了。

mikewalpole 发表于 2024-9-3 20:37

XModem的效率相对较低,因为每次传输一个128字节的数据包都需要确认。这一机制在延时比较长的场合会导致性能显著下降。

cemaj 发表于 2024-9-3 22:32

XModem 是一种相对简单的文件传输协议,传输效率较低。它以 128 字节为一个数据块进行传输,并且在每个数据块传输后都需要等待接收方的确认。如果数据块传输错误,需要重新发送该数据块。这种逐块确认的方式导致传输速度较慢,特别是在传输较大文件时,耗时较长。

dspmana 发表于 2024-9-4 10:20

YModem 相对于 XModem 有了一些改进,提高了传输效率。它可以一次传输多个数据块,然后等待接收方的确认,减少了确认等待的时间。此外,YModem 还支持文件名和文件大小的传输,使得文件传输更加方便。

1988020566 发表于 2024-9-4 13:21

Zmodem协议在Ymodem的基础上进一步改进,实现了全双工通信和断点续传功能,这使得它在需要高效、可靠传输的场合更为适用。

bartonalfred 发表于 2024-9-4 16:25

功能较为简单,只支持基本的文件传输功能。不支持文件名和文件大小的传输,也不支持断点续传。在传输过程中,如果出现错误,需要重新开始传输整个文件。

hilahope 发表于 2024-9-5 09:44

YModem 可以让用户在传输文件时看到文件名和文件大小,提高了用户的便利性。

albertaabbot 发表于 2024-9-5 11:24

相对于XModem,YModem在传输效率和可靠性上有很大改进,因为它可以在一次传输中发送或接收多个文件。

updownq 发表于 2024-9-5 13:04

ZModem通过全双工通信和连续数据流的方式进一步提高了效率,仅对损坏的数据块进行重发,而不是对每个数据块都进行确认,从而大大减少了通信量。

plsbackup 发表于 2024-9-5 14:37

YModem在XModem的基础上增加了数据块大小和更可靠的校验和,提高了传输效率。

averyleigh 发表于 2024-9-5 16:11

ZModem协议的传输效率最高,因为它可以自动处理错误检测和重传,同时支持更大的数据块传输。

pixhw 发表于 2024-9-6 15:53


XModem、YModem和ZModem是三种串行通信中常用的文件传输协议。它们的主要区别在于数据包的大小、传输效率和错误处理机制。

sanfuzi 发表于 2024-9-6 17:35

ZMODEM 具有最高的传输效率,尤其适用于高速通信线路和大文件传输。

houjiakai 发表于 2024-9-6 19:15

Ymodem协议在Xmodem的基础上进行了改进,主要提高了数据传输的效率和稳定性,支持更大的数据块和更可靠的错误检测机制。

fengm 发表于 2024-9-6 20:50

ZModem则进一步改进了数据块大小和错误处理机制,提供了最高的传输效率和可靠性,适用于需要高吞吐量和自动错误纠正的环境。
页: [1] 2 3
查看完整版本: XYZmodem协议区别