【整理】Kermit Xmodem Xmodem-1K Ymodem Ymodem-G Ymodem-1K Zmodem

(來源:http://bbs.chinaunix.net/thread-3587601-1-1.html


整理】Kermit Xmodem Xmodem-1K Ymodem Ymodem-G Ymodem-1K Zmodem

version: 2011-08-26

Mail: green-waste (at) 163.com

【背景】

在串口中傳輸文件,所用到的協議,常常有KermitXmodemYmodemZmodem等,對這些協議,單獨看名字,就很容易混淆,搞不懂都是啥意思。所以,寫此文,總結各自的特點,解釋他們之間的區別和聯繫。

【常見的RS232串口中所用到的傳輸協議之間的區別和聯繫】

此處主要討論RS232即串口應用中,用來傳輸數據或文件的協議,主要有這些:

KermitXmodemXmodem-1KYmodemYmodem-GYmodem-1KZmodem

下面簡述各自的異同點。

(1)相同點:

都是常見的文件傳輸協議,主要應用於RS232串口通信

(2)異同點:

【kermit】

計算機系統中的文件傳輸和管理協議。

特點:

1)文本文件和二進制文件傳輸

2)全雙工,半雙工(8 -bit),7-bit的串行連接;

3)協議對底層介質不做限制,跨平臺性很好。

4)已在N多平臺中實現了此協議,即用途相當地廣泛。

       【Xmodem

一個簡單的文件傳輸協議。將文件拆分成很多個固定大小的數據包,數據包大小是128字節,然後以一個數據包,一個數據包的形式發送數據。中間會帶有一些額外信息,用於握手協議等方面,以保證得知接收方正確接收了數據包。

要點:

1)將文件拆分,以固定大小的數據包發送。

2)數據包大小Packet size=128Byte

說明:

1Xmodem最開始是在早期的BBS系統中很流行,因爲其協議足夠簡單,很容易實現。

2)由於效率太低,導致其他很多人在此基礎上去對其擴展,以提高性能。

3Chuck Forsberg收集了衆多的擴展功能,以此形成Ymodem,但是由於沒有很成功的實現,導致實際應用產生各種變體。

但是其後來設計了Zmodem,由於效果太好,導致完全取代了之前的各種Xmodem的變體,包括Ymodem

    【YmodemXmodem(和Modem7)的基礎上開發出來的,本身協議和Xmodem是一樣的,只是在文件傳輸開始之前,多加了個Block0,用於傳輸文件名,文件大小,時間戳等信息。

【說明】

本來協議設計者
Chuck Forsberg
都設計了好多可選的特性,以便於此協議可以用到多種環境和平臺中,然後再換個協議名稱的。但是實際上實現了Ymodem的應用中,都只是支持了1KB的包大小和CRC模式,除此之外的其他一些特性,都沒實現,所以後來就還是沿用了舊的Ymodem這一叫法。同時,也導致了現存的很多Ymodem互相不是很兼容。

Zmodem

Xmodem發展而來,取代了Ymodem,算是Ymodem的終結者。

核心改進在於,引入了滑動窗口(sliding window)以提高性能。

其支持很多特性:

1)可重傳機制;

2)發送者可自動開始傳輸;

3)擴展的32位的CRC校驗;

4)可傳輸控制字符;

【說明】

(1)PC Linux中的rz/sz

(2)嵌入式Linuxlrzsz



註釋:

1.常見的Ymodem的實際是Ymodem-1K

雖然嚴格意義上說,Ymodem,數據表示128字節,但是很多具體Ymodem的實現,實際上是把Ymodem認爲是1KB的數據包,即這類Ymodem的實現,雖然也叫Ymodem,但是實際上是Ymodem-1K,即:

常見的Ymodem == Ymodem-1K

例子:

1Windows XP自帶的超級終端(Hyper Terminal)中的Ymodem,就是默認1KB的數據包大小。

2)而SecureCRT中的Ymodem默認是數據包是128字節,可以設置爲128B1KB

2. lrzsz是嵌入式中常用的通過串口傳輸文件的工具,是PCLinux中的rz/sz的精簡版。


【引用】

1. XMODEM

http://en.wikipedia.org/wiki/XMODEM

2. Ymodem

http://en.wikipedia.org/wiki/YMODEM

3. Zmodem

http://en.wikipedia.org/wiki/ZMODEM

4. Kermit

http://en.wikipedia.org/wiki/Kermit_(protocol)

5. 
rz(1) - Linux man page

http://linux.die.net/man/1/rz

6. lrzsz: free x/y/zmodem implementation

http://ohse.de/uwe/software/lrzsz.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章