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