一、Modem間通信所使用的文件傳輸協議
同其他數據通信方式類似,Modem間的通信也需要利用協議來完成。一般稱這些協議為文件的傳輸協議。其中較著名的有X Modem協議、Y Modem協議、Z Modem協議、KERMIT協議等。需要注意的是,由于Modem間通信的協議有多種,因此并非任意兩臺Modem間都能進行正常通信,能夠相互通信的Modem必須遵守相同的協議。
1、X Modem協議
X Modem協議是一種非常通用的文件傳輸協議,最初是由W.Christensen于20世紀70年代提出并實現的。它使用一般的等待式ARQ協議,信息包中數據區的長度是固定的。對于包序號,采取了特殊的保護,該區段由包序號和它的補碼組成。其信息包的構成如圖1-1-1所示;每一部分的含義與要求詳見下表1-1-1。
圖1-1-1:X Modem協議中信息包的組成
表1-1-1:X Modem協議中信息包組成的含義與要求
下圖1-1-2和圖1-1-3分別為X Modem的發送流程圖和接收流程圖。
圖1-1-2:X Modem的發送流程圖
圖1-1-3:X Modem的接收流程圖
由于CRC校驗較簡單的算術和校驗有好得多的性能,人們隨后又提出了CRC校驗形式的X Modem,稱作X Modem-CRC協議。為了與使用算術和校驗的X Modem(現在我們稱其為X Modem-CHKSUM)保持兼容,X Modem-CRC采用字符C作為協議的啟動字符。若經過一段時間后,通信不能建立,則收方換用XMODEM-CHKSUM的啟動字符NAK來通知發方發送數據。圖1-1-4為X Modem-CRC的接收流程圖。X Modem-CRC的發送流程與X Modem-CHKSUM基本相同,只是開始建立通信的過程有所不同。
圖1-1-4:X Modem-CRC的接收流程圖
X Modem協議是一種設計較為簡單的通信協議,最初只是支持單文件的傳輸,并且接收端利用單字符進行應答,因而其可靠性有時也值得懷疑。X Modem的局限性詳見下表1-1-2。盡管存在以上諸多缺陷,對于計算機通信來說,X Modem還是一種非常有效的協議,因而非常流行。一般情況下,用戶完全可以放心使用,大多數的通信軟件也支持X Modem協議。
表1-1-2:X Modem的局限性
2、Y Modem協議
20世紀80年代初出現的Y Modem協議是在 X Modem協議的基礎上進行改進后提出的,它較X Modem協議在效率和可靠性等方面均有很大改進。Y Modem協議與X Modem協議的主要區別詳見下表1-2。
表1-2:Y Modem協議與X Modem協議的主要區別
盡管如此,Y Modem協議是在X Modem協議的基礎上改進而來的,X Modem的一些固有缺點依然存在于Y Modem協議中。尤其是要求系統支持8位數據,這不適合于一些只支持7位數據的系統,這在下面將要講到的KERMIT協議中得到了很好的解決。當然,在IBM PC及兼容機中是不存在這個問題的。
3、Z Modem協議
Z Modem不但具有糾錯能力,而且還是一種流式協議,它不再是由接收方發送ACK引導,而完全以包引導。
4、KERMIT
KERMIT協議是一種較X Modem協議更通用的傳輸協議,它的設計目的就是為不同系統間的數據傳輸提供一種通用的傳輸協議。它也是一種發送并等待ARQ協議,只是其信息包的產生非常復雜和靈活。簡單地講,它有表1-4所示的5個特點。
表1-4:KERMIT協議的特點
由于只要求系統支持七位數據,對于控制字符02H到1FH和非七位ASCII字符(80H~0FFH),KERMIT是通過用可打印ASCII字符對它們進行編碼來傳輸的。因此,如果傳送的是二進制文件而非標準DOS文本文件時,KERMIT的傳輸效率非常低。從這個角度講,KERMIT是最后的選擇,如果X Modem等協議能正確地工作,就不要用KERMIT來進行傳輸。這種編碼功能是可選的,當系統支持8位數據格式時,可以不采用編碼而直接傳輸,這有助于提高效率。
5、各種文件傳輸協議比較
上述幾種通信協議的比較如下表1-5所示。
表1-5:幾種Modem傳輸協議比較
二、AT命令集
控制Modem可以使用AT命令集。AT命令集最初是由原賀氏(Hayes)公司開發的,現已成為工業界廣泛采用的事實標準。AT命令可用來配置Modem使它與通信軟件協同工作,與遠程系統通信、撥號和呼叫、應答等。AT命令定義了如何配置Modem,如何建立連接以及如何測試Modem。
由于大多數的通信軟件都提供一個配置和測試Modem的菜單,通過程序解釋成AT命令來控制Modem。因此,大多數情況下,不用也沒有必要使用AT命令。不過,有一些通信軟件可能不支持某些Modem的配置參數,或者要求直接發送AT命令給Modem。在這些情況下,用戶就得利用AT命令控制Modem。要注意的是,AT命令是無法代替通信軟件的,例如,發送和接收文件必須要由通信軟件完成,AT命令無法完成系統間文件傳送。
AT命令不能直接在DOS提示符下執行,只能借助于通信軟件,例如Windows 3.1下的Terminal程序便是一個好例子。AT命令以AT字符開始,加上命令和參數。有的AT命令為單個字符,有的為一串字符。例如,D命令用于撥號,而&D命令則控制Modem的DTR信號的使用。AT命令后面可能帶一個數字參數(0,1,2,…),例如,E0命令表示禁止字符回顯;E1命令則允許字符回顯。如果數字沒有指明,則假設為0。例如,E和E0一樣,禁止字符回顯。一個命令行可以包括幾條命令,但最多不能超過255個字符。盡管 Q1是一條命令,但它算2個字符,空格不算命令行字符。命令行以回車結束。
S寄存器是Modem用于存入配置和操作參數的專用內存。S寄存器通常用來存放一些計數、定時ASCII字符等值。Sr = n用來改變r寄存器的值,例如,AT Sr = n <CR>用來改變r寄存器的值,使之變成n。Sr?用來顯示r寄存器的值,例如,AT Sr?<CR>用來顯示r寄存器的值。這里<CR>指回車。
欲進一步了解ITU-T建議的調制解調器的請進入。