XMODEM協定

XMODEM協定是一種使用撥號數據機的個人計算機通信中廣泛使用的異步檔案運輸協定。這種協定以128位元組塊的形式傳輸數據,並且每個塊都使用一個校驗和過程來進行錯誤檢測。

XMODEM協定


如果接收方關於一個塊的校驗和與它在傳送方的校驗和相同時,接收方就向傳送方傳送一個認可位元組。然而,這種對每個塊都進行認可的策略將導致低性能,特別是具有很長傳播延遲的衛星連線的情況時,問題更加嚴重。
使用循環冗餘校驗的與XMODEM相應的一種協定稱為XMODEM-CRC。還有一種是XMODEM-1K,它以1024位元組一塊來傳輸數據。ZMODEM是最有效的一個XMODEM版本,它不需要對每個塊都進行認可。事實上,它只是簡單地要求對損壞的塊進行重發。ZMODEM對按塊收費的分組交換網路是非常有用的。不需要認可回送分組在很大程度上減少了通信量。
Ymodem也是一種XMODEM的實現。它包括XMODEM-1K的所有特徵,另外在一次單一會話期間為傳送一組檔案,增加了批處理檔案傳輸模式。
Xmodem 協定 [ 2006-3-4 16:32:37 | Author: job ]
/*
XMODEM transfer protocol
-----------------------------------------
author: christensen
2004-3-25 10:08
noted: Job Nelson
*/

1。 幀格式

__________________________________________________
| | | | | |
| soh | 信息包序號 | 信息包序號的反碼 | 數據區段 | 算術校驗和 |
|_____|________ _|________________|________|__________|
說明:
SOH 幀的開頭位元組,代表信息包中的第一個位元組
信息包序號: 對 256 取模所得到當前包號,第一個信息包的序號為 1
而信息包序號範圍 0~255
信息包序號的反碼: 當前信息包號的反碼
數據區段: 數據區段的長度固定為 128 位元組,其內容沒有任何限制,可以是
文本數據或二進制數據
算術校驗和: 1位元組的算術校驗和,只對數據區段計算後對 256 取模而得

2。 傳輸邏輯

1> 收發雙方撥號連通後,傳送方等待接收方傳來 NAK 信號。當第一個 NAK 到達,
傳送方解釋為 開始傳送第一個包
2> 傳送方一旦收到第一個 NAK ,啟動了傳輸,傳送方就將數據以每次 128 位元組
打包成幀格式傳送,再等待接收方的確認信號
3> 傳送方收到接收方傳來的 ACK 信號,解釋為信息包被正確接收,並有傳送下一
個包的含義
4> 傳送方收到接收方傳來的 NAK 信號,解釋為請求重發同一數據包
5> 傳送方收到接收方傳來的 CAN 信號,解釋為請求無條件停止傳輸過程
6> 傳送方正常傳輸完全部數據,需要正常結束,傳送 EOT 信號通知接收方。接收
方用 ACK 進行確認
7> 接收方傳送 CAN 無條件停止傳輸過程,傳送方收到 CAN 後,不傳送 EOT 確認
8> 雖然信息包是以 SOH 來標誌一個信息包的起始的,但在 SOH 位置上出現的 EOT
則表示數據傳輸結束,再也沒有數據傳過來
9> 接收方首先應確認信息包序號的完整性,通過對信息包序號取補,然後和信息包
序號的補碼異或,結果為 0 表示正確,結果不為 0 則傳送 NAK 請求重傳
10> 接收方確認信息包序號正確後,然後檢查是否期望的序號。如果不是期望得到的
信息包序號,說明發生嚴重錯誤,應該傳送一個 CAN 來中止傳輸
11> 對於10>情況的唯一例外,是收到的包的信息包序號與前一個信息包序號相同,
此中情況,接收方簡單忽略這個重複的包,向傳送方發出 ACK ,準備接收下一個包
12> 接收方確認了信息包序號的完整性和是正確期望的後,只對 512 位元組的數據區段
進行算術和校驗,結果與幀中最後一個位元組(算術校驗和)比較,相同 傳送 ACK,
不同傳送 NAK

3。 逾時處理

1> 接收方等待一個信息包的到來所具有的逾時時限為 10 秒,每個逾時後傳送 NAK
2> 當收到包時,接收過程中每個字元的逾時間隔為 1 秒
3> 為保持“接收方驅動”,傳送方在等待一個啟動位元組時不應該採用逾時處理
4> 一旦傳輸開始,傳送方採用單獨的 1 分鐘逾時時限,給接收方充足的時間做傳送
ACK ,NAK ,CAN 之前的必須處理
5> 所有的逾時及錯誤事件至少重試 10 次
4。 控制字元
控制字元符合 ASICII 標準定義,長度均為 1 位元組
SOH 0x01
EOT 0x04
ACK 0x06
NAK 0x15
CAN 0x18
這是 Xmodem 協定的最基本的一個版本,在其上還有 Xmode-1K 這樣的擴展,加大了傳輸封包的大小(1K),用來提高傳輸速率;增加了 CRC 校驗,用來提高傳輸的可靠性;區別在於:當啟用 Xmodem 時,接收方傳送 C 字元。傳送方收到 C 字元判定為採用 Xmodem-1K 擴展;否則,當逾時後,按照基本的版本傳輸。
擴展大致如此,有這個基礎的版本就足夠了

相關詞條

相關搜尋

熱門詞條

聯絡我們