|
|
電信博物館 > 計(jì)算機(jī)網(wǎng)絡(luò) > 計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)的五臟六腑
> 川流不息的數(shù)據(jù)通道
三種聯(lián)絡(luò)暗號
為了深入理解數(shù)據(jù)鏈路層的協(xié)議,我們先從一種假想的、完全理想化的數(shù)據(jù)傳輸過程開始討論。
如果鏈路是理想的傳輸信道,所傳送的任何數(shù)據(jù)既不會出差錯也不會丟失,那么數(shù)據(jù)鏈路層協(xié)議是根本不需要的。但是,這可能嗎?不可能。所以我們需要數(shù)據(jù)鏈路層協(xié)議。
如果不管發(fā)送方以多快的速率發(fā)送數(shù)據(jù),接收方總是來得及收下,并及時上交主機(jī),那么數(shù)據(jù)鏈路層協(xié)議也是不需要的。但是,這可能嗎?不可能。所以我們還是需要數(shù)據(jù)鏈路層協(xié)議。
這就是說,傳輸數(shù)據(jù)的信道是不可靠的(即不能保證所傳的數(shù)據(jù)不產(chǎn)生差錯),并且還需要對數(shù)據(jù)的發(fā)送端進(jìn)行流量控制。
看看最簡單的停止等待協(xié)議。
收方在收到一個正確的數(shù)據(jù)幀后,向發(fā)方發(fā)送一個確認(rèn)幀ACK(表示“我收到啦”)。當(dāng)發(fā)方收到確認(rèn)幀后才能發(fā)送一個新的數(shù)據(jù)幀。這樣就實(shí)現(xiàn)了收方對發(fā)方的流量控制。假如數(shù)據(jù)幀在傳輸過程中出現(xiàn)了差錯。由于通常都在數(shù)據(jù)幀中加上了循環(huán)冗余校驗(yàn)CRC,所以收方很容易校驗(yàn)出收到的數(shù)據(jù)幀是否有差錯。當(dāng)發(fā)現(xiàn)差錯時,收方就向發(fā)方發(fā)送一個否認(rèn)幀NAK(表示“嘿,哥們兒,你搞錯了”),以表示發(fā)方應(yīng)當(dāng)重發(fā)出錯的那個數(shù)據(jù)幀。
有時,鏈路上的干擾很嚴(yán)重,或由于其他一些原因,收方收不到發(fā)方發(fā)來的數(shù)據(jù)幀。這種情況稱為幀丟失。發(fā)生幀丟失時,收方當(dāng)然不會向發(fā)方發(fā)送任何應(yīng)答幀。如果發(fā)方要等收到收方的應(yīng)答信息后再發(fā)送下一個數(shù)據(jù)幀,那么就將永遠(yuǎn)等下去。要解決這個問題,可在收方發(fā)送完一個數(shù)據(jù)幀時,就啟動一個超時定時器。若到了超時定時器所設(shè)置的重發(fā)時間仍收不到收方的任何應(yīng)答幀,則發(fā)方就重傳前面所發(fā)送的這一數(shù)據(jù)幀。
然而現(xiàn)在問題并沒有完全解決。當(dāng)出現(xiàn)數(shù)據(jù)幀丟失時,超時重發(fā)的確是一個好辦法。但是若丟失的是應(yīng)答幀,則超時重發(fā)將使收方收到兩個同樣的數(shù)據(jù)幀。由于收方現(xiàn)在無法識別重復(fù)的數(shù)據(jù)幀,因而在收方收到的數(shù)據(jù)中出現(xiàn)了另一種差錯,稱為重復(fù)幀。要解決這個問題,必須使每一個數(shù)據(jù)幀帶上不同的發(fā)送序號。若收方收到序號相同的數(shù)據(jù)幀,就表明出現(xiàn)了重復(fù)幀。這時應(yīng)當(dāng)丟棄這重復(fù)幀。但應(yīng)注意,此時收方還必須向發(fā)方發(fā)送一個確認(rèn)幀,因?yàn)槭辗揭呀?jīng)知道發(fā)方還沒有收到上一次發(fā)過去的確認(rèn)幀。
我們知道,任何一個編號系統(tǒng)的序號所占用的比特?cái)?shù)一定是有限的。因此,經(jīng)過一段時間,發(fā)送序號就會重復(fù)。序號占用的比特?cái)?shù)越少,數(shù)據(jù)傳輸?shù)念~外開銷就越少。對于停等協(xié)議,由于每發(fā)送一個數(shù)據(jù)幀就停止等待,因此用一個比特來編號就夠了。就是說序號輪流使用0和1。
由于發(fā)方對出錯的數(shù)據(jù)幀進(jìn)行重復(fù)是自動進(jìn)行的,所以這種差錯控制體制常簡稱為ARQ(Automatic Repeat reQuest),直譯是自動重復(fù)請求,意思是自動請求重發(fā)。
停止等待協(xié)議ARQ比較簡單,但信道利用率不高。為了克服這一缺點(diǎn),就產(chǎn)生了另外兩種協(xié)議,即連續(xù)ARQ和選擇重傳ARQ。
連續(xù)ARQ的要點(diǎn)就是在發(fā)送完一個數(shù)據(jù)幀后,不是停下來等待應(yīng)答幀,而是可以連續(xù)再發(fā)送若干個數(shù)據(jù)幀。如果這時收到了收方發(fā)來的確認(rèn)幀,那么還可以接著發(fā)送數(shù)據(jù)幀。由于減少了等待時間,整個通信的吞吐量就提高了。但是,收方只按序接收數(shù)據(jù)幀,如果收到有差錯的某幀之后接著又收到了正確的幾個數(shù)據(jù)幀,都必須將它們?nèi)縼G棄;而發(fā)方在重傳時,又必須把原來已正確傳送過的數(shù)據(jù)幀進(jìn)行重傳(僅因?yàn)檫@些數(shù)據(jù)幀之前有一個數(shù)據(jù)幀出了錯)。這種做法又使傳送效率降低。由此可見,若傳輸信道的傳輸質(zhì)量很差因而誤碼率較大時,連續(xù)ARQ不一定優(yōu)于停止等待協(xié)議。
為了進(jìn)一步提高信道的利用率,可設(shè)法只重傳出現(xiàn)差錯的數(shù)據(jù)幀或者是定時器超時的數(shù)據(jù)幀。但這時必須加大收方的緩沖區(qū),以便先收下發(fā)送序號不連續(xù)但仍處在緩沖區(qū)中的那些數(shù)據(jù)幀。等到所缺序號的數(shù)據(jù)幀收到后再一并送交主機(jī)。這就是選擇重傳ARQ協(xié)議。使用選擇重傳ARQ協(xié)議可以避免重復(fù)傳送那些本來已經(jīng)正確到達(dá)收方的數(shù)據(jù)幀。但我們付出的代價是在接收端要設(shè)置具有相當(dāng)容量的緩沖空間,這在許多情況下是不夠經(jīng)濟(jì)的。正因?yàn)槿绱,選擇重傳ARQ協(xié)議在目前就遠(yuǎn)沒有連續(xù)ARQ協(xié)議使用得那么廣泛。
[上一頁] [下一頁]
|
|
|