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